From 1e81a75a8a89e3c901251e97e508fe8d73979043 Mon Sep 17 00:00:00 2001 From: Alexander Rosenberg Date: Tue, 26 May 2026 17:02:45 -0700 Subject: [PATCH] Format stuff --- .dir-locals.el | 5 ++++ http.c | 66 +++++++++++++++++++++++++++++--------------------- 2 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 .dir-locals.el diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..5294b0e --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1,5 @@ +;;; Directory Local Variables -*- no-byte-compile: t -*- +;;; For more information see (info "(emacs) Directory Variables") + +((nil . ((eval . (add-to-list (make-local-variable 'exec-path) "/usr/lib/llvm18/bin/")))) + (c-ts-base-mode . ((apheleia-formatter . clang-format)))) diff --git a/http.c b/http.c index 55a99aa..da547e8 100644 --- a/http.c +++ b/http.c @@ -5,10 +5,11 @@ #include #include -static const char *EMPTY_STRING = ""; +static const char* EMPTY_STRING = ""; -HTTPHeaderList *http_header_list_push(HTTPHeaderList *list, const char *key, const char *value) { - HTTPHeaderList *new = malloc(sizeof(HTTPHeaderList)); +HTTPHeaderList* http_header_list_push(HTTPHeaderList* list, const char* key, const char* value) +{ + HTTPHeaderList* new = malloc(sizeof(HTTPHeaderList)); if (!new) { return NULL; } @@ -31,9 +32,10 @@ HTTPHeaderList *http_header_list_push(HTTPHeaderList *list, const char *key, con return new; } -void free_http_header_list(HTTPHeaderList *list) { +void free_http_header_list(HTTPHeaderList* list) +{ while (list) { - HTTPHeaderList *next = list->next; + HTTPHeaderList* next = list->next; free(list->key); free(list->value); free(list); @@ -41,7 +43,8 @@ void free_http_header_list(HTTPHeaderList *list) { } } -const char *http_header_list_search(HTTPHeaderList *list, const char *key, const char *def) { +const char* http_header_list_search(HTTPHeaderList* list, const char* key, const char* def) +{ while (list) { if (strcmp(list->key, key) == 0) { return list->value; @@ -51,21 +54,22 @@ const char *http_header_list_search(HTTPHeaderList *list, const char *key, const return def; } -#define MAX_REQUEST_LENGTH 16384 -#define MAX_METHOD_LENGTH 16 -#define MAX_URI_LENGTH 256 -#define MAX_VERSION_LENGTH 3 -#define MAX_HEADER_KEY_LENGTH 2048 +#define MAX_REQUEST_LENGTH 16384 +#define MAX_METHOD_LENGTH 16 +#define MAX_URI_LENGTH 256 +#define MAX_VERSION_LENGTH 3 +#define MAX_HEADER_KEY_LENGTH 2048 #define MAX_HEADER_VALUE_LENGTH 2048 -#define RETURN_IF_READ_ERROR(s) \ - if (ferror((s))) { \ - return HRPR_READ_FAILED; \ +#define RETURN_IF_READ_ERROR(s) \ + if (ferror((s))) { \ + return HRPR_READ_FAILED; \ } // if an error occured, req->uri is not allocated static HTTPRequestParseResult parse_method_uri_line( - FILE *stream, size_t *restrict bytes_read, HTTPRequest *restrict req) { + FILE* stream, size_t* restrict bytes_read, HTTPRequest* restrict req) +{ // allow for some leeway in passing incorrect methods char method[MAX_METHOD_LENGTH + 1]; char uri[MAX_URI_LENGTH + 1]; @@ -73,7 +77,7 @@ static HTTPRequestParseResult parse_method_uri_line( char whitespace[4]; ssize_t signed_bytes_read; #define S1(s) #s -#define S(s) S1(s) +#define S(s) S1(s) int nconv = fscanf(stream, // clang-format off "%" S(MAX_METHOD_LENGTH) "[A-Z]" @@ -109,8 +113,9 @@ static HTTPRequestParseResult parse_method_uri_line( // return true if there are more headers and no error occurred, false otherwise // this will *not* free LIST if an error occurs -static bool next_header(FILE *stream, size_t *restrict bytes_read, - HTTPRequestParseResult *restrict res, HTTPHeaderList *restrict *restrict list) { +static bool next_header(FILE* stream, size_t* restrict bytes_read, + HTTPRequestParseResult* restrict res, HTTPHeaderList* restrict* restrict list) +{ char c = fgetc(stream); RETURN_IF_READ_ERROR(stream); if (c == '\r') { @@ -130,7 +135,7 @@ static bool next_header(FILE *stream, size_t *restrict bytes_read, char whitespace[3]; ssize_t signed_bytes_read; #define S1(s) #s -#define S(s) S1(s) +#define S(s) S1(s) int nconv = fscanf(stream, // clang-format off "%" S(MAX_HEADER_KEY_LENGTH) "[a-zA-Z0-9.-]" @@ -154,7 +159,8 @@ static bool next_header(FILE *stream, size_t *restrict bytes_read, return true; } -HTTPRequestParseResult parse_http_request(FILE *stream, HTTPRequest *restrict out) { +HTTPRequestParseResult parse_http_request(FILE* stream, HTTPRequest* restrict out) +{ out->uri = EMPTY_STRING; out->path = EMPTY_STRING; out->method = EMPTY_STRING; @@ -174,23 +180,26 @@ HTTPRequestParseResult parse_http_request(FILE *stream, HTTPRequest *restrict ou return res; } -void free_http_request(HTTPRequest *restrict req) { +void free_http_request(HTTPRequest* restrict req) +{ if (req->method != EMPTY_STRING) { - free((char *) req->method); + free((char*)req->method); } if (req->uri != EMPTY_STRING) { - free((char *) req->uri); + free((char*)req->uri); } free_http_header_list(req->headers); } -const char *status_code_to_message(int status, size_t *restrict length) { +const char* status_code_to_message(int status, size_t* restrict length) +{ static const struct { int code; - const char *msg; + const char* msg; size_t size; } CODES[] = { -#define P(s, m) { s, m, sizeof(m) - 1 } +#define P(s, m) \ + { s, m, sizeof(m) - 1 } P(200, "OK"), P(201, "Created"), P(400, "Bad Request"), @@ -213,12 +222,13 @@ const char *status_code_to_message(int status, size_t *restrict length) { return NULL; } -void format_http_response(FILE *stream, HTTPResponse *restrict resp) { +void format_http_response(FILE* stream, HTTPResponse* restrict resp) +{ assert(status_code_to_message(resp->status, NULL)); dprintf(fileno(stream), "HTTP/1.1 %d %s\r\n", resp->status, status_code_to_message(resp->status, NULL)); dprintf(fileno(stream), "Content-Length: %zu\r\n", resp->body_length); - for (HTTPHeaderList *h = resp->headers; h; h = h->next) { + for (HTTPHeaderList* h = resp->headers; h; h = h->next) { write(fileno(stream), h->key, h->key_length); write(fileno(stream), ": ", 2); write(fileno(stream), h->value, h->value_length);