[Pkg-privacy-commits] [onioncat] 180/340: bugfix in socks_pipe_request() introduced fdprintf() in preparation for controller enhancement improved base32-decoding

Ximin Luo infinity0 at moszumanska.debian.org
Sat Aug 22 13:04:37 UTC 2015


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

infinity0 pushed a commit to branch debian
in repository onioncat.

commit f8c8c2385f0963348426edb576253620626688e9
Author: eagle <eagle at 58e1ccc2-750e-0410-8d0d-f93ca75ab447>
Date:   Mon May 11 13:15:23 2009 +0000

    bugfix in socks_pipe_request()
    introduced fdprintf() in preparation for controller enhancement
    improved base32-decoding
    
    
    git-svn-id: http://www.cypherpunk.at/svn/onioncat/trunk@500 58e1ccc2-750e-0410-8d0d-f93ca75ab447
---
 ChangeLog              |  1 +
 Makefile.in            |  4 ++--
 aclocal.m4             | 35 ++++++++++++++++++++++-------------
 configure              | 33 +++++++++++++++++++++------------
 man/Makefile.in        | 10 +++++-----
 src/Makefile.in        |  8 ++++----
 src/cygwin/Makefile.in |  8 ++++----
 src/ocat.c             |  2 +-
 src/ocat.h             |  1 +
 src/ocatlibe.c         | 43 ++++++++++++++++++++++++++++++++++++++++++-
 src/ocatroute.c        |  2 +-
 src/ocatsocks.c        |  2 +-
 src/ocatv6conv.c       | 21 ++++++++++++++++-----
 13 files changed, 121 insertions(+), 49 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5361afa..64ba3a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@
  - Windows branch merges into trunk
  - syslogging implemented
  - idle timeout increased to 3 mins
+ - base32 en/decoding speed improved
 
 * version 0.1.11
  - version tagged (this actually is 0.1.10-r472)
