Now main() is much simpler. Removed all goto. Less variables in main. Simplified status_ to status(). Use a stop() function to log, send messages to stderr if necessary and close vger. Minor fixes with defaults, mimes There is still work to do to compare path using stat().
51 lines
967 B
C
51 lines
967 B
C
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include "vger.h"
|
|
|
|
// to test
|
|
void test_status(void);
|
|
void test_status_error(void);
|
|
void test_uridecode(char*, const int);
|
|
|
|
|
|
void
|
|
test_uridecode(char *str, const int result)
|
|
{
|
|
char reference[GEMINI_REQUEST_MAX] = {'\0'};
|
|
strlcpy(reference, str, sizeof(reference));
|
|
uridecode(str);
|
|
if (strncmp(reference, str, strlen(str)) != result)
|
|
{
|
|
printf("uridecode error\n");
|
|
printf("Strings should be %s\n", (result == 0) ? "identical" : "different");
|
|
printf("passed %s\n", reference);
|
|
printf("got %s\n", str);
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
void
|
|
test_status(void)
|
|
{
|
|
status(20, "text/gemini");
|
|
}
|
|
|
|
void
|
|
test_status_error(void)
|
|
{
|
|
status(51, "file not found");
|
|
status(50, "Forbidden path");
|
|
status(50, "Internal server error");
|
|
}
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
test_status_error();
|
|
test_status();
|
|
//test_uridecode("host.name", 0);
|
|
//test_uridecode("host.name/percent%25-encode%3.gmi", 1);
|
|
return(0);
|
|
}
|