From: Wilfried Göesgens Date: Fri, 8 Feb 2008 21:42:33 +0000 (+0000) Subject: (no commit message) X-Git-Tag: v7.86~2508 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=5f71f867cba5865e2b359009c5dc60adbefc7762 --- diff --git a/libcitadel/configure.in b/libcitadel/configure.in index 9e27abe6a..532b35b87 100755 --- a/libcitadel/configure.in +++ b/libcitadel/configure.in @@ -5,7 +5,7 @@ dnl dnl Ensure that libcitadel is configured with autoconf 2.52 or newer AC_PREREQ(2.52) -AC_INIT(libcitadel, 1.03, example@example.com) +AC_INIT(libcitadel, 1.03, https://uncensored.citadel.org) AC_CONFIG_SRCDIR(Makefile.in) AC_CONFIG_AUX_DIR(conftools) diff --git a/libcitadel/debian/rules b/libcitadel/debian/rules index 8cb082d47..2219e78da 100755 --- a/libcitadel/debian/rules +++ b/libcitadel/debian/rules @@ -11,10 +11,10 @@ DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) CFLAGS = -Wall -g -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 +ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 -ggdb -rdynamic -MD -MP else - CFLAGS += -O2 -fno-strict-aliasing + CFLAGS += -O2 endif build: build-stamp diff --git a/libcitadel/lib/libcitadel.h b/libcitadel/lib/libcitadel.h index 73813738d..edd37fb4c 100644 --- a/libcitadel/lib/libcitadel.h +++ b/libcitadel/lib/libcitadel.h @@ -4,7 +4,7 @@ */ -#define LIBCITADEL_VERSION_NUMBER 103 +#define LIBCITADEL_VERSION_NUMBER 104 /* * Here's a bunch of stupid magic to make the MIME parser portable. @@ -168,6 +168,8 @@ void the_mime_parser(char *partnum, int dont_decode ); +const char *GuessMimeType(char *data, size_t dlen); + /* tools */ diff --git a/libcitadel/lib/mime_parser.c b/libcitadel/lib/mime_parser.c index 2b14d7129..a7753275a 100644 --- a/libcitadel/lib/mime_parser.c +++ b/libcitadel/lib/mime_parser.c @@ -637,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; + +}