Add missing files
authorwerner <werner>
Fri, 17 Apr 2009 15:01:55 +0000 (15:01 +0000)
committerwerner <werner>
Fri, 17 Apr 2009 15:01:55 +0000 (15:01 +0000)
ChangeLog
gpg4win-stats [new file with mode: 0755]
rfc822parse.c
scrutmime.c
undump.c [new file with mode: 0644]

index 015aed5..ef8dbbf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-11-21  Werner Koch  <wk@g10code.com>
+
+       * scrutmime.c (message_cb): Don't exit for HTML but my name in the
+       To field.
+
+2006-09-25  Werner Koch  <wk@g10code.com>
+
+       * mkdiff: Don't diff po files.
+
 2005-03-15  Werner Koch  <wk@g10code.de>
 
        * mkdiff: Changed to use bzip2
diff --git a/gpg4win-stats b/gpg4win-stats
new file mode 100755 (executable)
index 0000000..5e42044
--- /dev/null
@@ -0,0 +1,65 @@
+#!/bin/sh
+# Count number of gpg4win downloads.
+# usage: gpg4win-stats 1.0.1
+#  Replace 1.0.2 by the real version number
+
+set -e 
+ver="$1"
+
+cd /var/log
+
+( zcat ftp.log.{9,8,7,6,5,4,3,2,1}.gz 2>/dev/null ; 
+  cat ftp.log{.0,} 2>/dev/null ) \
+ | awk -v ver="$ver" '
+BEGIN { sum_std = 0; sum_light = 0; sum_src = 0
+        sum_std_s = 0; sum_light_s = 0; sum_src_s = 0  }
+
+$9 != "retrieved" { next }
+
+$10 == "\"/gpg4win/gpg4win-" ver ".exe\","       { sum_std++ }
+$10 == "\"/gpg4win/gpg4win-light-" ver ".exe\"," { sum_light++ }
+$10 == "\"/gpg4win/gpg4win-src-" ver ".exe\","   { sum_src++ }
+$10 == "\"/gpg4win/gpg4win-" ver ".exe.sig\","       { sum_std_s++ }
+$10 == "\"/gpg4win/gpg4win-light-" ver ".exe.sig\"," { sum_light_s++ }
+$10 == "\"/gpg4win/gpg4win-src-" ver ".exe.sig\","   { sum_src_s++ }
+
+first_date == "" { first_date = $1 " " $2 }
+                 { last_date = $1 " " $2 }
+
+END {
+      print "FTP downloads from [" first_date "] to [" last_date "]"
+      print "gpg4win-" ver ".exe:       " sum_std "  (" sum_std_s ")"
+      print "gpg4win-light-" ver ".exe: " sum_light "  (" sum_light_s ")"
+      print "gpg4win-src-" ver ".exe:   " sum_src "  (" sum_src_s ")"
+    }
+'
+
+cd boa
+
+( zcat access_log.{9,8,7,6,5,4,3,2,1}.gz 2>/dev/null; 
+  cat access_log{.0,} 2>/dev/null ) \
+ | awk -v ver="$ver" '
+BEGIN { sum_std = 0; sum_light = 0; sum_src = 0 
+        sum_std_s = 0; sum_light_s = 0; sum_src_s = 0  }
+
+$7 != "\"GET" { next }
+$10 != 200    { next}
+
+$8 == "/gpg4win-" ver ".exe"       { sum_std++ }
+$8 == "/gpg4win-light-" ver ".exe" { sum_light++ }
+$8 == "/gpg4win-src-" ver ".exe"   { sum_src++ }
+$8 == "/gpg4win-" ver ".exe.sig"        { sum_std_s++ }
+$8 == "/gpg4win-light-" ver ".exe.sig"  { sum_light_s++ }
+$8 == "/gpg4win-src-" ver ".exe.sig"    { sum_src_s++ }
+
+first_date == "" { first_date = $5 }
+                 { last_date = $5 }
+
+END {
+      print "HTTP downloads from " first_date "] to " last_date "]"
+      print "gpg4win-" ver ".exe:       " sum_std "  (" sum_std_s ")"
+      print "gpg4win-light-" ver ".exe: " sum_light "  (" sum_light_s ")"
+      print "gpg4win-src-" ver ".exe:   " sum_src "  (" sum_src_s ")"
+    }
+'
+
index 3379886..dd0cc7c 100644 (file)
@@ -766,6 +766,7 @@ parse_field (HDR_LINE hdr)
   } tspecial_header[] = {
     { "Content-Type", 12},
     { "Content-Transfer-Encoding", 25},
+    { "Content-Disposition", 19},
     { NULL, 0}
   };
   const char *delimiters;
@@ -1249,6 +1250,6 @@ main (int argc, char **argv)
 
 /*
 Local Variables:
-compile-command: "gcc -Wall -g -DTESTING -o rfc822parse rfc822parse.c"
+compile-command: "gcc -Wall -Wno-pointer-sign -g -DTESTING -o rfc822parse rfc822parse.c"
 End:
 */
index 1df0c21..58c0fbe 100644 (file)
@@ -70,6 +70,8 @@ struct parse_info_s {
   int test_base64; /* Set if we should decode and test base64 data. */
   int got_probe;
   int no_mime;    /* Set if this is not a MIME message. */
+  int top_seen;
+  int wk_seen;
 };
 
 
