]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
fix and simplify strpad so that it actually works
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Sat, 28 Jul 2007 18:52:26 +0000 (18:52 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Sat, 28 Jul 2007 18:52:26 +0000 (18:52 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7499 d7cf8633-e32d-0410-b094-e92efae38249

prvm_cmds.c

index f5021549bdbad5be21b8874255ed843580f82af0..fcf3d8ba40967301ca9134116435bc9ca4b52d12 100644 (file)
@@ -3953,42 +3953,14 @@ void VM_strpad (void)
 {
        char src[VM_STRINGTEMP_LENGTH];
        char destbuf[VM_STRINGTEMP_LENGTH];
-       char *dest = destbuf;
        int pad;
        VM_SAFEPARMCOUNTRANGE(1, 8, VM_strpad);
        pad = PRVM_G_FLOAT(OFS_PARM0);
        VM_VarString(1, src, sizeof(src));
 
-       if (pad < 0)
-       {       //pad left
-               pad = -pad - strlen(src);
-               if (pad>=VM_STRINGTEMP_LENGTH)
-                       pad = VM_STRINGTEMP_LENGTH-1;
-               if (pad < 0)
-                       pad = 0;
-
-               strlcpy(dest+pad, src, VM_STRINGTEMP_LENGTH-pad);
-               while(pad--)
-               {
-                       pad--;
-                       dest[pad] = ' ';
-               }
-       }
-       else
-       {       //pad right
-               if (pad>=VM_STRINGTEMP_LENGTH)
-                       pad = VM_STRINGTEMP_LENGTH-1;
-               pad -= strlen(src);
-               if (pad < 0)
-                       pad = 0;
-
-               strlcpy(dest, src, VM_STRINGTEMP_LENGTH);
-               dest+=strlen(dest);
-
-               while(pad-->0)
-                       *dest++ = ' ';
-               *dest = '\0';
-       }
+       // note: < 0 = left padding, > 0 = right padding,
+       // this is reverse logic of printf!
+       dpsnprintf(destbuf, sizeof(destbuf), "%*s", -pad, src);
 
        PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(destbuf);
 }