diff --git a/Makefile.am b/Makefile.am index d707d9375eb3ae46f90b56f00fcf3d2d3d2c86ad..deead5d9c522cc00123cac8b558ef7270932831d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,7 +7,7 @@ # See the file COPYING for details. AUTOMAKE_OPTIONS = foreign 1.2 -lib_LTLIBRARIES = liboop.la liboop-adns.la liboop-glib.la liboop-www.la liboop-rl.la +lib_LTLIBRARIES = liboop-adns.la liboop-glib.la liboop-www.la liboop-rl.la liboop.la INCLUDES = $(GLIB_INCLUDES) $(WWW_INCLUDES) # versions updated as of 0.7 @@ -15,15 +15,19 @@ liboop_la_LDFLAGS = -version-info 3:0:0 # version:revision:age liboop_la_SOURCES = sys.c select.c signal.c alloc.c read.c read-fd.c read-mem.c liboop_adns_la_LDFLAGS = -version-info 1:0:1 +liboop_adns_la_LIBADD = $(ADNS_LIBS) liboop_adns_la_SOURCES = adns.c liboop_glib_la_LDFLAGS = -version-info 0:0:0 +liboop_glib_la_LIBADD = $(GLIB_LIBS) liboop_glib_la_SOURCES = glib.c liboop_www_la_LDFLAGS = -version-info 0:0:0 +liboop_www_la_LIBADD = $(WWW_LIBS) liboop_www_la_SOURCES = www.c liboop_rl_la_LDFLAGS = -version-info 0:0:0 +liboop_rl_la_LIBADD = $(READLINE_LIBS) liboop_rl_la_SOURCES = readline.c include_HEADERS = oop.h oop-adns.h oop-glib.h oop-www.h oop-rl.h @@ -31,7 +35,7 @@ include_HEADERS = oop.h oop-adns.h oop-glib.h oop-www.h oop-rl.h noinst_PROGRAMS = test-oop test_oop_SOURCES = test-oop.c -test_oop_LDADD = $(ADNS_LIBS) $(GLIB_LIBS) $(WWW_LIBS) $(READLINE_LIBS) liboop.la +test_oop_LDADD = $(lib_LTLIBRARIES) release: dist gzip -dc $(PACKAGE)-$(VERSION).tar.gz | bzip2 -9 \ diff --git a/alloc.c b/alloc.c index 3a243e7a718e380192a500a32053a2b92a953955..393bac8c2f6e85a26bb57dee4a5989705418d017 100644 --- a/alloc.c +++ b/alloc.c @@ -5,4 +5,4 @@ void *(*oop_malloc)(size_t) = malloc; void (*oop_free)(void *) = free; void *(*oop_realloc)(void *,size_t) = realloc; -int _oop_continue; /* this has to go somewhere */ +int _oop_continue,_oop_error; /* this has to go somewhere */ diff --git a/configure.in b/configure.in index 169eae4d0c5fd48ee70a18581a4ef6490ca322ef..23ac539fab997b17cd02ea93d4dc36e5576f6188 100644 --- a/configure.in +++ b/configure.in @@ -27,20 +27,20 @@ esac AC_CHECK_HEADERS(poll.h sys/select.h) AC_CHECK_LIB(adns,adns_init,[ - ADNS_LIBS="liboop-adns.la -ladns" + ADNS_LIBS="-ladns" AC_DEFINE(HAVE_ADNS) ]) AC_CHECK_LIB(readline,rl_callback_handler_install,[ AC_CHECK_HEADER(readline/readline.h,[ - READLINE_LIBS="liboop-rl.la -lreadline" + READLINE_LIBS="-lreadline" AC_DEFINE(HAVE_READLINE) ])]) AC_CHECK_PROG(PROG_GLIB_CONFIG,glib-config,glib-config) if test -n "$PROG_GLIB_CONFIG" ; then GLIB_INCLUDES="`glib-config --cflags`" - GLIB_LIBS="liboop-glib.la `glib-config --libs`" + GLIB_LIBS="`glib-config --libs`" AC_DEFINE(HAVE_GLIB) fi @@ -48,7 +48,7 @@ fi AC_CHECK_LIB(wwwcore,HTEvent_setRegisterCallback,[ AC_DEFINE(HAVE_WWW) # This is just a little unpleasant. - WWW_LIBS="liboop-www.la \ + WWW_LIBS=" \ -lwwwapp -lwwwcache -lwwwcore -lwwwdir -lwwwfile -lwwwftp -lwwwgopher \ -lwwwhtml -lwwwhttp -lwwwinit -lwwwmime -lwwwmux -lwwwnews -lwwwstream \ -lwwwtelnet -lwwwtrans -lwwwutils -lwwwxml -lwwwzip -lxmlparse -lxmltok -lmd5" diff --git a/oop.h b/oop.h index 2c2dd50d46308b37fe774d0b4945b914d2d32f39..b25a08c78e8b76abd48ee94f4d1a1ad53aadcf14 100644 --- a/oop.h +++ b/oop.h @@ -31,9 +31,10 @@ static const struct timeval OOP_TIME_NOW = { 0, 0 }; #define OOP_NUM_SIGNALS 256 /* Callbacks may return one of these */ -extern int _oop_continue; /* internal only */ +extern int _oop_continue,_oop_error; /* internal only */ #define OOP_CONTINUE ((void *) &_oop_continue) -#define OOP_HALT ((void *) NULL) /* (or any other value except OOP_CONTINUE) */ +#define OOP_ERROR ((void *) &_oop_error) +#define OOP_HALT ((void *) NULL) /* (or any other value besides OOP_CONTINUE) */ /* Callback function prototypes */ typedef void *oop_call_fd(oop_source *,int fd,oop_event,void *); diff --git a/sys.c b/sys.c index 97bd3e3eb35870110bf87cf7840f0fc07084a14c..8657569994c53927cb901b6336e2f8ae2a5d299c 100644 --- a/sys.c +++ b/sys.c @@ -326,7 +326,10 @@ void *oop_sys_run(oop_source_sys *sys) { sys->do_jmp = 0; - if (0 > rv) break; /* Error in select(). */ + if (0 > rv) { /* Error in select(). */ + ret = OOP_ERROR; + break; + } if (sys->sig_active) { sys->sig_active = 0; diff --git a/test-oop.c b/test-oop.c index d882f20b8f49440114780d281099256af58a4491..82c38d55c17fddb05d7d2a8fa4580aa922de9a81 100644 --- a/test-oop.c +++ b/test-oop.c @@ -25,6 +25,20 @@ GMainLoop *glib_loop; #endif +#ifdef HAVE_WWW +/* Yuck: */ +#define HAVE_CONFIG_H +#undef PACKAGE +#undef VERSION + +#include "oop.h" +#include "HTEvent.h" +#include "oop-www.h" + +#include "WWWLib.h" +#include "WWWInit.h" +#endif + #ifdef HAVE_READLINE #include <readline/readline.h> #include "oop-rl.h" @@ -257,18 +271,6 @@ static void add_adns(oop_source *src) { #ifdef HAVE_WWW -/* Yuck: */ -#define HAVE_CONFIG_H -#undef PACKAGE -#undef VERSION - -#include "oop.h" -#include "HTEvent.h" -#include "oop-www.h" - -#include "WWWLib.h" -#include "WWWInit.h" - static int remaining = 0; static int on_print(const char *fmt,va_list args) {