diff options
Diffstat (limited to 'src/backend/port')
-rw-r--r-- | src/backend/port/snprintf.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/backend/port/snprintf.c b/src/backend/port/snprintf.c index 9cc3786878..bd421329a9 100644 --- a/src/backend/port/snprintf.c +++ b/src/backend/port/snprintf.c @@ -70,7 +70,7 @@ * causing nast effects. **************************************************************/ -/*static char _id[] = "$Id: snprintf.c,v 1.6 1998/09/18 05:20:22 momjian Exp $";*/ +/*static char _id[] = "$Id: snprintf.c,v 1.7 1998/09/23 03:11:24 scrappy Exp $";*/ static char *end; static int SnprfOverflow; @@ -126,6 +126,7 @@ dopr (char *buffer, const char *format, ... ) int ch; long value; int longflag = 0; + int longlongflag = 0; int pointflag = 0; int maxwidth = 0; char *strvalue; @@ -167,7 +168,11 @@ dopr (char *buffer, const char *format, ... ) len = va_arg( args, int ); goto nextch; case '.': pointflag = 1; goto nextch; - case 'l': longflag = 1; goto nextch; + case 'l': if(longflag) { + longlongflag = 1; goto nextch; + } else { + longflag = 1; goto nextch; + } case 'u': case 'U': /*fmtnum(value,base,dosign,ljust,len,zpad) */ if( longflag ){ @@ -186,7 +191,11 @@ dopr (char *buffer, const char *format, ... ) fmtnum( value, 8,0, ljust, len, zpad ); break; case 'd': case 'D': if( longflag ){ + if( longlongflag ) { + value = va_arg( args, long long ); + } else { value = va_arg( args, long ); + } } else { value = va_arg( args, int ); } |