/* open file */
+ VERBOSE (DEBUG, PRINT ("Opening file %s\n", filename));
FILE *fd = fopen (filename, "rb");
if (fd == NULL) {
VERBOSE (WARNING, PRINT ("Can't open file (%s)\n", filename));
return -1;
}
+ VERBOSE (DEBUG, PRINT ("Seek file size\n"));
fseek (fd, 0, SEEK_END);
int size = ftell (fd);
fseek (fd, 0, SEEK_SET); /* same as rewind(f); */
/* read full file */
+ VERBOSE (DEBUG, PRINT ("Reading %d bytes\n", size));
*buffer = calloc (size + 1, 1);
fread (*buffer, size, 1, fd);
fclose (fd);
- *buffer[size] = 0;
+ (*buffer)[size] = 0;
return size;
}
int add_line (char **buffer, char *str)
{
- int len = strlen (*buffer) + strlen (str) + 1;
- *buffer = realloc (*buffer, len);
+ VERBOSE (DEBUG, PRINT ("add line: %s", str));
+ int len = ((*buffer) ? strlen (*buffer) : 0) + strlen (str) + 1;
+ VERBOSE (DEBUG, PRINT ("len: %d\n", len));
+ if (*buffer) {
+ *buffer = (char *)realloc (*buffer, len);
+ } else {
+ *buffer = (char *)calloc (len, 1);
+ }
strcat (*buffer, str);
return len;
}
int response_html (char **buffer, char *location, char *response)
{
- add_status_line (buffer, c200);
- add_general_header (buffer);
- add_response_header (buffer, location);
-
+ int len = 0;
+ VERBOSE (DEBUG, PRINT ("add_status_line %d\n", len));
+ len = add_status_line (buffer, c200);
+ VERBOSE (DEBUG, PRINT ("add_general_header %d\n", len));
+ len = add_general_header (buffer);
+ VERBOSE (DEBUG, PRINT ("add_response_header %d\n", len));
+ len = add_response_header (buffer, location);
+
+ VERBOSE (DEBUG, PRINT ("add_entity %d\n", len));
return add_entity (buffer, response, strlen (response), "text/html", "iso-8859-1");
}