@@ -2194,8 +2194,9 @@ EXPORTED void xsyslog_fn(int priority, const char *description,
2194
2194
errno = saved_errno ;
2195
2195
}
2196
2196
2197
- static char * xsyslog_ev_escape_value (struct buf * );
2198
- static void xsyslog_ev_fmt_skip_va (const char * , va_list );
2197
+ static const char * xsyslog_ev_escape_value (struct buf * );
2198
+ static void xsyslog_ev_fmt_skip_va (const char * , va_list );
2199
+ static char * xsyslog_ev_fmt_va (const char * , va_list );
2199
2200
static char xsyslog_ev_guess_printf_escape (const char * );
2200
2201
2201
2202
/* xsyslog_ev:
@@ -2349,8 +2350,8 @@ static void xsyslog_ev_fmt_skip_va(const char* fmt, va_list ap)
2349
2350
case 'd' : (void ) va_arg (ap , int ); break ;
2350
2351
case 'l' : (void ) va_arg (ap , long ); break ;
2351
2352
case 'f' : (void ) va_arg (ap , double ); break ;
2352
- case 's' : (void ) va_arg (ap , ( char * ) ); break ;
2353
- case 'p' : (void ) va_arg (ap , ( void * ) ); break ;
2353
+ case 's' : (void ) va_arg (ap , char * ); break ;
2354
+ case 'p' : (void ) va_arg (ap , void * ); break ;
2354
2355
case 0 :
2355
2356
// we could handle this by skipping the va_arg call entirely, which would allow the user to write
2356
2357
// xsyslog_ev(..., key, "foo", ...)
@@ -2380,8 +2381,9 @@ static void xsyslog_ev_fmt_skip_va(const char* fmt, va_list ap)
2380
2381
static char xsyslog_ev_guess_printf_escape (const char * s ) {
2381
2382
unsigned is_long = 0 ;
2382
2383
TOP :
2383
- while (* s ++ != '%' ) ; // seek past first % sign
2384
- if (!* s ) return 0 ;
2384
+ while (* s && * s != '%' ) s ++ ; // seek to first % sign or to end of string
2385
+ if (* s == 0 ) return 0 ; // String has no percent signs at all
2386
+ s ++ ;
2385
2387
if (* s == '%' ) { s ++ ; goto TOP ; } // it's "%%", skip it and continue
2386
2388
2387
2389
switch (* s ) { // skip optional flag
@@ -2395,7 +2397,7 @@ static char xsyslog_ev_guess_printf_escape(const char *s) {
2395
2397
if (* s == 'l' ) { is_long ++ ; s ++ ; }
2396
2398
switch (* s ) {
2397
2399
case 'd' : case 'i' : case '0' : case 'u' :
2398
- case 'x' : case 'X' : case 'c' :
2400
+ case 'x' : case 'X' : case 'c' : case 'o' :
2399
2401
return is_long ? 'l' : 'd' ;
2400
2402
2401
2403
case 'e' : case 'E' : case 'f' : case 'F' :
@@ -2508,3 +2510,8 @@ static const char *xsyslog_ev_escape_value(struct buf *val)
2508
2510
2509
2511
return buf_cstring (val );
2510
2512
}
2513
+
2514
+ EXPORTED const char * __test_xsyslog_ev_escape_value (struct buf * val )
2515
+ {
2516
+ return xsyslog_ev_escape_value (val );
2517
+ }
0 commit comments