--- /dev/null
+#include <liba.h>
+
+#define MAX_CONNS 1024
+
+char* Usage = "mbusd DIALSTR";
+long ConnectionMap[MAX_CONNS / sizeof(long)] = {0};
+
+void OnNewClient(Int cfd)
+{
+ (void)cfd;
+// int pid = fork();
+// if (pid < 0)
+// {
+// perror("fork");
+// }
+// else if (pid == 0)
+// {
+//// dup2(cfd, 0);
+//// dup2(cfd, 1);
+//// dup2(cfd, 2);
+//// exit(execvp(Command[0], Command));
+// }
+// close(cfd);
+}
+
+int main(int argc, char** argv)
+{
+ if (argc != 1)
+ {
+ Options_PrintHelp();
+ return 1;
+ }
+
+ Net_Serve(argv[0], OnNewClient);
+
+ return 0;
+}
Int Options_Parse(Int argc, char** argv);
void Options_PrintHelp(void);
-/*
- Networking
-*/
-Int Net_Announce(char* dialstr);
-Int Net_Listen(Int fd, Int backlog);
-Int Net_Accept(Int fd);
-Int Net_Dial(char* dialstr);
-void Net_Serve(char* dialstr, void (*on_client)(Int cfd));
-
/*
UTF8 Encoding and Decoding
*/
extern char* ARGV0;
extern char* Usage;
extern Option_T Options[];
+
+/*
+ Networking
+*/
+Int Net_Announce(char* dialstr);
+Int Net_Listen(Int fd, Int backlog);
+Int Net_Accept(Int fd);
+Int Net_Dial(char* dialstr);
+void Net_Serve(char* dialstr, void (*on_client)(Int cfd));
+
+/*
+ Concurrency and Multithreading
+*/
+typedef struct Thread Thread_T;
+
+Int Thread_Create(Thread_T* thr, void* (*func)(void*), void *arg );
+Thread_T Thread_Current(void);
+void Thread_Yield(void);
+void Thread_Exit(Int res);
+Int Thread_Detach(Thread_T thread);
+Int Thread_Join(Thread_T thread);
\ No newline at end of file
printf("usage: %s\n\n", Usage);
}
- /* prInt option help messages */
+ /* print option help messages */
for (Int i = 0; Options[i].s || Options[i].l; i++)
{
int remain = padding;
#include <liba.h>
Option_T Options[] = {
- { .s = 'h', .l = "help", .a = 0, .d = "prInt this help message" },
+ { .s = 'h', .l = "help", .a = 0, .d = "print this help message" },
{0}
};
\ No newline at end of file