From: Wilfried Göesgens Date: Thu, 10 Sep 2009 21:27:55 +0000 (+0000) Subject: * use SmashStrBuf where apropriate X-Git-Tag: v7.86~853 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=f9c270e0e7ec5f05da921060ac4d305bdeb07ae6 * use SmashStrBuf where apropriate * fix compiler warnings * add functions missing in their headers --- diff --git a/webcit/calendar.h b/webcit/calendar.h index 2b31518c6..09c54f2fd 100644 --- a/webcit/calendar.h +++ b/webcit/calendar.h @@ -47,6 +47,7 @@ int calendar_GetParamsGetServerCall(SharedMessageStatus *Stat, char *cmd, long len); +int calendar_Cleanup(void **ViewSpecific); void render_calendar_view(calview *c); void display_edit_individual_event(icalcomponent *supplied_vtodo, long msgnum, char *from, diff --git a/webcit/groupdav.h b/webcit/groupdav.h index 0fc790665..fdeed3cf4 100644 --- a/webcit/groupdav.h +++ b/webcit/groupdav.h @@ -14,6 +14,7 @@ struct epdata { void groupdav_common_headers(void); +void groupdav_main(void); void groupdav_get(void); void groupdav_put(void); void groupdav_delete(void); diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c index f360ca3e6..5e88b9172 100644 --- a/webcit/msg_renderers.c +++ b/webcit/msg_renderers.c @@ -509,9 +509,12 @@ void render_MIME_VNote(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundC if (StrLength(Mime->Data) > 0) { struct vnote *v; StrBuf *Buf; + char *vcard; Buf = NewStrBuf(); - v = vnote_new_from_str(ChrPtr(Mime->Data)); + vcard = SmashStrBuf(&Mime->Data); + v = vnote_new_from_str(vcard); + free (vcard); if (v) { WCTemplputParams TP; @@ -522,12 +525,10 @@ void render_MIME_VNote(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundC Buf, &TP); vnote_free(v); - - FreeStrBuf(&Mime->Data); Mime->Data = Buf; } else - FlushStrBuf(Mime->Data); + Mime->Data = NewStrBuf(); } } diff --git a/webcit/notes.c b/webcit/notes.c index d9a50bc68..fe75c32b5 100644 --- a/webcit/notes.c +++ b/webcit/notes.c @@ -131,7 +131,7 @@ struct vnote *vnote_new_from_msg(long msgnum,int unread) if (StrLength(Data) > 0) { if (IsEmptyStr(uid_from_headers)) { - // Convert an old-style note to a vNote + /* Convert an old-style note to a vNote */ vnote_from_body = vnote_new(); vnote_from_body->uid = strdup(uid_from_headers); vnote_from_body->color_red = pastel_palette[3][0]; @@ -144,8 +144,10 @@ struct vnote *vnote_new_from_msg(long msgnum,int unread) return vnote_from_body; } else { - struct vnote *v = vnote_new_from_str(ChrPtr(Data)); - FreeStrBuf(&Data); + char *Buf = SmashStrBuf(&Data); + + struct vnote *v = vnote_new_from_str(Buf); + free(Buf); return(v); } } @@ -216,7 +218,6 @@ void ajax_update_note(void) { return; } - // lprintf(9, "Note UID = %s\n", bstr("note_uid")); serv_printf("EUID %s", bstr("note_uid")); serv_getln(buf, sizeof buf); if (buf[0] != '2') { @@ -226,9 +227,8 @@ void ajax_update_note(void) { return; } msgnum = atol(&buf[4]); - // lprintf(9, "Note msg = %ld\n", msgnum); - - // Was this request a delete operation? If so, nuke it... + + /* Was this request a delete operation? If so, nuke it... */ if (havebstr("deletenote")) { if (!strcasecmp(bstr("deletenote"), "yes")) { serv_printf("DELE %d", msgnum); @@ -240,7 +240,7 @@ void ajax_update_note(void) { } } - // If we get to this point it's an update, not a delete + /* If we get to this point it's an update, not a delete */ v = vnote_new_from_msg(msgnum, 0); if (!v) { begin_ajax_response(); @@ -271,7 +271,7 @@ void ajax_update_note(void) { if (havebstr("blue")) { v->color_blue = atoi(bstr("blue")); } - if (havebstr("value")) { // I would have preferred 'body' but InPlaceEditor hardcodes 'value' + if (havebstr("value")) { /* I would have preferred 'body' but InPlaceEditor hardcodes 'value' */ if (v->body) free(v->body); v->body = strdup(bstr("value")); } diff --git a/webcit/vcard_edit.c b/webcit/vcard_edit.c index 860ae1a93..248881d11 100644 --- a/webcit/vcard_edit.c +++ b/webcit/vcard_edit.c @@ -701,7 +701,7 @@ void do_addrbook_view(addrbookent *addrbook, int num_ab) { void do_edit_vcard(long msgnum, char *partnum, message_summary *VCMsg, wc_mime_attachment *VCAtt, - char *return_to, + const char *return_to, const char *force_room) { message_summary *Msg = NULL; wc_mime_attachment *VCMime = NULL; diff --git a/webcit/webcit.c b/webcit/webcit.c index 391370bca..57e3b18e3 100644 --- a/webcit/webcit.c +++ b/webcit/webcit.c @@ -272,41 +272,6 @@ void http_transmit_thing(const char *content_type, end_burst(); } -/* - * print menu box like used in the floor view or admin interface. - * This function takes pair of strings as va_args, - * Title Title string of the box - * Class CSS Class for the box - * nLines How many string pairs should we print? (URL, UrlText) - * ... Pairs of URL Strings and their Names - */ -void print_menu_box(char* Title, char *Class, int nLines, ...) -{ - va_list arg_list; - long i; - - svput("BOXTITLE", WCS_STRING, Title); - do_template("beginboxx", NULL); - - wprintf(""); - - do_template("endbox", NULL); -} - - /* * Convenience functions to display a page containing only a string @@ -546,10 +511,12 @@ void ReadPostData(void) StrBufCutLeft(content, body_start); ParseURLParams(content); } else if (!strncasecmp(ChrPtr(WCC->Hdr->HR.ContentType), "multipart", 9)) { - content_end = ChrPtr(content) + - WCC->Hdr->HR.ContentLength + - body_start; - mime_parser(ChrPtr(content), content_end, *upload_handler, NULL, NULL, NULL, 0); + char *Buf; + char *BufEnd; + Buf = SmashStrBuf(&content); + content_end = Buf + WCC->Hdr->HR.ContentLength + body_start; + mime_parser(Buf, BufEnd, *upload_handler, NULL, NULL, NULL, 0); + free(Buf); } else if (WCC->Hdr->HR.ContentLength > 0) { WCC->upload = content; content = NULL; @@ -558,6 +525,30 @@ void ReadPostData(void) } +void ParseREST_URL(void) +{ + StrBuf *Buf; + wcsession *WCC = WC; + long i = 0; + const char *pCh = NULL; + + WCC->Directory = NewHash(1, Flathash); + + Buf = NewStrBuf(); + while (StrBufExtract_NextToken(WCC->Hdr->HR.ReqLine, + Buf, &pCh, '/') >= 0) + { + Put(WCC->Directory, IKEY(i), Buf, HFreeStrBuf); + i++; + Buf = NewStrBuf(); + } + if (i == 0) + FreeStrBuf(&Buf); +} + + + + /* * Entry point for WebCit transaction */ @@ -686,6 +677,10 @@ void session_loop(void) display_login(NULL); } else { +/* + if ((WCC->Hdr->HR.Handler->Flags & PARSE_REST_URL) != 0) + ParseREST_URL(); +*/ if ((WCC->Hdr->HR.Handler->Flags & AJAX) != 0) begin_ajax_response(); WCC->Hdr->HR.Handler->F(); diff --git a/webcit/webcit.h b/webcit/webcit.h index a1bef23f2..47dcaac38 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -313,7 +313,7 @@ typedef struct _addrbookent { #define COOKIEUNNEEDED (1<<6) #define ISSTATIC (1<<7) #define FORCE_SESSIONCLOSE (1<<8) - +#define PARSE_REST_URL (1<<0) typedef void (*WebcitHandlerFunc)(void); typedef struct _WebcitHandler{ @@ -444,6 +444,7 @@ struct wcsession { StrBuf *trailing_javascript; /**< extra javascript to be appended to page */ char ImportantMessage[SIZ]; /**< ??? todo */ StrBuf *ImportantMsg; + HashList *Directory; /**< Parts of the directory URL in snippets */ /* accounting */ StrBuf *wc_username; /**< login name of current user */ @@ -615,10 +616,6 @@ void FmOut(StrBuf *Target, char *align, StrBuf *Source); void pullquote_fmout(void); void wDumpContent(int); -int Flathash(const char *str, long len); - - - void UrlescPutStrBuf(const StrBuf *strbuf); @@ -640,7 +637,6 @@ void wprintf(const char *format,...)__attribute__((__format__(__printf__,1,2))); void hprintf(const char *format,...)__attribute__((__format__(__printf__,1,2))); void output_static(const char* What); -void print_menu_box(char* Title, char *Class, int nLines, ...); long stresc(char *target, long tSize, char *strbuf, int nbsp, int nolinebreaks); void escputs(const char *strbuf); void url(char *buf, size_t bufsize); @@ -708,7 +704,7 @@ int pattern2(char *search, char *patn); void do_edit_vcard(long msgnum, char *partnum, message_summary *VCMsg, wc_mime_attachment *VCAtt, - char *return_to, + const char *return_to, const char *force_room); void select_user_to_edit(const char *preselect);