diff --git a/Makefile.in b/Makefile.in
index b37b583..c8aa30e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -310,7 +310,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/aclocal.m4 b/aclocal.m4
index 132e431..e846b7a 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 # 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
@@ -13,13 +13,13 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(AC_AUTOCONF_VERSION, [2.63],,
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
 [m4_warning([this file was generated for autoconf 2.63.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically `autoreconf'.])])
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -34,7 +34,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.10'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.10.1], [],
+m4_if([$1], [1.10.2], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -48,12 +48,12 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # AM_SET_CURRENT_AUTOMAKE_VERSION
 # -------------------------------
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10.1])dnl
+[AM_AUTOMAKE_VERSION([1.10.2])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
@@ -303,19 +303,28 @@ _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 3
+#serial 4
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
+[# Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file.  Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*)   set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
   # Strip MF so we end up with the name of the file.
   mf=`echo "$mf" | sed -e 's/:.*$//'`
   # Check whether this is an Automake generated Makefile or not.
@@ -647,13 +656,13 @@ esac
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
+# serial 4
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -670,7 +679,7 @@ AC_DEFUN([_AM_SET_OPTION],
 # ----------------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
 
 # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
 # -------------------------------------------
diff --git a/configure b/configure
index 3d6b616..edfca45 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.63 for onioncat 0.1.12.r497.
+# Generated by GNU Autoconf 2.63 for onioncat 0.1.12.r499.
 #
 # 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.1.12.r497'
-PACKAGE_STRING='onioncat 0.1.12.r497'
+PACKAGE_VERSION='0.1.12.r499'
+PACKAGE_STRING='onioncat 0.1.12.r499'
 PACKAGE_BUGREPORT='rahra at cypherpunk.at'
 
 ac_subst_vars='LTLIBOBJS
@@ -1249,7 +1249,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.1.12.r497 to adapt to many kinds of systems.
+\`configure' configures onioncat 0.1.12.r499 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1315,7 +1315,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of onioncat 0.1.12.r497:";;
+     short | recursive ) echo "Configuration of onioncat 0.1.12.r499:";;
    esac
   cat <<\_ACEOF
 
@@ -1407,7 +1407,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-onioncat configure 0.1.12.r497
+onioncat configure 0.1.12.r499
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1421,7 +1421,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.1.12.r497, which was
+It was created by onioncat $as_me 0.1.12.r499, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2137,7 +2137,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='onioncat'
- VERSION='0.1.12.r497'
+ VERSION='0.1.12.r499'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2284,7 +2284,7 @@ ac_config_headers="$ac_config_headers config.h"
 
 
 cat >>confdefs.h <<\_ACEOF
-#define SVN_REVISION "497"
+#define SVN_REVISION "499"
 _ACEOF
 
 
@@ -4803,7 +4803,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.1.12.r497, which was
+This file was extended by onioncat $as_me 0.1.12.r499, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -4866,7 +4866,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.1.12.r497
+onioncat config.status 0.1.12.r499
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -5649,7 +5649,16 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
 
   case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || # Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file.  Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*)   set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
   # Strip MF so we end up with the name of the file.
   mf=`echo "$mf" | sed -e 's/:.*$//'`
   # Check whether this is an Automake generated Makefile or not.
diff --git a/man/Makefile.in b/man/Makefile.in
index 8d5d53a..febe9e4 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -136,8 +136,8 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -172,8 +172,8 @@ install-man1: $(man1_MANS) $(man_MANS)
 	  esac; \
 	done; \
 	for i in $$list; do \
-	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-	  else file=$$i; fi; \
+	  if test -f $$i; then file=$$i; \
+	  else file=$(srcdir)/$$i; fi; \
 	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
 	  case "$$ext" in \
 	    1*) ;; \
diff --git a/src/Makefile.in b/src/Makefile.in
index c03b1b1..333c980 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -165,8 +165,8 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -277,7 +277,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/cygwin/Makefile.in b/src/cygwin/Makefile.in
index 19a2362..8d98264 100644
--- a/src/cygwin/Makefile.in
+++ b/src/cygwin/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -144,8 +144,8 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
@@ -192,7 +192,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
diff --git a/src/ocat.c b/src/ocat.c
index acecb6f..73d81df 100644
--- a/src/ocat.c
+++ b/src/ocat.c
@@ -1,4 +1,4 @@
-/* Copyright 2008 Bernhard R. Fischer, Daniel Haslinger.
+/* Copyright 2008,2009 Bernhard R. Fischer.
  *
  * This file is part of OnionCat.
  *
diff --git a/src/ocat.h b/src/ocat.h
index bd444d4..29b2ab0 100644
--- a/src/ocat.h
+++ b/src/ocat.h
@@ -598,6 +598,7 @@ int strsockaddr(const char *, struct sockaddr *);
 void add_local_listeners(void);
 void add_listener(const char *, const char *);
 void delete_listeners(struct sockaddr **, int *, int);
+int fdprintf(int, const char *, va_list);
 
 /* ocatipv6route.c */
 struct in6_addr *ipv6_lookup_route(const struct in6_addr *);
diff --git a/src/ocatlibe.c b/src/ocatlibe.c
index 33492c8..c3e9f72 100644
--- a/src/ocatlibe.c
+++ b/src/ocatlibe.c
@@ -1,4 +1,4 @@
-/* Copyright 2008 Bernhard R. Fischer, Daniel Haslinger.
+/* Copyright 2008,2009 Bernhard R. Fischer.
  *
  * This file is part of OnionCat.
  *
@@ -171,3 +171,44 @@ void delete_listeners(struct sockaddr **addr, int *fd, int cnt)
    free(fd);
 }
 
+
+int fdaprintf(int fd, int bsiz, const char *fmt, va_list ap)
+{
+   char buf[bsiz];
+   int s, e;
+
+   if ((s = vsnprintf(buf, bsiz, fmt, ap)) >= bsiz)
+   {
+      return fdaprintf(fd, s + 1, fmt, ap);
+   }
+   else if (s == -1)
+   {
+      e = errno;
+      log_msg(LOG_WARNING, "vnsprintf failed: \"%s\"", strerror(e));
+      errno = e;
+      return -1;
+   }
+
+   if ((s = write(fd, buf, s)) == -1)
+   {
+      e = errno;
+      log_msg(LOG_WARNING, "write failed: \"%s\"", strerror(e));
+      errno = e;
+      return -1;
+   }
+   return s;
+}
+
+
+/*! Output formatted string to file using with a file descriptor.
+ *  This function behaves like fprintf().
+ *  @param fd File descriptor of file.
+ *  @param fmt Format string.
+ *  @param ap Variable parameter list.
+ *  @return number of bytes written (not including '\0').
+ */
+int fdprintf(int fd, const char *fmt, va_list ap)
+{
+   return fdaprintf(fd, SIZE_256, fmt, ap);
+}
+
diff --git a/src/ocatroute.c b/src/ocatroute.c
index af4d37e..6d015dd 100644
--- a/src/ocatroute.c
+++ b/src/ocatroute.c
@@ -837,7 +837,7 @@ void packet_forwarder(void)
       // just to be on the safe side but this should never happen
       if ((!CNF(use_tap) && (rlen < 4)) || (CNF(use_tap) && (rlen < 4 + sizeof(struct ether_header))))
       {
-         log_msg(LOG_ERR, "frame effektively too short (rlen = %d)", rlen);
+         log_msg(LOG_ERR, "frame effectively too short (rlen = %d)", rlen);
          continue;
       }
 
diff --git a/src/ocatsocks.c b/src/ocatsocks.c
index c38c27f..5b23aca 100644
--- a/src/ocatsocks.c
+++ b/src/ocatsocks.c
@@ -143,7 +143,7 @@ void socks_pipe_request(const SocksQueue_t *sq)
       {
 
    log_debug("writing %d bytes to fd %d", len, CNF(socksfd[1]));
-   if ((ret = write(CNF(socksfd[1]), sq, len) == -1))
+   if ((ret = write(CNF(socksfd[1]), sq, len)) == -1)
    {
       log_msg(LOG_WARNING, "error writing to SOCKS request pipe fd %d: \"%s\"", CNF(socksfd[1]), strerror(errno));
    }
diff --git a/src/ocatv6conv.c b/src/ocatv6conv.c
index ba9ee2f..d6960aa 100644
--- a/src/ocatv6conv.c
+++ b/src/ocatv6conv.c
@@ -1,4 +1,4 @@
-/* Copyright 2008 Bernhard R. Fischer, Daniel Haslinger.
+/* Copyright 2008,2009 Bernhard R. Fischer.
  *
  * This file is part of OnionCat.
  *
@@ -28,6 +28,17 @@
 #include "ocat.h"
 
 static const char BASE32[] = "abcdefghijklmnopqrstuvwxyz234567";
+//! array contains inverse mapping of base32 starting with '2'.
+static const char deBASE32_[] = {
+   /*          2   3   4   5   6   7   8   9   
+              32  33  34  35  36  37  38  39  3a  3b  3c  3d  3e  3f */
+              26, 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1,
+   /*      A   B   C   D   E   F   G   H   I   J   K   L   M   N   O 
+      40  41  42  43  44  45  46  47  48  49  4a  4b  4c  4d  4e  4f */
+      -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 
+   /*  P   Q   R   S   T   U   V   W   X   Y   Z
+      50  51  52  53  54  55  56  57  58  59  5a */
+      15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 };  
 static const struct in6_addr tor_prefix_ = TOR_PREFIX;
 
 
@@ -69,10 +80,10 @@ int oniontipv6(const char *onion, struct in6_addr *ip6)
    for (i = 0; i < 16; i++)
    {
       shl5((char*) ip6);
-      for (j = 0; j < 32; j++)
-         if (tolower(onion[i]) == BASE32[j])
-            break;
-      if (j == 32)
+      j = toupper(onion[i]);
+      if ((j < '2') || (j > 'Z'))
+         return -1;
+      if ((j = deBASE32_[j - '2']) == -1)
          return -1;
       *(((char*) ip6) + 15) |= j;
    }

-- 
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