char a;
int fd;
char *filename = NULL;
+ char *IconDir = NULL;
struct stat statbuf;
const char *Err;
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':
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;
}