// // Created by Ajurna on 28/07/2025. // #include "data.h" #include #include #define PORT 40000 SOCKET get_listen_socket() { WSADATA WSAData; SOCKET client; SOCKADDR_IN serverAddr, clientAddr; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET server = socket(AF_INET, SOCK_STREAM, 0); serverAddr.sin_addr.s_addr = INADDR_ANY; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(PORT); bind(server, (SOCKADDR *)&serverAddr, sizeof(serverAddr)); listen(server, 0); return server; } char_array_t *char_array_create(int capacity) { char_array_t *array = malloc(sizeof(char_array_t)); array->capacity = capacity; array->size = 0; array->data = calloc(capacity, sizeof(char)); return array; } void char_array_destroy(char_array_t *array) { free(array->data); free(array); }; void char_array_append(char_array_t *array, char *value, size_t length) { if (array->data == NULL) { exit(1); } // char *temp = calloc(length+1, sizeof(char)); // memcpy(temp, value, length); // printf("Appending '%s' bytes\n", temp); // free(temp); size_t new_size = array->size + length; if (new_size > array->capacity) { array->capacity = new_size; char *new_array = realloc(array->data, array->capacity); array->data = new_array; if (array->data == NULL) { printf("Failed to allocate memory for array\n"); exit(1); } } memcpy(array->data+array->size, value, length); array->size = new_size; }; void char_array_print(const char_array_t *array) { printf("%s", array->data); }; void char_array_wipe(char_array_t *array) { array->size = 0; memset(array->data, 0, array->capacity); }; bool char_array_has_char(char_array_t *array, char c) { const char *ret = memchr(array->data, c, array->size); if (ret == NULL) { return false; } return true; }; char *char_array_get_until_char(char_array_t *array, char c) { size_t idx = 0; for (size_t i = 0; i < array->size; i++) { if (array->data[i] == c) { idx = i; break; } } if (idx == 0) { return NULL; } char *ret = malloc(idx+1); memcpy(ret, array->data, idx); ret[idx] = '\0'; char *temp = calloc(array->capacity, sizeof(char)); size_t new_i = 0; for (size_t i = idx+1; i < array->size; i++) { temp[new_i++] = array->data[i]; } free(array->data); array->data = temp; array->size = new_i; return ret; };