Add test for looking up the icon for a specific mimetype.
authorWilfried Goesgens <dothebart@citadel.org>
Sun, 5 Dec 2010 14:43:46 +0000 (15:43 +0100)
committerWilfried Goesgens <dothebart@citadel.org>
Sun, 5 Dec 2010 14:43:46 +0000 (15:43 +0100)
libcitadel/tests/mime_xdg_lookup_type.c

index 589f3fd95c74ced6e1c7e754716b907061bb7d5c..f85f47654de7cf076c787dd3532997b24b911eea 100644 (file)
@@ -20,6 +20,7 @@ int main(int argc, char* argv[])
        char a;
        int fd;
        char *filename = NULL;
+       char *IconDir = NULL;
        struct stat statbuf;
        const char *Err;
 
@@ -27,11 +28,14 @@ int main(int argc, char* argv[])
        long MimeLen;
        char *MimeStr;
        int by_extension = 0;
+       const char *GuessedMimeType;
+       const char *GuessedMimeIcon;
+       char MimeTypeStr[SIZ];
 
        setvbuf(stdout, NULL, _IONBF, 0);
 
 
-       while ((a = getopt(argc, argv, "xf:")) != EOF)
+       while ((a = getopt(argc, argv, "xf:i:")) != EOF)
        {
                switch (a) {
                case 'x':
@@ -40,40 +44,71 @@ int main(int argc, char* argv[])
                case 'f':
                        filename = optarg;
                        break;
+               case 'i':
+                       IconDir = optarg;
+                       break;
                }
        }
        StartLibCitadel(8);
 
+       if (IconDir != NULL)
+               LoadIconDir(IconDir);
+
        if (filename == NULL) {
+               ShutDownLibCitadel();
                printf("Filename requried! -f\n");
                return 1;
        }
 
        if (by_extension) {
-               printf("Mimetype: %s\n", GuessMimeByFilename(filename, strlen(filename)));
+               GuessedMimeType = GuessMimeByFilename(filename, strlen(filename));
+               printf("Mimetype: %s\n", GuessedMimeType);
+               if (IconDir != NULL) {
+                       strcpy(MimeTypeStr, GuessedMimeType);
+                       GuessedMimeIcon = GetIconFilename(MimeTypeStr, strlen(MimeTypeStr));
+                       if (GuessedMimeIcon != NULL)
+                               printf("Associated Icon [%s]\n", GuessedMimeIcon);
+                       else 
+                               printf("no icon associated.\n");
+               }
+               ShutDownLibCitadel();
                return 0;
        }
 
        fd = open(filename, 0);
        if (fd < 0) {
                printf("Error opening file [%s] %d [%s]\n", filename, errno, strerror(errno));
+               ShutDownLibCitadel();
                return 1;
        }
        if (fstat(fd, &statbuf) == -1) {
                printf("Error stating file [%s] %d [%s]\n", filename, errno, strerror(errno));
+               ShutDownLibCitadel();
                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);
+               ShutDownLibCitadel();
                return 1;
        }
        MimeLen = StrLength(MimeBuf);
        MimeStr = SmashStrBuf(&MimeBuf);
+       GuessedMimeType = GuessMimeType(MimeStr, MimeLen);
+
+       printf("Mimetype: %s\n", GuessedMimeType);
+       if (IconDir != NULL) {
+               strcpy(MimeTypeStr, GuessedMimeType);
+               GuessedMimeIcon = GetIconFilename(MimeTypeStr, strlen(MimeTypeStr));
+               if (GuessedMimeIcon != NULL)
+                       printf("Associated Icon [%s]\n", GuessedMimeIcon);
+               else 
+                       printf("no icon associated.\n");
+       }
 
-       printf("Mimetype: %s\n", GuessMimeType(MimeStr, MimeLen));
 
        free(MimeStr);
+       ShutDownLibCitadel();
        return 0;
 }