summaryrefslogtreecommitdiff
path: root/source/fitz/printf.c
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2017-08-08 02:06:48 +0800
committerSebastian Rasmussen <sebras@gmail.com>2017-08-15 20:42:16 +0800
commitedfea06688297f3d9268c58c212127a380619936 (patch)
tree363eb7f7f3603d90d5ff071ac91316968767c077 /source/fitz/printf.c
parent0d4bd8ba31515d329dee1532b6c30ff5e74019b3 (diff)
downloadmupdf-edfea06688297f3d9268c58c212127a380619936.tar.xz
Place space/zero padding correctly before/after sign.
Diffstat (limited to 'source/fitz/printf.c')
-rw-r--r--source/fitz/printf.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/source/fitz/printf.c b/source/fitz/printf.c
index 30cf85fb..3fe8c7e4 100644
--- a/source/fitz/printf.c
+++ b/source/fitz/printf.c
@@ -93,10 +93,16 @@ static void fmtuint32(struct fmtbuf *out, unsigned int a, int s, int z, int w, i
buf[i++] = fz_hex_digits[a % base];
a /= base;
}
- while (i < w)
- buf[i++] = z;
+ if (z == '0')
+ while (i < w - !!s)
+ buf[i++] = z;
if (s)
buf[i++] = s;
+ while (i < w)
+ buf[i++] = z;
+ if (z == ' ')
+ while (i < w)
+ buf[i++] = z;
while (i > 0)
fmtputc(out, buf[--i]);
}
@@ -113,10 +119,19 @@ static void fmtuint64(struct fmtbuf *out, uint64_t a, int s, int z, int w, int b
buf[i++] = fz_hex_digits[a % base];
a /= base;
}
- while (i < w)
- buf[i++] = z;
+ if (z == '0')
+ while (i < w - !!s)
+ buf[i++] = z;
if (s)
+ {
buf[i++] = s;
+ w += 1;
+ }
+ while (i < w)
+ buf[i++] = z;
+ if (z == ' ')
+ while (i < w)
+ buf[i++] = z;
while (i > 0)
fmtputc(out, buf[--i]);
}