From 078b4ccf0b65d655d81e9f4fc6e1284773e1dda4 Mon Sep 17 00:00:00 2001 From: Pixel Date: Sat, 5 Feb 2011 13:05:37 -0800 Subject: Re-structured the *scanf and *printf functions. --- libc/src/xprintf.c | 94 +++--------------------------------------------------- 1 file changed, 4 insertions(+), 90 deletions(-) (limited to 'libc/src/xprintf.c') diff --git a/libc/src/xprintf.c b/libc/src/xprintf.c index 30659f7..269d77c 100644 --- a/libc/src/xprintf.c +++ b/libc/src/xprintf.c @@ -213,7 +213,7 @@ static int getdigit(long double *val, int *cnt){ ** seems to make a big difference in determining how fast this beast ** will run. */ -static int vxprintf(func,arg,format,ap) +int vxprintf(func,arg,format,ap) void (*func)(const char*,int,void*); void *arg; const char *format; @@ -664,20 +664,6 @@ static int vxprintf(func,arg,format,ap) return errorflag ? -1 : count; } /* End of function */ -/* -** This non-standard function is still occasionally useful.... -*/ -int xprintf( - void (*func)(char*,int,void*), - void *arg, - const char *format, - ... -){ - va_list ap; - va_start(ap,format); - return vxprintf(func,arg,format,ap); -} - /* ** Now for string-print, also as found in any standard library. ** Add to this the snprint function which stops added characters @@ -713,19 +699,6 @@ static void sout(txt,amt,arg) ((struct s_strargument*)arg)->next = head; } -int sprintf(char *buf, const char *fmt, ...){ - int rc; - va_list ap; - struct s_strargument arg; - - va_start(ap,fmt); - arg.next = buf; - arg.last = 0; - *arg.next = 0; - rc = vxprintf(sout,&arg,fmt,ap); - va_end(ap); - return rc; -} int vsprintf(char *buf,const char *fmt,va_list ap){ struct s_strargument arg; arg.next = buf; @@ -733,19 +706,6 @@ int vsprintf(char *buf,const char *fmt,va_list ap){ *buf = 0; return vxprintf(sout,&arg,fmt,ap); } -int snprintf(char *buf, size_t n, const char *fmt, ...){ - int rc; - va_list ap; - struct s_strargument arg; - - va_start(ap,fmt); - arg.next = buf; - arg.last = &arg.next[n-1]; - *arg.next = 0; - rc = vxprintf(sout,&arg,fmt,ap); - va_end(ap); - return rc; -} int vsnprintf(char *buf, size_t n, const char *fmt, va_list ap){ struct s_strargument arg; arg.next = buf; @@ -799,31 +759,6 @@ static void mout(zNewText,nNewChar,arg) ** We changed the name to TclMPrint() to conform with the Tcl private ** routine naming conventions. */ -int asprintf(char ** out, const char *zFormat, ...){ - va_list ap; - struct sgMprintf sMprintf; - char *zNew; - char zBuf[200]; - int r; - - va_start(ap,zFormat); - sMprintf.nChar = 0; - sMprintf.nAlloc = sizeof(zBuf); - sMprintf.zText = zBuf; - sMprintf.zBase = zBuf; - r = vxprintf(mout,&sMprintf,zFormat,ap); - va_end(ap); - if( sMprintf.zText==sMprintf.zBase ){ - zNew = malloc( sMprintf.nChar+1 ); - if( zNew ) strcpy(zNew,zBuf); - }else{ - zNew = realloc(sMprintf.zText,sMprintf.nChar+1); - } - - *out = zNew; - - return r; -} /* This is the varargs version of mprintf. ** @@ -860,31 +795,10 @@ static void fout(zNewText,nNewChar,arg) int nNewChar; void *arg; { - fwrite(zNewText,1,nNewChar,(FILE*)arg); + write(*(int*)arg,zNewText,nNewChar); } /* The public interface routines */ -int fprintf(FILE *pOut, const char *zFormat, ...){ - va_list ap; - int retc; - - va_start(ap,zFormat); - retc = vxprintf(fout,pOut,zFormat,ap); - va_end(ap); - return retc; -} -int vfprintf(FILE *pOut, const char *zFormat, va_list ap){ - return vxprintf(fout,pOut,zFormat,ap); -} -int printf(const char *zFormat, ...){ - va_list ap; - int retc; - - va_start(ap,zFormat); - retc = vxprintf(fout,stdout,zFormat,ap); - va_end(ap); - return retc; -} -int vprintf(const char *zFormat, va_list ap){ - return vxprintf(fout,stdout,zFormat,ap); +int vdprintf(int fd, const char *zFormat, va_list ap){ + return vxprintf(fout,&fd,zFormat,ap); } -- cgit v1.2.3