* added GCC Format String checkers to the remaining printf alikes
authorWilfried Göesgens <willi@citadel.org>
Sat, 12 Jul 2008 17:16:26 +0000 (17:16 +0000)
committerWilfried Göesgens <willi@citadel.org>
Sat, 12 Jul 2008 17:16:26 +0000 (17:16 +0000)
* fix formatstring errors
* fix multiline preference saving
* fix signature en/decoding
We now have UNLIMITED signatures, so finaly one can put its $Company foo at the end of his mail autemagicaly.

webcit/iconbar.c
webcit/messages.c
webcit/notes.c
webcit/preferences.c
webcit/pushemail.c
webcit/roomops.c
webcit/webcit.h

index 9448e66b93c64435ca053e0c672f3448a2b3b11e..981e2c9287eb8ed1f201d144b6c2cef192d39bfc 100644 (file)
@@ -88,10 +88,10 @@ void LoadIconSettings(void)
  * \brief draw the icon bar???
  */
 void do_iconbar(void) {
-       int ib_displayas = 0;   /**< pictures and text, pictures, text */
+       int ib_displayas = IB_PICTEXT;  /**< pictures and text, pictures, text */
 
        LoadIconSettings();
-       ib_displayas = IconbarIsEnabled("ib_displayas", 0);
+       ib_displayas = IconbarIsEnabled("ib_displayas", IB_PICTEXT);
 
 /** Site logo */
        if (IconbarIsEnabled("ib_logo", 0)) {
@@ -386,7 +386,7 @@ void do_iconbar_roomlist(void) {
 
        LoadIconSettings();
 
-       ib_displayas = IconbarIsEnabled("ib_displayas", 0);     /* pictures and text, pictures, text */
+       ib_displayas = IconbarIsEnabled("ib_displayas", IB_PICTEXT);    /* pictures and text, pictures, text */
 
 /** Site logo */
        if (IconbarIsEnabled("ib_logo", 0)) {
index e3fc05d5334dda95933015e86b34927282a7ffc5..3d20e3b148bddfdf776bc248073473cb662fd8c0 100644 (file)
@@ -3276,7 +3276,6 @@ void display_enter(void)
        int recipient_required = 0;
        int subject_required = 0;
        int recipient_bad = 0;
-       int i;
        int is_anonymous = 0;
        long existing_page = (-1L);
        size_t dplen;
@@ -3615,33 +3614,38 @@ void display_enter(void)
                int UseSig;
                get_pref_yesno("use_sig", &UseSig, 0);
                if (UseSig) {
-                       int len;
+                       StrBuf *Sig;
+                       const char *sig, *esig;
+
                        get_preference("signature", &ebuf);
-                       euid_unescapize(buf, ChrPtr(ebuf));/////TODO
+                       Sig = NewStrBuf();
+                       StrBufEUid_unescapize(Sig, ebuf);
+                       sig = ChrPtr(Sig);
+                       esig = sig + StrLength(Sig);
                        wprintf("<br>--<br>");
-                       len = strlen(buf);
-                       for (i=0; i<len; ++i) {
-                               if (buf[i] == '\n') {
+                       while (sig <= esig) {
+                               if (*sig == '\n') {
                                        wprintf("<br>");
                                }
-                               else if (buf[i] == '<') {
+                               else if (*sig == '<') {
                                        wprintf("&lt;");
                                }
-                               else if (buf[i] == '>') {
+                               else if (*sig == '>') {
                                        wprintf("&gt;");
                                }
-                               else if (buf[i] == '&') {
+                               else if (*sig == '&') {
                                        wprintf("&amp;");
                                }
-                               else if (buf[i] == '\"') {
+                               else if (*sig == '\"') {
                                        wprintf("&quot;");
                                }
-                               else if (buf[i] == '\'') {
+                               else if (*sig == '\'') {
                                        wprintf("&#39;");
                                }
-                               else if (isprint(buf[i])) {
-                                       wprintf("%c", buf[i]);
+                               else if (isprint(*sig)) {
+                                       wprintf("%c", *sig);
                                }
+                               sig ++;
                        }
                }
        }
index 1945ae72a915f2e075cd48bd73afe7d3399b0b67..7478813d971ceae17c0b042a6a7d2c44045fc64d 100644 (file)
@@ -272,7 +272,7 @@ void ajax_update_note(void) {
        // Was this request a delete operation?  If so, nuke it...
        if (havebstr("deletenote")) {
                if (!strcasecmp(bstr("deletenote"), "yes")) {
-                       serv_printf("DELE %ld", msgnum);
+                       serv_printf("DELE %d", msgnum);
                        serv_getln(buf, sizeof buf);
                        begin_ajax_response();
                        wprintf("%s", buf);
index 6c59ed24d1112f9bd3b7f4c86d36d5b5e677ad25..c29ec1c0f43326bf50776120858ca8216f68c8d6 100644 (file)
@@ -158,7 +158,7 @@ void save_preferences(void) {
                                offset = 0;
                                while (nchars > 0) {
                                        if (n == 0)
-                                               nchars = 70;
+                                               nchars = 71;
                                        else 
                                                nchars = 80;
 
@@ -167,7 +167,7 @@ void save_preferences(void) {
                                        if (n == 0)
                                                serv_printf("%s|%s", Key, ChrPtr(SubBuf));
                                        else
-                                               serv_printf(" %s", Key, ChrPtr(SubBuf));
+                                               serv_printf(" %s", ChrPtr(SubBuf));
 
                                        offset += nchars;
                                        n++;
@@ -471,13 +471,13 @@ void display_preferences(void)
        );
 
        wprintf("<input type=\"radio\" id=\"no_sig\" name=\"use_sig\" VALUE=\"no\"");
-       if (!UseSig) wprintf(" checked");
+       if (UseSig) wprintf(" checked");
        wprintf(" onChange=\"show_or_hide_sigbox();\" >");
        wprintf(_("No signature"));
        wprintf("</input>&nbsp,&nbsp;&nbsp;\n");
 
        wprintf("<input type=\"radio\" id=\"yes_sig\" name=\"use_sig\" VALUE=\"yes\"");
-       if (UseSig) wprintf(" checked");
+       if (!UseSig) wprintf(" checked");
        wprintf(" onChange=\"show_or_hide_sigbox();\" >");
        wprintf(_("Use this signature:"));
        wprintf("<div id=\"signature_box\">"
@@ -487,7 +487,7 @@ void display_preferences(void)
        get_preference("signature", &Signature);
        ebuf = NewStrBuf();
        StrBufEUid_unescapize(ebuf, Signature);
-       escputs(ChrPtr(ebuf));
+       escputs((char*)ChrPtr(ebuf));///TODO
        FreeStrBuf(&ebuf);
        wprintf("</textarea>"
                "</div>"
@@ -511,7 +511,7 @@ void display_preferences(void)
        wprintf(_("Default character set for email headers:"));
        wprintf("</td><td>");
        wprintf("<input type=\"text\" NAME=\"default_header_charset\" MAXLENGTH=\"32\" VALUE=\"");
-       escputs(ChrPtr(Buf));
+       escputs((char*)ChrPtr(Buf)); // here shouldn't be bad chars, so...
        wprintf("\">");
        wprintf("</td></tr>");
 
@@ -563,7 +563,7 @@ void display_preferences(void)
 void set_preferences(void)
 {
        long fmt;
-       StrBuf *ebuf;
+       StrBuf *buf, *encBuf;
        int *time_format_cache;
        
        time_format_cache = &(WC->time_format_cache);
@@ -595,9 +595,10 @@ void set_preferences(void)
        set_preference("default_header_charset", NewStrBufPlain(bstr("default_header_charset"), -1), 0);
        set_preference("emptyfloors", NewStrBufPlain(bstr("emptyfloors"), -1), 0);
 
-       ebuf = NewStrBufPlain(bstr("signature"), -1);
-       /////TODOeuid_escapize(ebuf);
-       set_preference("signature", ebuf, 1);
+       buf = NewStrBufPlain(bstr("signature"), -1);
+       encBuf = NewStrBuf();
+       StrBufEUid_escapize(encBuf, buf);
+       set_preference("signature", encBuf, 1);
 
        display_main_menu();
 }
index 60cb62f6ef44a6af50e25b61276cd6a2f605bac0..e67c04b47e023364197743554385d586c89d8862 100644 (file)
@@ -27,7 +27,7 @@ void display_pushemail(void) {
                        
                }
                if (msgnum > 0L) {
-               serv_printf("MSG0 %ld", msgnum);
+               serv_printf("MSG0 %d", msgnum);
                serv_getln(buf, sizeof buf);
                if (buf[0] == '1') {
                        while (serv_getln(buf, sizeof buf),
@@ -91,7 +91,7 @@ void save_pushemail(void) {
        }
 
        if (msgnum > 0L) {
-               serv_printf("DELE %ld", msgnum);
+               serv_printf("DELE %d", msgnum);
                serv_getln(buf, sizeof buf);
        }
 
index 6a96bf819cd2a1e7c83acbfca22bbd7c2fe66afc..da33b279c917d90c52ce66636953dae5bd3da143 100644 (file)
@@ -3632,7 +3632,7 @@ void set_room_policy(void) {
 
        if (WC->axlevel >= 6) {
                strcat(WC->ImportantMessage, "<br />\n");
-               serv_printf("SPEX floor|%d|%d", ibstr("floorpolicy"), bstr("floorvalue"));
+               serv_printf("SPEX floor|%d|%d", ibstr("floorpolicy"), ibstr("floorvalue"));
                serv_getln(buf, sizeof buf);
                strcat(WC->ImportantMessage, &buf[4]);
        }
index d1f7e3f8080a2251a7013c4f561082105e12d32e..51171f287154df318f38bc6277753f8a88c9d443 100644 (file)
@@ -519,7 +519,6 @@ void new_messages_section(void);
 void fmout(char *align);
 void pullquote_fmout(void);
 void wDumpContent(int);
-void serv_printf(const char *format,...);
 
 /* TODO: get rid of the non-const-typecast */
 #define bstr(a) (char*) Bstr(a, sizeof(a) - 1)
@@ -617,7 +616,7 @@ void serv_read(char *buf, int bytes);
 void serv_gets(char *strbuf);
 void serv_write(char *buf, int nbytes);
 void serv_puts(char *string);
-void serv_printf(const char *format,...);
+void serv_printf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
 void load_floorlist(void);
 void display_reg(int);
 void display_changepw(void);
@@ -659,8 +658,8 @@ typedef void (*var_callback_fptr)();
 
 void SVPut(char *keyname, size_t keylen, int keytype, char *Data);
 #define svput(a, b, c) SVPut(a, sizeof(a) - 1, b, c)
-void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...);
-void SVPRINTF(char *keyname, int keytype, const char *format,...);
+void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...) __attribute__((__format__(__printf__,4,5)));
+void SVPRINTF(char *keyname, int keytype, const char *format,...) __attribute__((__format__(__printf__,3,4)));
 void SVCALLBACK(char *keyname, var_callback_fptr fcn_ptr);
 void SVCallback(char *keyname, size_t keylen,  var_callback_fptr fcn_ptr);
 #define svcallback(a, b) SVCallback(a, sizeof(a) - 1, b)