}
}
-
-
-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,
- ""
- }
-};
-
-
-
/**
* \brief When the browser requests an image file from the Citadel server,
* this function is called to transmit it.
char buf[SIZ];
char *xferbuf = NULL;
off_t bytes;
- int MimeIndex = 0;
+ const char *MimeType;
serv_printf("OIMG %s|%s", bstr("name"), bstr("parm"));
serv_getln(buf, sizeof buf);
serv_puts("CLOS");
serv_getln(buf, sizeof buf);
- while (MyMimes[MimeIndex].PatternLen != 0)
- {
- if (strncmp(MyMimes[MimeIndex].Pattern,
- &xferbuf[MyMimes[MimeIndex].PatternOffset],
- MyMimes[MimeIndex].PatternLen) == 0)
- break;
- MimeIndex ++;
- }
-
+ MimeType = GuessMimeType (xferbuf, bytes);
/** Write it to the browser */
- if (MyMimes[MimeIndex].PatternLen != 0)
+ if (!IsEmptyStr(MimeType))
{
http_transmit_thing(xferbuf,
(size_t)bytes,
- MyMimes[MimeIndex].MimeString,
+ MimeType,
0);
free(xferbuf);
return;
#define CLIENT_ID 4
#define CLIENT_VERSION 730 /* This version of WebCit */
#define MINIMUM_CIT_VERSION 730 /* min required Citadel ver */
-#define LIBCITADEL_MIN 103 /* min required libcitadel ver */
+#define LIBCITADEL_MIN 104 /* min required libcitadel ver */
#define DEFAULT_HOST "localhost" /* Default Citadel server */
#define DEFAULT_PORT "504"
#define LB (1) /* Internal escape chars */