* @purpose Entry point to the program, starts threads, handles cleanup on program exit
*/
+#define _POSIX_C_SOURCE 200809L // For strsignal to work
+
// --- Standard headers --- //
#include <stdlib.h>
#include <stdio.h>
#include <signal.h> // for signal handling
+#include <string.h> // string functions
// --- Custom headers --- //
+#include "log.h"
#include "options.h"
// --- Variable definitions --- //
*/
void ParseArguments(int argc, char ** argv, Options * opts)
{
- options.program = argv[0]; // program name
- options.verbosity = LOGDEBUG; // default log level
- if (argc > 1)
- options.port = atoi(argv[1]); // Allow us change the port for testing (I keep getting "address in use" errors)
- else
- options.port = 8080; // Using 8080 instead of 80 for now because to use 80 you have to run the program as root
-
- Log(LOGDEBUG, "ParseArguments", "Called as %s with %d arguments.", options.program, argc);
+ opts->program = argv[0]; // program name
+ opts->verbosity = LOGDEBUG; // default log level
+ Log(LOGDEBUG, "Called as %s with %d arguments.", opts->program, argc);
}
/**
{
// At the moment just always exit.
// Call `exit` so that Cleanup will be called to... clean up.
- Log(LOGWARN, "SignalHandler", "Got signal %d (%s). Exiting.", sig, strsignal(sig));
+ Log(LOGWARN, "Got signal %d (%s). Exiting.", sig, strsignal(sig));
exit(sig);
}
*/
void Cleanup()
{
- Log(LOGDEBUG, "Cleanup", "Begin cleanup.");
- Log(LOGDEBUG, "Cleanup", "Finish cleanup.");
+ Log(LOGDEBUG, "Begin cleanup.");
+ Log(LOGDEBUG, "Finish cleanup.");
+
+}
+/**
+ * @funct main
+ * @purpose Main entry point; start worker threads, setup signal handling, wait for threads to exit, exit
+ * @param argc - Num args
+ * @param argv - Args
+ * @returns 0 on success, error code on failure
+ */
+int main(int argc, char ** argv)
+{
+ ParseArguments(argc, argv, &g_options);
+ return 0;
}