diff --git a/src/modules/sprintf/sprintf.c b/src/modules/sprintf/sprintf.c index b1b603e3fab92a81a28cd371788e427e67a0adc8..0c3bdbc4a59e7a2dc9ff33acbaad3f2e229ead09 100644 --- a/src/modules/sprintf/sprintf.c +++ b/src/modules/sprintf/sprintf.c @@ -102,7 +102,7 @@ */ #include "global.h" -RCSID("$Id: sprintf.c,v 1.57 1999/10/30 23:35:53 noring Exp $"); +RCSID("$Id: sprintf.c,v 1.58 1999/11/01 13:58:46 mirar Exp $"); #include "error.h" #include "array.h" #include "svalue.h" @@ -1044,7 +1044,7 @@ static void low_pike_sprintf(struct format_stack *fs, case 'c': { - INT32 l,tmp; + INT32 l,tmp,n; char *x; DO_OP(); CHECK_OBJECT_SPRINTF() @@ -1057,7 +1057,24 @@ static void low_pike_sprintf(struct format_stack *fs, else fs->fsp->b=MKPCHARP(x,2); SET_INDEX_PCHARP(fs->fsp->b,0,tmp); fs->fsp->len=1; - }else{ + } + else if ( (fs->fsp->flags&FIELD_LEFT) ) + { + l=1; + if(fs->fsp->width > 0) l=fs->fsp->width; + x=(char *)alloca(l); + fs->fsp->b=MKPCHARP(x,0); + fs->fsp->len=l; + GET_INT(tmp); + n=0; + while(n<l) + { + x[n++]=tmp & 0xff; + tmp>>=8; + } + } + else + { l=1; if(fs->fsp->width > 0) l=fs->fsp->width; x=(char *)alloca(l);