Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ngx_snprintf не ставит '\0' в конце строки
- To: nginx-ru@xxxxxxxxx
- Subject: Re: ngx_snprintf не ставит '\0' в конце строки
- From: Peter Leonov <gojpeg@xxxxxxxxx>
- Date: Mon, 18 May 2009 15:29:56 +0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:from:to :in-reply-to:content-type:content-transfer-encoding:mime-version :subject:date:references:x-mailer; bh=EpaGsG9JFgyPqSTBUFqZzyXGIzE9qU9HRvCL5fZSpxY=; b=jVUJfQcaAAm35HAx1oDJgK+PJlGr9a20aW7NJCFB8yDAkAWdHyJvukWwOh1K7/6OXv 4a76Y9ZV5CjQZPDMcwt8nQ4MCm4QrjsGy94NRBoYRo2yi/JQWu1nWiQv+2Aooy8EgRz8 rU15PA2Wml7+0sRMdlzdHpQYN+SvoATuGZM7M=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:from:to:in-reply-to:content-type :content-transfer-encoding:mime-version:subject:date:references :x-mailer; b=ZIHgv0jBREQpKVDsEhYPr3h7+9IE4ygDxg3JZb+gE5XTgrWoITZLgmeX+oBCJkkEWI Q6fkQmJxSFmpBf2c+t7vju2ERQoEmroLf6fCttKM988ppo2vO8GR9loOHkNvMS7Lm4+g ibLpnHpufSH9jTs+uOb9si/w1KGt2lj0b7c9s=
- In-reply-to: <20090517231940.GV27758@xxxxxxxxxx>
- References: <E74C79AD-7816-48A3-9E50-A76489CB75F1@xxxxxxxxx> <20090517231940.GV27758@xxxxxxxxxx>
Большое спасибо, пойду запишу.
С памятью в энжинксе все вообще шикарно ? это первое, что меня в нем
поразило.
Теперь, когда вижу в других проектах простой malloc, трясет всего
насквозь :)
On 18.05.2009, at 3:19, Maxim Dounin wrote:
Hello!
On Mon, May 18, 2009 at 02:33:59AM +0400, Peter Leonov wrote:
Здравствуйте.
Понимаю так, что вызывающая ngx_snprintf() строна сама должна
позаботиться о терминаторе в случае, когда он нужен. Верно понимаю?
Нет. Если нужен '\0' - надо в явном виде его попросить. Это
делается через %Z.
А в общем, функции ngx_*printf() были созданы для того, чтобы было
легко
печатать встроенные в энжи типы данных? Или они служат достижению
других
целей?
Да. Плюс они не занимаются печатью '\0' там где это не надо, и не
делают abort() при нехватке памяти (точнее - вообще не пытаются
выделять память).
Maxim Dounin
On 18.05.2009, at 10:05, Igor Sysoev wrote:
On Mon, May 18, 2009 at 02:33:59AM +0400, Peter Leonov wrote:
Здравствуйте.
Понимаю так, что вызывающая ngx_snprintf()
строна сама должна позаботиться о
терминаторе в случае, когда он нужен.
Верно понимаю?
%Z
А в общем, функции ngx_*printf() были созданы
для того, чтобы было легко печатать
встроенные в энжи типы данных? Или они
служат достижению других целей?
На самом деле, он был создан, чтобы печать ставшие стандартными типы
C:
off_t, time_t, size_t, pid_t, etc. Когда-то configure подбирала для
них %lld
и прочая. Потом я плюнул и сделал ngx_snprintf(), заодно добавив туда
nginx'овских типов. Минус ровно один - при использовании родного
sprintf()
icc (не знаю, как другие сейчас) умеет предупреждать о
несоответствии типа
параметру.
--
Игорь Сысоев
http://sysoev.ru
--
С уважением,
Петр Леонов.
|