From f9c1a05d3f842a496aec4a1d69c44b456240b9ae Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Thu, 2 Dec 2010 01:11:41 +0100 Subject: [PATCH] Add test to call mime lookup algorithms --- libcitadel/tests/.gitignore | 1 + libcitadel/tests/Makefile.in | 11 +++- libcitadel/tests/mime_xdg_lookup_type.c | 79 +++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 libcitadel/tests/mime_xdg_lookup_type.c diff --git a/libcitadel/tests/.gitignore b/libcitadel/tests/.gitignore index 04f444e72..63237e89a 100644 --- a/libcitadel/tests/.gitignore +++ b/libcitadel/tests/.gitignore @@ -4,3 +4,4 @@ stringbuf_IO_test stringbuf_conversion_test stringbuf_test mimeparser_test +mime_xdg_lookup_test diff --git a/libcitadel/tests/Makefile.in b/libcitadel/tests/Makefile.in index 1c602c090..78570bf65 100644 --- a/libcitadel/tests/Makefile.in +++ b/libcitadel/tests/Makefile.in @@ -14,7 +14,7 @@ top_builddir=`pwd` # End of configuration section -TARGETS=stringbuf_test stringbuf_IO_test stringbuf_conversion_test hashlist_test mimeparser_test +TARGETS=stringbuf_test stringbuf_IO_test stringbuf_conversion_test hashlist_test mimeparser_test mime_xdg_lookup_test all: $(TARGETS) @@ -58,6 +58,15 @@ mimeparser_test: $(LIBOBJS) mimeparser_test.o ../.libs/libcitadel.a \ -o mimeparser_test + +mime_xdg_lookup_test: $(LIBOBJS) mime_xdg_lookup_type.o + $(CC) $(LDFLAGS) $(LIBOBJS) $(LIBS) \ + mime_xdg_lookup_type.o \ + ../.libs/libcitadel.a \ + -o mime_xdg_lookup_test + + + .c.o: $(CC) $(CFLAGS) $(DEFS) -c $< diff --git a/libcitadel/tests/mime_xdg_lookup_type.c b/libcitadel/tests/mime_xdg_lookup_type.c new file mode 100644 index 000000000..589f3fd95 --- /dev/null +++ b/libcitadel/tests/mime_xdg_lookup_type.c @@ -0,0 +1,79 @@ +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include + + +#include "../lib/libcitadel.h" + +int main(int argc, char* argv[]) +{ + char a; + int fd; + char *filename = NULL; + struct stat statbuf; + const char *Err; + + StrBuf *MimeBuf; + long MimeLen; + char *MimeStr; + int by_extension = 0; + + setvbuf(stdout, NULL, _IONBF, 0); + + + while ((a = getopt(argc, argv, "xf:")) != EOF) + { + switch (a) { + case 'x': + by_extension = 1; + break; + case 'f': + filename = optarg; + break; + } + } + StartLibCitadel(8); + + if (filename == NULL) { + printf("Filename requried! -f\n"); + return 1; + } + + if (by_extension) { + printf("Mimetype: %s\n", GuessMimeByFilename(filename, strlen(filename))); + return 0; + } + + fd = open(filename, 0); + if (fd < 0) { + printf("Error opening file [%s] %d [%s]\n", filename, errno, strerror(errno)); + return 1; + } + if (fstat(fd, &statbuf) == -1) { + printf("Error stating file [%s] %d [%s]\n", filename, errno, strerror(errno)); + return 1; + } + MimeBuf = NewStrBufPlain(NULL, statbuf.st_size + 1); + if (StrBufReadBLOB(MimeBuf, &fd, 1, statbuf.st_size, &Err) < 0) { + printf("Error reading file [%s] %d [%s] [%s]\n", filename, errno, strerror(errno), Err); + FreeStrBuf(&MimeBuf); + return 1; + } + MimeLen = StrLength(MimeBuf); + MimeStr = SmashStrBuf(&MimeBuf); + + printf("Mimetype: %s\n", GuessMimeType(MimeStr, MimeLen)); + + free(MimeStr); + return 0; +} -- 2.39.2