const StrBuf *Tmpl;
StrBuf *CmdBuf = NULL;
- msgnum = StrBufExtract_long(WCC->Hdr->ReqLine, 2, '/');
+ msgnum = StrBufExtract_long(WCC->Hdr->ReqLine, 0, '/');
switch (WCC->Hdr->eReqType)
{
case eGET:
long msgnum = 0L;
const StrBuf *Mime;
- msgnum = StrBufExtract_long(WC->Hdr->ReqLine, 2, '/');
+ msgnum = StrBufExtract_long(WC->Hdr->ReqLine, 0, '/');
output_headers(0, 0, 0, 0, 0, 0);
hprintf("Content-type: text/html\r\n"
long msgnum = 0L;
const StrBuf *Mime;
- msgnum = StrBufExtract_long(WC->Hdr->ReqLine, 2, '/');
+ msgnum = StrBufExtract_long(WC->Hdr->ReqLine, 0, '/');
output_headers(1, 0, 0, 0, 0, 1);
begin_burst();
do_template("msgcontrols", NULL);
long msgnum = 0L;
char buf[1024];
- msgnum = StrBufExtract_long(WC->Hdr->ReqLine, 2, '/');
+ msgnum = StrBufExtract_long(WC->Hdr->ReqLine, 0, '/');
output_headers(0, 0, 0, 0, 0, 0);
hprintf("Content-type: text/plain\r\n"
StrBuf *ContentType = NewStrBufPlain(HKEY("application/octet-stream"));
const char *CT;
- msgnum = StrBufExtract_long(WCC->Hdr->ReqLine, 2, '/');
- att = StrBufExtract_long(WCC->Hdr->ReqLine, 3, '/');
+ msgnum = StrBufExtract_long(WCC->Hdr->ReqLine, 0, '/');
+ att = StrBufExtract_long(WCC->Hdr->ReqLine, 1, '/');
Buf = NewStrBuf();
serv_printf("OPNA %ld|%ld", msgnum, att);
if (!force_download) {
if (!strcasecmp(ChrPtr(ContentType), "application/octet-stream")) {
- StrBufExtract_token(Buf, WCC->Hdr->ReqLine, 4, '/');
+ StrBufExtract_token(Buf, WCC->Hdr->ReqLine, 2, '/');
CT = GuessMimeByFilename(SKEY(Buf));
}
if (!strcasecmp(ChrPtr(ContentType), "application/octet-stream")) {
StrBuf *filename = NewStrBuf();
StrBuf *partnum = NewStrBuf();
- StrBufExtract_token(partnum, WC->Hdr->ReqLine, 2, '/');
- StrBufExtract_token(filename, WC->Hdr->ReqLine, 3, '/');
+ StrBufExtract_token(partnum, WC->Hdr->ReqLine, 0, '/');
+ StrBufExtract_token(filename, WC->Hdr->ReqLine, 1, '/');
postpart(partnum, filename, 0);
StrBuf *filename = NewStrBuf();
StrBuf *partnum = NewStrBuf();
- StrBufExtract_token(partnum, WC->Hdr->ReqLine, 2, '/');
- StrBufExtract_token(filename, WC->Hdr->ReqLine, 3, '/');
+ StrBufExtract_token(partnum, WC->Hdr->ReqLine, 0, '/');
+ StrBufExtract_token(filename, WC->Hdr->ReqLine, 1, '/');
postpart(partnum, filename, 1);
void tmplput_url_part(StrBuf *Target, WCTemplputParams *TP)
{
+ StrBuf *Name = NULL;
StrBuf *UrlBuf;
wcsession *WCC = WC;
if (WCC != NULL) {
if (TP->Tokens->Params[0]->lvalue == 0) {
UrlBuf = NewStrBuf();
- StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 1, '/');
+ if (WCC->Hdr->Handler != NULL)
+ UrlBuf = Name = WCC->Hdr->Handler->Name;
}
else if (TP->Tokens->Params[0]->lvalue == 1) {
UrlBuf = NewStrBuf();
- StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 2, '/');
+ StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 0, '/');
}
else {
UrlBuf = NewStrBuf();
- StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 3, '/');
+ StrBufExtract_token(UrlBuf, WCC->Hdr->ReqLine, 1, '/');
}
if (UrlBuf == NULL) {
LogTemplateError(Target, "urlbuf", ERR_PARM1, TP, "not set.");
}
StrBufAppendTemplate(Target, TP, UrlBuf, 2);
- FreeStrBuf(&UrlBuf);
+ if (Name == NULL) FreeStrBuf(&UrlBuf);
}
}
StrBuf *csslocal = NULL;
HashList *HandlerHash = NULL;
+
+void DeleteWebcitHandler(void *vHandler)
+{
+ WebcitHandler *Handler = (WebcitHandler*) vHandler;
+ FreeStrBuf(&Handler->Name);
+ free (Handler);
+
+}
+
void WebcitAddUrlHandler(const char * UrlString,
long UrlSLen,
WebcitHandlerFunc F,
NewHandler = (WebcitHandler*) malloc(sizeof(WebcitHandler));
NewHandler->F = F;
NewHandler->Flags = Flags;
- Put(HandlerHash, UrlString, UrlSLen, NewHandler, NULL);
+ NewHandler->Name = NewStrBufPlain(UrlString, UrlSLen);
+ Put(HandlerHash, UrlString, UrlSLen, NewHandler, DeleteWebcitHandler);
}