[Pkg-privacy-commits] [onioncat] 209/241: - options are parsed sequentially (-f and -I first) - config file is always read from SYSCONFDIR (usually /etc or /usr/local/etc) - changed Makefile.am to not install header files

Intrigeri intrigeri at moszumanska.debian.org
Wed Aug 26 16:17:10 UTC 2015


This is an automated email from the git hooks/post-receive script.

intrigeri pushed a commit to branch upstream-master
in repository onioncat.

commit 98b6482df6fed08b2f4b2a88086624ed1193bbb5
Author: eagle <eagle at 58e1ccc2-750e-0410-8d0d-f93ca75ab447>
Date:   Sun Jan 24 18:55:24 2010 +0000

     - options are parsed sequentially (-f and -I first)
     - config file is always read from SYSCONFDIR (usually /etc or /usr/local/etc)
     - changed Makefile.am to not install header files
    
    
    
    git-svn-id: https://www.cypherpunk.at/svn/onioncat/trunk@538 58e1ccc2-750e-0410-8d0d-f93ca75ab447
---
 ChangeLog              |   3 ++
 configure              |  22 ++++-----
 src/Makefile.am        |   3 +-
 src/Makefile.in        |  51 ++++++--------------
 src/cygwin/Makefile.am |   2 +-
 src/cygwin/Makefile.in |  48 ++++---------------
 src/ocat.c             | 124 +++++++++++++++++++++++++++++--------------------
 src/ocat.h             |   4 ++
 src/ocat_netdesc.c     |   2 +
 src/ocat_netdesc.h     |   1 +
 src/ocatctrl.c         |  38 +++++++--------
 src/ocatsetup.c        |  10 +++-
 12 files changed, 148 insertions(+), 160 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8605e2a..ce1e469 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,7 @@
 * version 0.2.2
+ - options are parsed sequentially (-f and -I first)
+ - config file is always read from SYSCONFDIR (usually /etc or /usr/local/etc)
+ - changed Makefile.am to not install header files
  - separate name for connect log and pid file for OC/GC.
  - mode detection (OC/GC) improved
  - GarliCat branch merged back into trunk
diff --git a/configure b/configure
index fabc2ac..f193aea 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.62 for onioncat 0.2.2.r536.
+# Generated by GNU Autoconf 2.62 for onioncat 0.2.2.r538.
 #
 # Report bugs to <rahra at cypherpunk.at>.
 #
@@ -596,8 +596,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='onioncat'
 PACKAGE_TARNAME='onioncat'
-PACKAGE_VERSION='0.2.2.r536'
-PACKAGE_STRING='onioncat 0.2.2.r536'
+PACKAGE_VERSION='0.2.2.r538'
+PACKAGE_STRING='onioncat 0.2.2.r538'
 PACKAGE_BUGREPORT='rahra at cypherpunk.at'
 
 ac_subst_vars='SHELL
