X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/5a18a126c4f56be16e59c5b4901366aa7162945e..f23d010aa281711352a1e8ea2b8d631742a41b82:/dputf.c diff --git a/dputf.c b/dputf.c index ba23d98..2c29aad 100644 --- a/dputf.c +++ b/dputf.c @@ -1,13 +1,13 @@ /* -*-c-*- * - * $Id: dputf.c,v 1.5 2002/01/13 13:30:48 mdw Exp $ + * $Id$ * * `printf'-style formatting for dynamic strings * * (c) 1999 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of the mLib utilities library. * @@ -15,40 +15,22 @@ * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. - * + * * mLib is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. - * + * * You should have received a copy of the GNU Library General Public * License along with mLib; if not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: dputf.c,v $ - * Revision 1.5 2002/01/13 13:30:48 mdw - * Change interface for @dstr_vputf@. - * - * Revision 1.4 2001/06/22 19:35:29 mdw - * Find out whether @@ exists (hack for uC-Linux). - * - * Revision 1.3 2001/01/20 12:06:01 mdw - * Define flags with macros, to ensure unsignedness. - * - * Revision 1.2 2000/08/15 21:26:45 mdw - * (dstr_vputf): Don't try calling @va_arg@ on things @char@-sized. - * - * Revision 1.1 1999/10/04 21:44:47 mdw - * Move `dstr_putf' and `dstr_vputf' into a separate source file. - * - */ - /*----- Header files ------------------------------------------------------*/ +#include "config.h" + #include #include #include @@ -151,6 +133,7 @@ int dstr_vputf(dstr *d, const char *p, va_list *ap) DPUTC(&dd, '.'); ip = ≺ f |= f_prec; + p++; goto getnum; case '*': ip = &wd; @@ -164,7 +147,7 @@ int dstr_vputf(dstr *d, const char *p, va_list *ap) } DPUTC(d, *p); goto formatted; - getnum: + getnum: *ip = 0; if (*p == '*') { *ip = va_arg(*ap, int); @@ -212,7 +195,7 @@ int dstr_vputf(dstr *d, const char *p, va_list *ap) if (!(f & f_prec)) prec = 6; else - sz += prec + 16; + sz += prec + 16; if ((f & f_wd) && wd + 1 > sz) sz = wd + 1; DENSURE(d, sz);