@@ -319,7 +321,13 @@ message_cb (void *opaque, rfc822parse_event_t event, rfc822parse_t msg)
             info->mime_type = MT_IMAGE;
 
           if (verbose)
-            printf ("# Content-Type: %s/%s\n", s1?s1:"", s2?s2:"");
+            {
+              printf ("# Content-Type: %s/%s", s1?s1:"", s2?s2:"");
+              s1 = rfc822parse_query_parameter (ctx, "charset", 0);
+              if (s1)
+                printf ("; charset=%s", s1);
+              putchar ('\n');
+            }
 
           rfc822parse_release_field (ctx);
         }
@@ -332,6 +340,27 @@ message_cb (void *opaque, rfc822parse_event_t event, rfc822parse_t msg)
             info->no_mime = 1;
         }
 
+      if (verbose)
+        {
+          const char *s1;
+
+          p = rfc822parse_get_field (msg, "Content-Disposition", -1, NULL);
+          if (p)
+            {
+              printf ("# %s\n", p);
+              free (p);
+            }
+
+          ctx = rfc822parse_parse_field (msg, "Content-Disposition", -1);
+          if (ctx)
+            {
+              s1 = rfc822parse_query_parameter (ctx, "filename", 0);
+              if (s1)
+                printf ("# Content-Disposition has filename=`%s'\n", s1);
+              rfc822parse_release_field (ctx);
+            }
+        }
+
       p = rfc822parse_get_field (msg, "Content-Transfer-Encoding", -1, &off);
       if (p)
         {
@@ -341,6 +370,36 @@ message_cb (void *opaque, rfc822parse_event_t event, rfc822parse_t msg)
           free (p);
         }
 
+      if (!info->top_seen)
+        {
+          info->top_seen = 1;
+          p = rfc822parse_get_field (msg, "To", -1, NULL);
+          if (p)
+            {
+              if ( strstr (p, "Werner Koch") )
+                {
+                  if (verbose)
+                    fputs ("# Found known name in To\n", stdout);
+                  info->wk_seen = 1;
+                }
+              free (p);
+            }
+          if (!info->wk_seen)
+            {
+              p = rfc822parse_get_field (msg, "Cc", -1, NULL);
+              if (p)
+                {
+                  if ( strstr (p, "Werner Koch") )
+                    {
+                      if (verbose)
+                        fputs ("# Found known name in Cc\n", stdout);
+                      info->wk_seen = 1;
+                    }
+                  free (p);
+                }
+            }
+        }
+
       if ((info->mime_type == MT_OCTET_STREAM
            || info->mime_type == MT_AUDIO
            || info->mime_type == MT_IMAGE)
@@ -350,7 +409,7 @@ message_cb (void *opaque, rfc822parse_event_t event, rfc822parse_t msg)
         {
           if (!quiet)
             fputs ("HTML\n", stdout);
-          if (opt_match_html)
+          if (opt_match_html && !info->wk_seen)
             exit (0);
         }
 
@@ -617,6 +676,6 @@ main (int argc, char **argv)
 
 /*
 Local Variables:
-compile-command: "gcc -Wall -g -o scrutmime rfc822parse.c scrutmime.c"
+compile-command: "gcc -Wall -Wno-pointer-sign -g -o scrutmime rfc822parse.c scrutmime.c"
 End:
 */
diff --git a/undump.c b/undump.c
new file mode 100644 (file)
index 0000000..765356f
--- /dev/null
+++ b/undump.c
@@ -0,0 +1,83 @@
+/* undump - Hex undump tool
+ *     Copyright (C) 2000 Werner Koch (dd9jn)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define digitp(p)   ((p) >= '0' && (p) <= '9')
+#define hexdigitp(a) (digitp (a)                     \
+                      || ((a) >= 'A' && (a) <= 'F')  \
+                      || ((a) >= 'a' && (a) <= 'f'))
+#define ascii_isspace(a) ((a)==' ' || (a)=='\n' || (a)=='\r' || (a)=='\t')
+#define xtoi_1(p)   ((p) <= '9'? ((p)- '0'): \
+                     (p) <= 'F'? ((p)-'A'+10):((p)-'a'+10))
+
+
+
+
+int
+main (int argc, char **argv )
+{
+  int c1, c2;
+  unsigned int value;
+
+  if ( argc > 1 ) 
+    {
+      fprintf (stderr, "usage: undump < input\n");
+      return 1;
+    }
+    
+
+  while ( (c1=getchar ()) != EOF )
+    {
+      if (ascii_isspace (c1))
+        continue;
+      if (!hexdigitp (c1))
+        {
+          fprintf (stderr, "undump: non hex-digit encountered\n");
+          return 1;
+        }
+      if ( (c2=getchar ()) == EOF )
+        {
+          fprintf (stderr, "undump: error reading second nibble\n");
+          return 1;
+        }
+      if (!hexdigitp (c2))
+        {
+          fprintf (stderr, "undump: second nibble is not a hex-digit\n");
+          return 1;
+        }
+      value = xtoi_1 (c1) * 16 + xtoi_1 (c2);
+      putchar (value);
+    }
+  if (ferror (stdin))
+    {
+      fprintf (stderr, "undump: read error\n");
+      return 1;
+    }
+
+  return 0;
+}
+
+/*
+Local Variables:
+compile-command: "cc -Wall -o undump undump.c"
+End:
+*/
+
+