From fe1f94cd932dd87ef1404e1f1c8e7febc62c146c Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 16 May 2015 00:12:26 +0100 Subject: [PATCH] Create shared library --- .gitignore | 15 +++++++++ Makefile.am | 20 ++++++++++-- configure.ac | 2 +- runstabber.c | 6 ++++ src/client/stabber.c | 7 ++++ src/server/server.c | 76 +++++++++++++++++++++++++------------------- src/server/server.h | 6 ++++ stabber.h | 6 ++++ 8 files changed, 102 insertions(+), 36 deletions(-) create mode 100644 runstabber.c create mode 100644 src/client/stabber.c create mode 100644 src/server/server.h create mode 100644 stabber.h diff --git a/.gitignore b/.gitignore index ccd697b..544caf0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,18 @@ stabber.workspace compile_commands.json stabber.tags +.deps/ +.libs/ +libstabber.la +libtool +m4/ +runstabber +src/.deps/ +src/.dirstamp +src/server/parser.lo +src/server/server.lo +src/server/stanza.lo +src/server/xmppclient.lo +src/client/.dirstamp +src/client/stabber.lo + diff --git a/Makefile.am b/Makefile.am index b23f9c2..687a924 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,2 +1,18 @@ -bin_PROGRAMS = stabber -stabber_SOURCES = src/server/server.c src/server/xmppclient.h src/server/xmppclient.c src/server/parser.h src/server/parser.c src/server/stanza.h src/server/stanza.c +lib_LTLIBRARIES = libstabber.la + +sources = \ + src/server/server.c src/server/server.h \ + src/server/xmppclient.c src/server/xmppclient.h \ + src/server/parser.c src/server/parser.h \ + src/server/stanza.c src/server/stanza.h \ + src/client/stabber.c src/client/stabber.h + +libstabber_la_LDFLAGS = -export-symbols-regex '^stabber_' +libstabber_la_SOURCES = $(sources) + +include_HEADERS = stabber.h + +noinst_PROGRAMS = runstabber +runstabber_SOURCES = runstabber.c +runstabber_CFLAGS = -I$(top_srcdir) +runstabber_LDADD = libstabber.la diff --git a/configure.ac b/configure.ac index edd91c0..4626edb 100644 --- a/configure.ac +++ b/configure.ac @@ -3,10 +3,10 @@ AC_INIT([stabber], [0.1.0], [boothj5web@gmail.com]) AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_SRCDIR([src/server/server.c]) AC_CONFIG_HEADERS([src/config.h]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([foreign subdir-objects]) +LT_INIT ### Checks for programs. AC_PROG_CC diff --git a/runstabber.c b/runstabber.c new file mode 100644 index 0000000..60ba8e0 --- /dev/null +++ b/runstabber.c @@ -0,0 +1,6 @@ +#include + +int main(void) +{ + return stabber_start(5230); +} diff --git a/src/client/stabber.c b/src/client/stabber.c new file mode 100644 index 0000000..8315d61 --- /dev/null +++ b/src/client/stabber.c @@ -0,0 +1,7 @@ +#include "server/server.h" + +int +stabber_start(int port) +{ + return server_run(port); +} diff --git a/src/server/server.c b/src/server/server.c index 8e4c581..eca7528 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -8,6 +8,7 @@ #include "server/xmppclient.h" #include "server/parser.h" #include "server/stanza.h" +#include "server/server.h" #define XML_START "" @@ -145,42 +146,13 @@ auth_callback(XMPPStanza *stanza, XMPPClient *client) printf("RECV: "); } -int main(int argc , char *argv[]) +int +server_run(int port) { - int port = 0; - - GOptionEntry entries[] = - { - { "port", 'p', 0, G_OPTION_ARG_INT, &port, "Listen port", NULL }, - { NULL } - }; - - GError *error = NULL; - GOptionContext *context; - - context = g_option_context_new(NULL); - g_option_context_add_main_entries(context, entries, NULL); - if (!g_option_context_parse(context, &argc, &argv, &error)) { - g_print("%s\n", error->message); - g_option_context_free(context); - g_error_free(error); - return 1; - } - - g_option_context_free(context); - - if (port == 0) { - port = 5222; - } + printf("Starting on port: %d...\n", port); struct sockaddr_in server_addr, client_addr; - if (argc == 2) { - port = atoi(argv[1]); - } - - printf("Starting on port: %d...\n", port); - // create socket errno = 0; int listen_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); // ipv4, tcp, ip @@ -240,5 +212,43 @@ int main(int argc , char *argv[]) while (recv(listen_socket, NULL, 1, 0) > 0) {} shutdown(listen_socket, 2); close(listen_socket); - return 0; + + return 1; +} + +int +main(int argc , char *argv[]) +{ + int port = 0; + + GOptionEntry entries[] = + { + { "port", 'p', 0, G_OPTION_ARG_INT, &port, "Listen port", NULL }, + { NULL } + }; + + GError *error = NULL; + GOptionContext *context; + + context = g_option_context_new(NULL); + g_option_context_add_main_entries(context, entries, NULL); + if (!g_option_context_parse(context, &argc, &argv, &error)) { + g_print("%s\n", error->message); + g_option_context_free(context); + g_error_free(error); + return 1; + } + + g_option_context_free(context); + + if (port == 0) { + port = 5230; + } + + + if (argc == 2) { + port = atoi(argv[1]); + } + + return server_run(port); } diff --git a/src/server/server.h b/src/server/server.h new file mode 100644 index 0000000..0259c41 --- /dev/null +++ b/src/server/server.h @@ -0,0 +1,6 @@ +#ifndef __H_SERVER +#define __H_SERVER + +int server_run(int port); + +#endif diff --git a/stabber.h b/stabber.h new file mode 100644 index 0000000..cbf2e6f --- /dev/null +++ b/stabber.h @@ -0,0 +1,6 @@ +#ifndef __H_STABBER +#define __H_STABBER + +int stabber_start(int port); + +#endif