@@ -1260,7 +1260,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures onioncat 0.2.2.r536 to adapt to many kinds of systems.
+\`configure' configures onioncat 0.2.2.r538 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1330,7 +1330,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of onioncat 0.2.2.r536:";;
+     short | recursive ) echo "Configuration of onioncat 0.2.2.r538:";;
    esac
   cat <<\_ACEOF
 
@@ -1422,7 +1422,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-onioncat configure 0.2.2.r536
+onioncat configure 0.2.2.r538
 generated by GNU Autoconf 2.62
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1436,7 +1436,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by onioncat $as_me 0.2.2.r536, which was
+It was created by onioncat $as_me 0.2.2.r538, which was
 generated by GNU Autoconf 2.62.  Invocation command line was
 
   $ $0 $@
@@ -2085,7 +2085,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='onioncat'
- VERSION='0.2.2.r536'
+ VERSION='0.2.2.r538'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2236,7 +2236,7 @@ ac_config_headers="$ac_config_headers config.h"
 
 
 cat >>confdefs.h <<\_ACEOF
-#define SVN_REVISION "536"
+#define SVN_REVISION "538"
 _ACEOF
 
 
@@ -5220,7 +5220,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by onioncat $as_me 0.2.2.r536, which was
+This file was extended by onioncat $as_me 0.2.2.r538, which was
 generated by GNU Autoconf 2.62.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5273,7 +5273,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-onioncat config.status 0.2.2.r536
+onioncat config.status 0.2.2.r538
 configured by $0, generated by GNU Autoconf 2.62,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/src/Makefile.am b/src/Makefile.am
index 0c9737b..7d21e59 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,7 @@
 bin_PROGRAMS = ocat
 ocat_SOURCES = ocat.c ocatlog.c ocatroute.c ocatthread.c ocattun.c ocatv6conv.c ocatcompat.c ocatpeer.c ocatsetup.c ocatipv4route.c ocateth.c ocatsocks.c ocatlibe.c ocatctrl.c ocatipv6route.c ocaticmp.c ocat_wintuntap.c ocat_netdesc.c
-include_HEADERS = ocat.h ocat_netdesc.h strlcpy.c strlcat.c
+noinst_HEADERS = ocat.h ocat_netdesc.h strlcpy.c strlcat.c
+AM_CFLAGS = -DSYSCONFDIR=\"$(sysconfdir)\"
 
 install-exec-hook:
 	$(LN_S) -f $(DESTDIR)$(bindir)/ocat$(EXEEXT) \
diff --git a/src/Makefile.in b/src/Makefile.in
index 4e91f5b..034113b 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -39,7 +39,7 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = ocat$(EXEEXT)
 subdir = src
-DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/acx_pthread.m4 \
@@ -49,7 +49,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"
+am__installdirs = "$(DESTDIR)$(bindir)"
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
 am_ocat_OBJECTS = ocat.$(OBJEXT) ocatlog.$(OBJEXT) ocatroute.$(OBJEXT) \
@@ -70,14 +70,7 @@ CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(ocat_SOURCES)
 DIST_SOURCES = $(ocat_SOURCES)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-includeHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(include_HEADERS)
+HEADERS = $(noinst_HEADERS)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -170,7 +163,8 @@ sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 ocat_SOURCES = ocat.c ocatlog.c ocatroute.c ocatthread.c ocattun.c ocatv6conv.c ocatcompat.c ocatpeer.c ocatsetup.c ocatipv4route.c ocateth.c ocatsocks.c ocatlibe.c ocatctrl.c ocatipv6route.c ocaticmp.c ocat_wintuntap.c ocat_netdesc.c
-include_HEADERS = ocat.h ocat_netdesc.h strlcpy.c strlcat.c
+noinst_HEADERS = ocat.h ocat_netdesc.h strlcpy.c strlcat.c
+AM_CFLAGS = -DSYSCONFDIR=\"$(sysconfdir)\"
 all: all-am
 
 .SUFFIXES:
@@ -270,23 +264,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 uninstall-info-am:
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
-	  $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
-	done
-
-uninstall-includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(include_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(includedir)/$$f"; \
-	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -367,7 +344,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(PROGRAMS) $(HEADERS)
 installdirs:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \
+	for dir in "$(DESTDIR)$(bindir)"; do \
 	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
 	done
 install: install-am
@@ -414,7 +391,7 @@ info: info-am
 
 info-am:
 
-install-data-am: install-includeHEADERS
+install-data-am:
 
 install-exec-am: install-binPROGRAMS
 	@$(NORMAL_INSTALL)
@@ -443,20 +420,18 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
-	uninstall-info-am
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
 	clean-generic ctags distclean distclean-compile \
 	distclean-generic distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-binPROGRAMS \
 	install-data install-data-am install-exec install-exec-am \
-	install-exec-hook install-includeHEADERS install-info \
-	install-info-am install-man install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-binPROGRAMS uninstall-includeHEADERS \
+	install-exec-hook install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-binPROGRAMS \
 	uninstall-info-am
 
 
diff --git a/src/cygwin/Makefile.am b/src/cygwin/Makefile.am
index cf195af..cf50f84 100644
--- a/src/cygwin/Makefile.am
+++ b/src/cygwin/Makefile.am
@@ -1,2 +1,2 @@
-include_HEADERS = ocat_cygwin.h openbsd_netinet_icmp6.h openbsd_netinet_if_ether.h openbsd_netinet_ip6.h
+noinst_HEADERS = ocat_cygwin.h openbsd_netinet_icmp6.h openbsd_netinet_if_ether.h openbsd_netinet_ip6.h
 
diff --git a/src/cygwin/Makefile.in b/src/cygwin/Makefile.in
index a741444..7bc9f5c 100644
--- a/src/cygwin/Makefile.in
+++ b/src/cygwin/Makefile.in
@@ -37,7 +37,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = src/cygwin
-DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/acx_pthread.m4 \
@@ -49,15 +49,7 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 SOURCES =
 DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(includedir)"
-includeHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(include_HEADERS)
+HEADERS = $(noinst_HEADERS)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -149,7 +141,7 @@ sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
-include_HEADERS = ocat_cygwin.h openbsd_netinet_icmp6.h openbsd_netinet_if_ether.h openbsd_netinet_ip6.h
+noinst_HEADERS = ocat_cygwin.h openbsd_netinet_icmp6.h openbsd_netinet_if_ether.h openbsd_netinet_ip6.h
 all: all-am
 
 .SUFFIXES:
@@ -183,23 +175,6 @@ $(top_srcdir)/configure:  $(am__configure_deps)
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 uninstall-info-am:
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
-	  $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
-	done
-
-uninstall-includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(include_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(includedir)/$$f"; \
-	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -280,9 +255,6 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(HEADERS)
 installdirs:
-	for dir in "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
-	done
 install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
@@ -325,7 +297,7 @@ info: info-am
 
 info-am:
 
-install-data-am: install-includeHEADERS
+install-data-am:
 
 install-exec-am:
 
@@ -351,18 +323,16 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-includeHEADERS uninstall-info-am
+uninstall-am: uninstall-info-am
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
 	ctags distclean distclean-generic distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-data install-data-am install-exec install-exec-am \
-	install-includeHEADERS install-info install-info-am \
-	install-man install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
-	uninstall uninstall-am uninstall-includeHEADERS \
-	uninstall-info-am
+	install-info install-info-am install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/ocat.c b/src/ocat.c
index 8b32ef1..df4095b 100644
--- a/src/ocat.c
+++ b/src/ocat.c
@@ -31,7 +31,7 @@ void usage(const char *s)
          "   -h                    display usage message\n"
          "   -C                    disable local controller interface\n"
          "   -d <n>                set debug level to n, default = %d\n"
-         "   -f <config_file>      read config from config_file\n"
+         "   -f <config_file>      read config from config_file (default = %s)\n"
          "   -i                    convert onion hostname to IPv6 and exit\n"
          "   -I                    GarliCat mode, use I2P instead of Tor\n"
          "   -l [<ip>:]<port>      set ocat listen address and port, default = 127.0.0.1:%d\n"
@@ -52,7 +52,7 @@ void usage(const char *s)
          // option defaults start here
          OCAT_DIR, NDESC(clog_file), CNF(create_clog), 
          CNF(daemon), CNF(daemon) ^ 1,
-         CNF(debug_level), NDESC(listen_port),
+         CNF(debug_level), CNF(config_file), NDESC(listen_port),
          CNF(pid_file),
          CNF(ocat_dest_port), ntohs(CNF(socks_dst)->sin_port), 
 #ifndef WITHOUT_TUN
@@ -270,28 +270,46 @@ void cleanup_system(void)
 }
 
 
-int main(int argc, char *argv[])
+void parse_opt_early(int argc, char *argv[])
 {
-   char *s, ip6addr[INET6_ADDRSTRLEN], hw[20], def[100], pwdbuf[SIZE_1K];
-   int c, runasroot = 0;
-   struct passwd *pwd, pwdm;
-   int urlconv = 0, mode_detect = 0;
+   int c;
 
-   init_setup();
-   // detect network type by command file name
-   // FIXME: this should be not hardcoded in that way
-   // FIXME: basename() should better be used instead of strstr()
-   if (strstr(argv[0], "gcat"))
-   {
-      CNF(net_type) = NTYPE_I2P;
-      snprintf(def, 100, "127.0.0.1:%d", NDESC(listen_port));
-      post_init_setup();
-      mode_detect = 1;
-   }
+   opterr = 0;
+   while ((c = getopt(argc, argv, "f:hI")) != -1)
+      switch (c)
+      {
+         case 'f':
+            free(CNF(config_file));
+            CNF(config_file) = optarg;
+            CNF(config_read) = 0;
+            break;
 
-   while ((c = getopt(argc, argv, "abBCd:f:hrRiIopl:t:T:s:u:4L:P:")) != -1)
+         case 'I':
+            CNF(net_type) = NTYPE_I2P;
+            break;
+         case 'h':
+            usage(argv[0]);
+            exit(1);
+         case '?':
+            break;
+      }
+}
+
+ 
+int parse_opt(int argc, char *argv[])
+{
+   int c, urlconv = 0;
+
+   opterr = 1;
+   optind = 1;
+   while ((c = getopt(argc, argv, "f:IabBCd:rRiopl:t:T:s:u:4L:P:")) != -1)
       switch (c)
       {
+         // those options are parsed in parse_opt_early()
+         case 'f':
+         case 'I':
+            break;
+
          case 'a':
             CNF(create_clog) = 1;
             break;
@@ -312,19 +330,10 @@ int main(int argc, char *argv[])
             CNF(debug_level) = atoi(optarg);
             break;
 
-         case 'f':
-            CNF(config_file) = optarg;
-            CNF(config_read) = 0;
-            break;
-
          case 'i':
             urlconv = 1;
             break;
 
-         case 'I':
-            CNF(net_type) = NTYPE_I2P;
-            break;
-
          case 'l':
             add_listener(optarg);
             break;
@@ -353,7 +362,7 @@ int main(int argc, char *argv[])
             break;
 
          case 'r':
-            runasroot = 1;
+            CNF(runasroot) = 1;
             CNF(usrname) = "root";
             break;
 
@@ -384,18 +393,49 @@ int main(int argc, char *argv[])
             CNF(ipv4_enable) = 1;
             break;
 
-         case 'h':
          default:
             usage(argv[0]);
             exit(1);
       }
 
+   return urlconv;
+}
+
+
+int main(int argc, char *argv[])
+{
+   char *s, ip6addr[INET6_ADDRSTRLEN], hw[20], def[100], pwdbuf[SIZE_1K];
+   int c;
+   struct passwd *pwd, pwdm;
+   int urlconv = 0, mode_detect = 0;
+
+   init_setup();
+   // detect network type by command file name
+   // FIXME: this should be not hardcoded in that way
+   // FIXME: basename() should better be used instead of strstr()
+   if (strstr(argv[0], "gcat"))
+   {
+      CNF(net_type) = NTYPE_I2P;
+      snprintf(def, 100, "127.0.0.1:%d", NDESC(listen_port));
+      post_init_setup();
+      mode_detect = 1;
+   }
+
+   parse_opt_early(argc, argv);
+
    if (!mode_detect)
    {
       snprintf(def, 100, "127.0.0.1:%d", NDESC(listen_port));
       post_init_setup();
    }
 
+   if ((c = open(CNF(config_file), O_RDONLY)) == -1)
+      CNF(config_failed) = errno;
+   else
+      ctrl_handler((void*) (long) c);
+
+   urlconv = parse_opt(argc, argv);
+
    // usage output must be after mode detection (Tor/I2P)
    if (argc < 2)
       usage(argv[0]), exit(1);
@@ -417,6 +457,9 @@ int main(int argc, char *argv[])
    (void) init_ocat_thread("main");
    detach_thread();
 
+   if (CNF(config_failed))
+      log_msg(LOG_NOTICE, "could not open config file %s: %s", CNF(config_file), strerror(CNF(config_failed)));
+
    if (urlconv == 2)
    {
       if ((c = inet_pton(AF_INET6, argv[optind], &CNF(ocat_addr))) < 0)
@@ -461,16 +504,6 @@ int main(int argc, char *argv[])
 
    log_msg(LOG_INFO, "%s", CNF(version));
 
-#if 0
-   if (CNF(config_file))
-   {
-      log_msg(LOG_INFO, "reading config file %s", CNF(config_file));
-      if ((c = open(CNF(config_file), O_RDONLY)) == -1)
-         log_msg(LOG_ERR, "error opening file: %s", strerror(errno)), exit(1);
-      ctrl_handler((void*) c);
-   }
-#endif
-
    memcpy(&CNF(ocat_hwaddr[3]), &CNF(ocat_addr.s6_addr[13]), 3);
    if (CNF(use_tap))
       log_msg(LOG_INFO, "MAC address %s", ether_ntoa_r((struct ether_addr*) CNF(ocat_hwaddr), hw));
@@ -527,7 +560,7 @@ int main(int argc, char *argv[])
    if (CNF(create_pid_file))
       mk_pid_file(pwd->pw_uid);
 
-   if (!runasroot && !getuid())
+   if (!CNF(runasroot) && !getuid())
    {
       log_msg(LOG_INFO, "running as root, changing uid/gid to %s (uid %d/gid %d)", CNF(usrname), pwd->pw_uid, pwd->pw_gid);
       if (setgid(pwd->pw_gid))
@@ -561,15 +594,6 @@ int main(int argc, char *argv[])
          socks_queue(CNF(root_peer[c]), 1);
 #endif
 
-   // reading config file
-   if (CNF(config_file))
-   {
-      log_msg(LOG_INFO, "reading config file %s", CNF(config_file));
-      if ((c = open(CNF(config_file), O_RDONLY)) == -1)
-         log_msg(LOG_ERR, "error opening file: %s", strerror(errno)), exit(1);
-      ctrl_handler((void*) (long) c);
-   }
-
    // install signal handler
    install_sig();
 
diff --git a/src/ocat.h b/src/ocat.h
index 051085b..4038458 100644
--- a/src/ocat.h
+++ b/src/ocat.h
@@ -219,6 +219,9 @@
 #define NTYPE_TOR 0
 #define NTYPE_I2P 1
 
+#ifndef SYSCONFDIR
+#define SYSCONFDIR "/etc"
+#endif
 
 struct OcatSetup
 {
@@ -256,6 +259,7 @@ struct OcatSetup
    int ocat_addr4_mask;
    char *config_file;
    int config_read;
+   int config_failed;
    int use_tap;
    //! local OnionCat MAC address
    uint8_t ocat_hwaddr[ETHER_ADDR_LEN];
diff --git a/src/ocat_netdesc.c b/src/ocat_netdesc.c
index 8f74811..b3b6453 100644
--- a/src/ocat_netdesc.c
+++ b/src/ocat_netdesc.c
@@ -32,6 +32,7 @@ const struct NetDesc netdesc_[2] =
       TOR_SOCKS_PORT,
       TOR_OCAT_CONNECT_LOG,
       TOR_PID_FILE,
+      "ocat.conf",
    },
    {
       I2P_PREFIX, I2P_PREFIX_LEN,
@@ -44,6 +45,7 @@ const struct NetDesc netdesc_[2] =
       I2P_SOCKS_PORT,
       I2P_OCAT_CONNECT_LOG,
       I2P_PID_FILE,
+      "gcat.conf",
    },
 };
 
diff --git a/src/ocat_netdesc.h b/src/ocat_netdesc.h
index 69f9de5..27050ee 100644
--- a/src/ocat_netdesc.h
+++ b/src/ocat_netdesc.h
@@ -38,6 +38,7 @@ struct NetDesc
    short socks_port;
    char *clog_file;
    char *pid_file;
+   char *config_file;
 };
 
 extern const struct NetDesc netdesc_[2];
diff --git a/src/ocatctrl.c b/src/ocatctrl.c
index 9985095..a762d4f 100644
--- a/src/ocatctrl.c
+++ b/src/ocatctrl.c
@@ -37,7 +37,7 @@ void *ctrl_handler(void *p)
 {
    int fd, c;
    FILE *ff, *fo;
-   char buf[FRAME_SIZE], addrstr[INET6_ADDRSTRLEN], onionstr[NDESC(name_size)], timestr[32], *s, *tokbuf;
+   char buf[FRAME_SIZE], addrstr[INET6_ADDRSTRLEN], onionstr[NDESC(name_size)], timestr[32], *s, *tokbuf, *bufp;
    int rlen, cfd;
    struct tm *tm;
    OcatPeer_t *peer;
@@ -71,7 +71,7 @@ void *ctrl_handler(void *p)
          return NULL;
       }
       log_debug("fd %d fdopen'ed \"r\"", fd);
-      fo = CNF(logf);
+      fo = CNF(logf) ? CNF(logf) : stderr;
       //CNF(config_read) = 1;
    }
 
@@ -132,14 +132,14 @@ void *ctrl_handler(void *p)
       if (!(rlen = oe_remtr(buf)))
          continue;
 
-      if (!strtok_r(buf, " \t\r\n", &tokbuf))
+      if (!(bufp = strtok_r(buf, " \t\r\n", &tokbuf)))
          continue;
 
       // "exit"/"quit" => terminate thread
-      if (!strncmp(buf, "exit", 4) || !strncmp(buf, "quit", 4))
+      if (!strncmp(bufp, "exit", 4) || !strncmp(bufp, "quit", 4))
          break;
       // "status"
-      else if (!strcmp(buf, "status"))
+      else if (!strcmp(bufp, "status"))
       {
          lock_peers();
          for (peer = get_first_peer(); peer; peer = peer->next)
@@ -158,9 +158,9 @@ void *ctrl_handler(void *p)
             }
          unlock_peers();
       }
-      else if (!strcmp(buf, "close"))
+      else if (!strcmp(bufp, "close"))
       {
-         cfd = atoi(&buf[6]);
+         cfd = atoi(bufp +6);
          lock_peers();
          for (peer = get_first_peer(); peer; peer = peer->next)
             if (peer->tcpfd == cfd)
@@ -177,21 +177,21 @@ void *ctrl_handler(void *p)
          }
          unlock_peers();
       }
-      else if (!strcmp(buf, "threads"))
+      else if (!strcmp(bufp, "threads"))
       {
          print_threads(ff);
       }
-      else if (!strcmp(buf, "terminate"))
+      else if (!strcmp(bufp, "terminate"))
       {
          log_msg(LOG_INFO, "terminate request from control port");
          kill(getpid(), SIGINT);
       }
-      else if (!strcmp(buf, "route"))
+      else if (!strcmp(bufp, "route"))
       {
          if (rlen > 6)
          {
-            if ((c = parse_route(&buf[6])) == E_RT_SYNTAX)
-               if ((c = ipv6_parse_route(&buf[6])) > 0)
+            if ((c = parse_route(bufp + 6)) == E_RT_SYNTAX)
+               if ((c = ipv6_parse_route(bufp + 6)) > 0)
                   c = 0;
             switch (c)
             {
@@ -223,12 +223,12 @@ void *ctrl_handler(void *p)
             ipv6_print_routes(fo);
          }
       }
-      else if (!strcmp(buf, "connect"))
+      else if (!strcmp(bufp, "connect"))
       {
          if ((s = strtok_r(NULL, " \t\r\n", &tokbuf)))
          {
             if ((strlen(s) != 16) || (oniontipv6(s, &in6) == -1))
-               fprintf(ff, "ERR \"%s\" not valid .onion-URL\n", &buf[8]);
+               fprintf(ff, "ERR \"%s\" not valid .onion-URL\n", bufp + 8);
             else
             {
                if (!(s = strtok_r(NULL, " \t\r\n", &tokbuf)))
@@ -242,11 +242,11 @@ void *ctrl_handler(void *p)
          else
             fprintf(ff, "ERR missing args\n");
       }
-      else if (!strcmp(buf, "macs"))
+      else if (!strcmp(bufp, "macs"))
       {
          print_mac_tbl(ff);
       }
-      else if (!strcmp(buf, "queue"))
+      else if (!strcmp(bufp, "queue"))
       {
          print_socks_queue((FILE*) (long) pfd[1]);
          for (;;)
@@ -257,15 +257,15 @@ void *ctrl_handler(void *p)
             fprintf(ff, "%c", buf[0]);
          }
       }
-      else if (!strcmp(buf, "setup"))
+      else if (!strcmp(bufp, "setup"))
       {
          print_setup_struct(ff);
       }
-      else if (!strcmp(buf, "version"))
+      else if (!strcmp(bufp, "version"))
       {
          fprintf(ff, "%s\n", CNF(version));
       }
-      else if (!strcmp(buf, "help") || !strcmp(buf, "?"))
+      else if (!strcmp(bufp, "help") || !strcmp(bufp, "?"))
       {
          fprintf(fo,
                "commands:\n"
diff --git a/src/ocatsetup.c b/src/ocatsetup.c
index 90286c0..a632e8a 100644
--- a/src/ocatsetup.c
+++ b/src/ocatsetup.c
@@ -56,7 +56,8 @@ struct OcatSetup setup_ =
    0, 
    //ADDR4_PREFIX, ADDR4_MASK
    {0}, 0,
-   NULL, 1,
+   // config_file, config_read, config_failed
+   NULL, 0, 0,
 #ifdef __CYGWIN__
    1,
 #else
@@ -147,11 +148,18 @@ void init_setup(void)
 
 void post_init_setup(void)
 {
+   size_t l;
    setup_.ocat_addr4 = NDESC(prefix4);
    setup_.ocat_addr4_mask = NDESC(addr4_mask);
    setup_.ocat_dest_port = NDESC(vdest_port);
    setup_.ocat_ctrl_port = NDESC(ctrl_port);
 
+   l = strlen(SYSCONFDIR) + strlen(NDESC(config_file)) + 2;
+   if ((setup_.config_file = malloc(l)) != NULL)
+      snprintf(setup_.config_file, l, "%s/%s", SYSCONFDIR, NDESC(config_file));
+   else
+      log_msg(LOG_WARNING, "could not get memory for config file string: \"%s\"", strerror(errno));
+
    if (!setup_.socks_dst->sin_port)
       setup_.socks_dst->sin_port = htons(NDESC(socks_port));
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-privacy/packages/onioncat.git



More information about the Pkg-privacy-commits mailing list