]> source.dussan.org Git - rspamd.git/commitdiff
* Remove warning from main.c
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 10 Jun 2008 13:41:41 +0000 (17:41 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 10 Jun 2008 13:41:41 +0000 (17:41 +0400)
* Add perl detection and perl linker's and cflags
* Modify configure to work with BSD sed (stupid and ugly)

Makefile.in
configure
main.c

index 5685d6c3242b81e94941b5edc2cf9799f8c66617..1bf77d6943a1c2ad24a6b3e82e6b753f88a84afc 100644 (file)
@@ -7,7 +7,7 @@ memctest: upstream.c memcached.c memcached-test.c
        $(CC) $(OPT_FLAGS) $(CFLAGS) $(PTHREAD_CFLAGS) -c memcached-test.c
        $(CC) $(OPT_FLAGS) $(PTHREAD_LDFLAGS) $(LD_PATH) upstream.o memcached.o memcached-test.o $(LIBS) -o memcached-test
 
-install: $(EXEC) rmilter.8 rmilter.conf.sample
+install: $(EXEC)
        $(INSTALL) -b $(EXEC) $(PREFIX)/sbin/$(EXEC)
        $(INSTALL) -v $(EXEC).sh $(PREFIX)/etc/rc.d
        #$(INSTALL) -m0644 rspamd.8 $(MANPATH)/man8
index 74e00b7d269fea08186f919bdbc2d25ab25a2da1..e9471cd787db2e421dd962374709e633b961b756 100755 (executable)
--- a/configure
+++ b/configure
@@ -7,6 +7,7 @@ YACC=""
 OS=""
 
 PKG_CONFIG=`which pkg-config`
+PERL=`which perl`
 
 LOCALBASE=/usr/local
 PREFIX=$LOCALBASE
@@ -297,6 +298,44 @@ check_package()
 
 }
 
+check_perl()
+{
+       echo -n "Testing for $PERL: "
+       echo >> config.log
+       echo "Testing for $PERL: " >> config.log
+       if [ ! -x $PERL ] ; then
+               echo "not found"
+               echo "-> FAILED" >> config.log
+               cleanup
+               return 1
+       fi
+       PERLCFLAGS=`$PERL -MExtUtils::Embed -e ccopts`
+       PERLLDFLAGS=`$PERL -MExtUtils::Embed -e ldopts`
+
+       echo "#include <stdlib.h>" > autotest.c
+       echo "#include <EXTERN.h>" >> autotest.c
+       echo "#include <perl.h>" >> autotest.c
+       echo "int main (int argc, char **argv) { PERL_SYS_INIT3(&argc,&argv,&env); return 0; }" >> autotest.c
+       echo "$GCC $CFLAGS $PERLCFLAGS $PTHREAD_CFLAGS -o autotest $LDFLAGS $LIBS $PERLLDFLAGS $PTHREAD_LDFLAGS autotest.c" >>config.log
+       $GCC $CFLAGS $PERLCFLAGS $PTHREAD_CFLAGS -o autotest $LDFLAGS $LIBS $PERLLDFLAGS $PTHREAD_LDFLAGS autotest.c >>config.log 2>&1
+       if [ $? -eq 0 ] ; then 
+               echo "found"
+               LIBS="$LIBS $PERLLDFLAGS"
+               CFLAGS="$CFLAGS $PERLCFLAGS"
+               cleanup
+               echo "-> OK" >> config.log
+               return 0
+       else
+               echo "not found"
+               echo "-> FAILED" >> config.log
+               echo "Failed program was:" >> config.log
+               cat autotest.c >> config.log
+               cleanup
+               return 1
+       fi
+
+}
+
 check_os()
 {
        _OS=`uname -s`
@@ -352,9 +391,9 @@ write_result()
        OBJECTS=`echo $SOURCES | sed -e 's/\.c/\.o/g'`
        # Make CFLAGS more readable
        CFLAGS="$CFLAGS -DRVERSION=\\\"${VERSION}\\\" -DHASH_COMPAT"
-       CFLAGS=`echo $CFLAGS | sed -e 's/[ ]/ \\\\\\n/g' | sort -r -k2 | uniq`
-       LDFLAGS=`echo $LDLAGS | sed -e 's/[ ]/ \\\\\\n/g' | sort -r -k2 | uniq`
-       LIBS=`echo $LIBS | sed -e 's/[ ]/ \\\\\\n/g' | sort -r -k2 | uniq`
+       CFLAGS=`echo $CFLAGS | tr [:space:] \\\n | sed -e 's/$/ \\\/' | sed -e '$,$s/\\\//' | sort -r -k2 | uniq`
+       LDFLAGS=`echo $LDLAGS | tr [:space:] \\\n | sed -e 's/$/ \\\/' | sed -e '$,$s/\\\//' | sort -r -k2 | uniq`
+       LIBS=`echo $LIBS | tr [:space:] \\\n | sed -e 's/$/ \\\/' | sed -e '$,$s/\\\//' | sort -r -k2 | uniq`
        cat > $MAKEFILE << END
 # This is ${EXEC} Makefile
 # For options edit Makefile.in, this file is autogenerated by configure
@@ -558,6 +597,16 @@ fi
 
 check_package "glib-2.0" "glib.h"
 check_package "gmime-2.0" "gmime/gmime.h"
+if [ $? -eq 1 ] ; then
+       echo "Package gmime-2.0 not found, check config.log for details"
+       exit 1
+fi
+
+check_perl
+if [ $? -eq 1 ] ; then
+       echo "Perl or libperl not found, check config.log for details"
+       exit 1
+fi
 
 check_group $GROUP
 if [ $? -ne 0 ] ; then 
diff --git a/main.c b/main.c
index 1b7a00f159ba8f675efe0535f223ed2b44fcf59e..8cc906b09b671168be707f1d9365878ca2ce5fbf 100644 (file)
--- a/main.c
+++ b/main.c
@@ -128,6 +128,7 @@ main (int argc, char **argv)
        struct rspamd_worker *cur, *cur_tmp, *active_worker;
        struct sockaddr_un *un_addr;
        FILE *f;
+       pid_t wrk;
 
        rspamd = (struct rspamd_main *)malloc (sizeof (struct rspamd_main));
        bzero (rspamd, sizeof (struct rspamd_main));
@@ -243,7 +244,7 @@ main (int argc, char **argv)
                        child_dead = 0;
                        msg_debug ("main: catch SIGCHLD signal, finding terminated worker");
                        /* Remove dead child form childs list */
-                       pid_t wrk = waitpid (0, &res, 0);
+                       wrk = waitpid (0, &res, 0);
                        TAILQ_FOREACH_SAFE (cur, &rspamd->workers, next, cur_tmp) {
                                if (wrk == cur->pid) {
                                        /* Catch situations if active worker is abnormally terminated */