From 968c5dc1fc5308d9bddd7d453287c9878bace289 Mon Sep 17 00:00:00 2001
From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org>
Date: Mon, 1 Nov 1999 14:58:46 +0100
Subject: [PATCH] added "%-4c" again (negative argument to %c

Rev: src/modules/sprintf/sprintf.c:1.58
---
 src/modules/sprintf/sprintf.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/modules/sprintf/sprintf.c b/src/modules/sprintf/sprintf.c
index b1b603e3fa..0c3bdbc4a5 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);
-- 
GitLab