%*s format

This commit is contained in:
Igor Sysoev 2007-12-24 17:05:16 +00:00
parent f3b0e49069
commit 79d9a042a2

View File

@ -63,6 +63,7 @@ ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src)
* %V ngx_str_t * * %V ngx_str_t *
* %v ngx_variable_value_t * * %v ngx_variable_value_t *
* %s null-terminated string * %s null-terminated string
* %*s length and string
* %Z '\0' * %Z '\0'
* %N '\n' * %N '\n'
* %c char * %c char
@ -112,7 +113,7 @@ ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args)
* but icc issues the warning * but icc issues the warning
*/ */
int d; int d;
size_t len; size_t len, slen;
uint32_t ui32; uint32_t ui32;
int64_t i64; int64_t i64;
uint64_t ui64; uint64_t ui64;
@ -146,6 +147,7 @@ ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args)
sign = 1; sign = 1;
hexadecimal = 0; hexadecimal = 0;
max_width = 0; max_width = 0;
slen = 0;
p = temp + NGX_INT64_LEN; p = temp + NGX_INT64_LEN;
@ -179,6 +181,11 @@ ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args)
fmt++; fmt++;
continue; continue;
case '*':
slen = va_arg(args, u_int);
fmt++;
continue;
default: default:
break; break;
} }
@ -214,9 +221,15 @@ ngx_vsnprintf(u_char *buf, size_t max, const char *fmt, va_list args)
case 's': case 's':
p = va_arg(args, u_char *); p = va_arg(args, u_char *);
if (slen == 0) {
while (*p && buf < last) { while (*p && buf < last) {
*buf++ = *p++; *buf++ = *p++;
} }
} else {
buf = ngx_cpymem(buf, p, slen);
}
fmt++; fmt++;
continue; continue;