static nxt_array_t *
njs_builtin_completions(njs_vm_t *vm, nxt_array_t *array)
{
- char *compl;
+ u_char *compl;
size_t n, len;
nxt_str_t string, *completions;
nxt_uint_t i, k;
return NULL;
}
- snprintf(compl, len, "%s.%s", obj->name.start, string.start);
+ nxt_sprintf(compl, compl + len, "%s.%s%Z", obj->name.start,
+ string.start);
completions[n].length = len;
completions[n++].start = (u_char *) compl;
return NULL;
}
- snprintf(compl, len, ".%s", string.start);
+ nxt_sprintf(compl, compl + len, ".%s%Z", string.start);
for (k = 0; k < n; k++) {
- if (strncmp((char *) completions[k].start, compl, len)
- == 0)
- {
+ if (nxt_strncmp(completions[k].start, compl, len) == 0) {
break;
}
}
return NULL;
}
- snprintf(compl, len, "%s.%s", obj->name.start, string.start);
+ nxt_sprintf(compl, compl + len, "%s.%s%Z", obj->name.start,
+ string.start);
completions[n].length = len;
completions[n++].start = (u_char *) compl;
return NULL;
}
- snprintf(compl, len, "%.*s", (int) ev->name.length, ev->name.start);
+ nxt_sprintf(compl, compl + len, "%V%Z", &ev->name);
completions[n].length = len;
completions[n++].start = (u_char *) compl;
return NULL;
}
- snprintf(compl, len, "%.*s.%.*s", (int) ev->name.length,
- ev->name.start, (int) ext_prop->name.length,
- ext_prop->name.start);
+ nxt_sprintf(compl, compl + len, "%V.%V%Z", &ev->name,
+ &ext_prop->name);
completions[n].length = len;
completions[n++].start = (u_char *) compl;
nxt_uint_t nargs, njs_index_t unused)
{
double time;
- size_t size;
time_t clock;
- u_char buf[NJS_DATE_TIME_LEN];
+ u_char buf[NJS_DATE_TIME_LEN], *p;
struct tm tm;
static const char *week[] = { "Sun", "Mon", "Tue", "Wed",
clock = time / 1000;
gmtime_r(&clock, &tm);
- size = snprintf((char *) buf, NJS_DATE_TIME_LEN,
+ p = nxt_sprintf(buf, buf + NJS_DATE_TIME_LEN,
"%s %s %02d %4d %02d:%02d:%02d GMT",
- week[tm.tm_wday], month[tm.tm_mon],
- tm.tm_mday, tm.tm_year + 1900,
- tm.tm_hour, tm.tm_min, tm.tm_sec);
+ week[tm.tm_wday], month[tm.tm_mon], tm.tm_mday,
+ tm.tm_year + 1900, tm.tm_hour, tm.tm_min, tm.tm_sec);
- return njs_string_new(vm, &vm->retval, buf, size, size);
+ return njs_string_new(vm, &vm->retval, buf, p - buf, p - buf);
}
vm->retval = njs_string_invalid_date;
{
int32_t year;
double time;
- size_t size;
time_t clock;
- u_char buf[NJS_ISO_DATE_TIME_LEN];
+ u_char buf[NJS_ISO_DATE_TIME_LEN], *p;
struct tm tm;
time = date->data.u.date->time;
year = tm.tm_year + 1900;
- size = snprintf((char *) buf, NJS_ISO_DATE_TIME_LEN,
+ p = nxt_sprintf(buf, buf + NJS_ISO_DATE_TIME_LEN,
(year < 0) ? "%07d-%02d-%02dT%02d:%02d:%02d.%03dZ"
: "%04d-%02d-%02dT%02d:%02d:%02d.%03dZ",
- year, tm.tm_mon + 1, tm.tm_mday,
- tm.tm_hour, tm.tm_min, tm.tm_sec,
- (int) ((int64_t) time % 1000));
+ year, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min,
+ tm.tm_sec, (int) ((int64_t) time % 1000));
- return njs_string_new(vm, retval, buf, size, size);
+ return njs_string_new(vm, retval, buf, p - buf, p - buf);
}
vm->retval = njs_string_invalid_date;
static nxt_int_t
njs_dump_value(njs_json_stringify_t *stringify, const njs_value_t *value)
{
- size_t len;
njs_ret_t ret;
nxt_str_t str;
nxt_uint_t written;
njs_value_t str_val;
const njs_extern_t *ext_proto;
- char buf[32];
+ u_char buf[32], *p;
njs_ret_t (*to_string)(njs_vm_t *, njs_value_t *,
const njs_value_t *);
return njs_json_buf_append(stringify, (char *) str.start, str.length);
default:
- len = snprintf(buf, sizeof(buf), "[Unknown value type:%d]",
- value->type);
- return njs_json_buf_append(stringify, buf, len);
+ p = nxt_sprintf(buf, buf + nxt_length(buf), "[Unknown value type:%uD]",
+ value->type);
+ return njs_json_buf_append(stringify, (char *) buf, p - buf);
}
return ret;
nxt_inline void
njs_uint32_to_string(njs_value_t *value, uint32_t u32)
{
- size_t size;
+ u_char *dst, *p;
- size = snprintf((char *) njs_string_short_start(value),
- NJS_STRING_SHORT, "%u", u32);
- njs_string_short_set(value, size, size);
+ dst = njs_string_short_start(value);
+ p = nxt_sprintf(dst, dst + NJS_STRING_SHORT, "%uD", u32);
+
+ njs_string_short_set(value, p - dst, p - dst);
}
p = trace->handler(trace, td, start);
if (vm->parser != NULL) {
- njs_syntax_error(vm, "%s in %uD", start, vm->parser->lexer->line);
+ njs_syntax_error(vm, "%*s in %uD", (int) (p - start), start,
+ vm->parser->lexer->line);
} else {
- njs_syntax_error(vm, "%s", start);
+ njs_syntax_error(vm, "%*s", (int) (p - start), start);
}
return p;
continue;
}
- if (strncmp(text, (char *) var->name.start, cmpl->length) == 0) {
+ if (nxt_strncmp(text, var->name.start, cmpl->length) == 0) {
return njs_editline(&var->name);
}
}
suffix = njs_completion(cmpl->suffix_completions, cmpl->index++);
- if (len != 0 && strncmp((char *) suffix->start, p,
- nxt_min(len, suffix->length)) != 0)
+ if (len != 0 && nxt_strncmp(suffix->start, p,
+ nxt_min(len, suffix->length)) != 0)
{
continue;
}
return NULL;
}
- snprintf(completion, len, "%.*s%.*s", (int) (p - text), text,
- (int) suffix->length, suffix->start);
+ nxt_sprintf((u_char *) completion, (u_char *) completion + len,
+ "%*s%V%Z", (int) (p - text), text, suffix);
return completion;
}
continue;
}
- if (strncmp(text, (char *) suffix->start, cmpl->length) == 0) {
+ if (nxt_strncmp(text, suffix->start, cmpl->length) == 0) {
return njs_editline(suffix);
}
}
njs_clear_timeout(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
njs_index_t unused)
{
- u_char buf[16];
+ u_char buf[16], *p;
njs_ret_t ret;
njs_event_t *event;
nxt_lvlhsh_query_t lhq;
return NJS_OK;
}
+ p = nxt_sprintf(buf, buf + nxt_length(buf), "%uD",
+ (unsigned) args[1].data.u.number);
+
lhq.key.start = buf;
- lhq.key.length = snprintf((char *) buf, sizeof(buf) - 1, "%u",
- (unsigned) args[1].data.u.number);
+ lhq.key.length = p - buf;
lhq.key_hash = nxt_djb_hash(lhq.key.start, lhq.key.length);
lhq.proto = &njs_event_hash_proto;
lhq.pool = vm->mem_pool;
njs_unit_test_r_get_a_external(njs_vm_t *vm, njs_value_t *value, void *obj,
uintptr_t data)
{
- char buf[16];
- size_t len;
+ u_char buf[16], *p;
njs_unit_test_req_t *r;
r = (njs_unit_test_req_t *) obj;
- len = sprintf(buf, "%u", r->a);
+ p = nxt_sprintf(buf, buf + nxt_length(buf), "%uD", r->a);
- return njs_string_create(vm, value, (u_char *) buf, len, 0);
+ return njs_string_create(vm, value, buf, p - buf, 0);
}
#define nxt_cpymem(dst, src, n) (((u_char *) memcpy(dst, src, n)) + (n))
+#define nxt_strncmp(s1, s2, n) strncmp((char *) s1, (char *) s2, n)
+
+
#define nxt_memset(buf, c, length) (void) (memset(buf, c, length))
#include <nxt_types.h>
#include <nxt_clang.h>
#include <nxt_malloc.h>
+#include <nxt_sprintf.h>
#include <nxt_trace.h>
#include <stdio.h>
static u_char *
nxt_last_handler(nxt_trace_t *trace, nxt_trace_data_t *td, u_char *start)
{
- int n;
+ u_char *p;
ssize_t size;
size = td->end - start;
- n = vsnprintf((char *) start, size, td->fmt, td->args);
+ p = nxt_vsprintf(start, start + size, td->fmt, td->args);
- if (n < size) {
- start += n;
+ if (p - start < size) {
+ start = p;
}
return start;