From 0b1310a64450f9f94ddc15a446133a38a0e04f60 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Sat, 12 Jul 2008 17:16:26 +0000 Subject: [PATCH] * added GCC Format String checkers to the remaining printf alikes * 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 | 6 +++--- webcit/messages.c | 30 +++++++++++++++++------------- webcit/notes.c | 2 +- webcit/preferences.c | 21 +++++++++++---------- webcit/pushemail.c | 4 ++-- webcit/roomops.c | 2 +- webcit/webcit.h | 7 +++---- 7 files changed, 38 insertions(+), 34 deletions(-) diff --git a/webcit/iconbar.c b/webcit/iconbar.c index 9448e66b9..981e2c928 100644 --- a/webcit/iconbar.c +++ b/webcit/iconbar.c @@ -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)) { diff --git a/webcit/messages.c b/webcit/messages.c index e3fc05d53..3d20e3b14 100644 --- a/webcit/messages.c +++ b/webcit/messages.c @@ -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("
--
"); - len = strlen(buf); - for (i=0; i"); } - else if (buf[i] == '<') { + else if (*sig == '<') { wprintf("<"); } - else if (buf[i] == '>') { + else if (*sig == '>') { wprintf(">"); } - else if (buf[i] == '&') { + else if (*sig == '&') { wprintf("&"); } - else if (buf[i] == '\"') { + else if (*sig == '\"') { wprintf("""); } - else if (buf[i] == '\'') { + else if (*sig == '\'') { wprintf("'"); } - else if (isprint(buf[i])) { - wprintf("%c", buf[i]); + else if (isprint(*sig)) { + wprintf("%c", *sig); } + sig ++; } } } diff --git a/webcit/notes.c b/webcit/notes.c index 1945ae72a..7478813d9 100644 --- a/webcit/notes.c +++ b/webcit/notes.c @@ -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); diff --git a/webcit/preferences.c b/webcit/preferences.c index 6c59ed24d..c29ec1c0f 100644 --- a/webcit/preferences.c +++ b/webcit/preferences.c @@ -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(""); wprintf(_("No signature")); wprintf(" ,  \n"); wprintf(""); wprintf(_("Use this signature:")); wprintf("
" @@ -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("" "
" @@ -511,7 +511,7 @@ void display_preferences(void) wprintf(_("Default character set for email headers:")); wprintf(""); wprintf(""); wprintf(""); @@ -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(); } diff --git a/webcit/pushemail.c b/webcit/pushemail.c index 60cb62f6e..e67c04b47 100644 --- a/webcit/pushemail.c +++ b/webcit/pushemail.c @@ -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); } diff --git a/webcit/roomops.c b/webcit/roomops.c index 6a96bf819..da33b279c 100644 --- a/webcit/roomops.c +++ b/webcit/roomops.c @@ -3632,7 +3632,7 @@ void set_room_policy(void) { if (WC->axlevel >= 6) { strcat(WC->ImportantMessage, "
\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]); } diff --git a/webcit/webcit.h b/webcit/webcit.h index d1f7e3f80..51171f287 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -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) -- 2.30.2