Commit 5bbb6fbb authored by valenok's avatar valenok

Added mg_send_file()

parent 23a3cc64
...@@ -2567,6 +2567,16 @@ static void handle_file_request(struct mg_connection *conn, const char *path, ...@@ -2567,6 +2567,16 @@ static void handle_file_request(struct mg_connection *conn, const char *path,
(void) fclose(fp); (void) fclose(fp);
} }
void mg_send_file(struct mg_connection *conn, const char *path) {
struct mgstat st;
if (mg_stat(path, &st) == 0) {
handle_file_request(conn, path, &st);
} else {
send_http_error(conn, 404, "Not Found", "%s", "File not found");
}
}
// Parse HTTP headers from the given buffer, advance buffer to the point // Parse HTTP headers from the given buffer, advance buffer to the point
// where parsing stopped. // where parsing stopped.
static void parse_http_headers(char **buf, struct mg_request_info *ri) { static void parse_http_headers(char **buf, struct mg_request_info *ri) {
......
...@@ -158,6 +158,11 @@ int mg_write(struct mg_connection *, const void *buf, size_t len); ...@@ -158,6 +158,11 @@ int mg_write(struct mg_connection *, const void *buf, size_t len);
int mg_printf(struct mg_connection *, const char *fmt, ...); int mg_printf(struct mg_connection *, const char *fmt, ...);
// Send contents of the entire file together with HTTP headers.
// Return 1 on success, 0 on error (e.g. file does not exist).
void mg_send_file(struct mg_connection *conn, const char *path);
// Read data from the remote end, return number of bytes read. // Read data from the remote end, return number of bytes read.
int mg_read(struct mg_connection *, void *buf, size_t len); int mg_read(struct mg_connection *, void *buf, size_t len);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment