]> code.citadel.org Git - citadel.git/blobdiff - libcitadel/lib/mime_parser.c
(no commit message)
[citadel.git] / libcitadel / lib / mime_parser.c
index 33fc854f74d55084d23b59464eb69fa3e5ee05b2..a7753275afc1ac67928a3fe9802a8ee003e50ed7 100644 (file)
@@ -3,7 +3,7 @@
  *
  * This is the MIME parser for Citadel.
  *
- * Copyright (c) 1998-2007 by Art Cancro
+ * Copyright (c) 1998-2007 by the citadel.org development team.
  * This code is distributed under the GNU General Public License v3.
  *
  */
@@ -20,7 +20,6 @@
 
 #include "libcitadel.h"
 
-
 void extract_key(char *target, char *source, char *key)
 {
        char *ptr;
@@ -638,3 +637,63 @@ void mime_parser(char *content_start,
                        PostMultiPartCallBack,
                        userdata, dont_decode);
 }
+
+
+
+
+
+
+typedef struct _MimeGuess {
+       const char *Pattern;
+       size_t PatternLen;
+       long PatternOffset;
+       const char *MimeString;
+} MimeGuess;
+
+MimeGuess MyMimes [] = {
+       {
+               "GIF",
+               3,
+               0,
+               "image/gif"
+       },
+       {
+               "\xff\xd8",
+               2,
+               0,
+               "image/jpeg"
+       },
+       {
+               "\x89PNG",
+               4,
+               0,
+               "image/png"
+       },
+       { // last...
+               "",
+               0,
+               0,
+               ""
+       }
+};
+
+
+const char *GuessMimeType(char *data, size_t dlen)
+{
+       int MimeIndex = 0;
+
+       while (MyMimes[MimeIndex].PatternLen != 0)
+       {
+               if ((MyMimes[MimeIndex].PatternLen + 
+                    MyMimes[MimeIndex].PatternOffset < dlen) &&
+                   strncmp(MyMimes[MimeIndex].Pattern, 
+                           &data[MyMimes[MimeIndex].PatternOffset], 
+                           MyMimes[MimeIndex].PatternLen) == 0)
+               {
+                       break;
+               }
+               MimeIndex ++;
+       }
+       return MyMimes[MimeIndex].MimeString;
+
+}