* use SmashStrBuf where apropriate
authorWilfried Göesgens <willi@citadel.org>
Thu, 10 Sep 2009 21:27:55 +0000 (21:27 +0000)
committerWilfried Göesgens <willi@citadel.org>
Thu, 10 Sep 2009 21:27:55 +0000 (21:27 +0000)
* fix compiler warnings
* add functions missing in their headers

webcit/calendar.h
webcit/groupdav.h
webcit/msg_renderers.c
webcit/notes.c
webcit/vcard_edit.c
webcit/webcit.c
webcit/webcit.h

index 2b31518c6fede75f41f292cbb895db2facea32c6..09c54f2fd4c9bc453b9d0fa37fbacae25019c802 100644 (file)
@@ -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,
index 0fc7906654b2847879a509f38e81058f1d2c94bb..fdeed3cf4b0aadc3c3ec149cf56caeb94a613366 100644 (file)
@@ -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);
index f360ca3e6650f3e7e15a48b6209a64fdbbddcbb5..5e88b91721be8f03cc0fde5e20969be01a903411 100644 (file)
@@ -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();
        }
 
 }
index d9a50bc68791217c8ccab47a00cedde5a0b3237b..fe75c32b50da145ac2fe9cce759e6278e1d56a12 100644 (file)
@@ -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"));
        }
index 860ae1a9341072886d309df614d30a360543f014..248881d11b84f07ce25d1b3f9ac826b83b57594d 100644 (file)
@@ -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;
index 391370bcac789f87d34d88deccdf0be681258ebb..57e3b18e36e178528517d19d7a221d4a6e7c8bc9 100644 (file)
@@ -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("<ul class=\"%s\">", Class);
-       
-       va_start(arg_list, nLines);
-       for (i = 0; i < nLines; ++i)
-       { 
-               wprintf("<li><a href=\"%s\">", va_arg(arg_list, char *));
-               wprintf((char *) va_arg(arg_list, char *));
-               wprintf("</a></li>\n");
-       }
-       va_end (arg_list);
-       
-       wprintf("</a></li>\n");
-       
-       wprintf("</ul>");
-       
-       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();
index a1bef23f25da7599600a8eb1c930b42c7f75d243..47dcaac38a21bf8454204695565dd8f5f4cb6975 100644 (file)
@@ -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);