Fix gpg-preset-passphrase bug.
[gnupg.git] / tools / rfc822parse.c
index 3379886..8fbe3c2 100644 (file)
@@ -3,31 +3,29 @@
  *      Copyright (C) 2003, 2004 g10 Code GmbH
  *
  * 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 is distributed in the hope that it will be useful,
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 3 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
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 
-/* According to RFC822 binary 0 are allowed at many places. We
- * do not handle this correct especially in the field parsing code.  It
- * should be easy to fix and the API provides a interfcaes which returns
- * the length but in addition makes sure that returned strings are always
- * ended by a \0.  
+/* According to RFC822 binary zeroes are allowed at many places. We do
+ * not handle this correct especially in the field parsing code.  It
+ * should be easy to fix and the API provides a interfaces which
+ * returns the length but in addition makes sure that returned strings
+ * are always ended by a \0.
  *
  * Furthermore, the case of field names is changed and thus it is not
  * always a good idea to use these modified header
  * lines (e.g. signatures may break).
- * 
  */
 
 #ifdef HAVE_CONFIG_H
 #include "rfc822parse.h"
 
 enum token_type
-{
-  tSPACE,
-  tATOM,
-  tQUOTED,
-  tDOMAINLIT,
-  tSPECIAL
-};
+  {
+    tSPACE,
+    tATOM,
+    tQUOTED,
+    tDOMAINLIT,
+    tSPECIAL
+  };
 
 /* For now we directly use our TOKEN as the parse context */
 typedef struct rfc822parse_field_context *TOKEN;
@@ -155,7 +153,7 @@ capitalize_header_name (unsigned char *name)
       *name = *name - 'A' + 'a';
 }
 
-
+#ifndef HAVE_STPCPY
 static char *
 stpcpy (char *a,const char *b)
 {
@@ -165,6 +163,7 @@ stpcpy (char *a,const char *b)
   
   return (char*)a;
 }
+#endif
 
 
 /* If a callback has been registerd, call it for the event of type
@@ -474,7 +473,7 @@ insert_body (rfc822parse_t msg, const unsigned char *line, size_t length)
           msg->boundary = NULL; /* No current boundary anymore. */
           set_current_part_to_parent (msg);
 
-          /* Fixme: The next should acctually be sent right before the
+          /* Fixme: The next should actually be send right before the
              next boundary, so that we can mark the epilogue. */
           if (!rc)
             rc = do_callback (msg, RFC822PARSE_LEVEL_UP);
@@ -523,7 +522,8 @@ rfc822parse_finish (rfc822parse_t msg)
  * available.
  * 
  * If VALUEOFF is not NULL it will receive the offset of the first non
- * space character in th value of the line.
+ * space character in the value part of the line (i.e. after the first
+ * colon).
  */
 char *
 rfc822parse_get_field (rfc822parse_t msg, const char *name, int which,
@@ -758,7 +758,8 @@ parse_field (HDR_LINE hdr)
   static const char specials[] = "<>@.,;:\\[]\"()";
   static const char specials2[] = "<>@.,;:";
   static const char tspecials[] = "/?=<>@,;:\\[]\"()";
-  static const char tspecials2[] = "/?=<>@.,;:";
+  static const char tspecials2[] = "/?=<>@.,;:";  /* FIXME: really
+                                                     include '.'?*/
   static struct 
   {
     const unsigned char *name;
@@ -766,6 +767,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 +1251,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:
 */