summaryrefslogtreecommitdiff
path: root/Src/prompt.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2004-05-04 16:43:29 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2004-05-04 16:43:29 +0000
commitf57f65282b8b7de7db638eaabd06867ea8b1162f (patch)
tree64bb58c0fe67fc88c212f6f7fc1b7260400da2e2 /Src/prompt.c
parentc98b9dc800171365eee34a3adbf5a741dbef69ca (diff)
downloadzsh-f57f65282b8b7de7db638eaabd06867ea8b1162f.tar.gz
zsh-f57f65282b8b7de7db638eaabd06867ea8b1162f.zip
19877: improved test for empty strftime strings
Diffstat (limited to 'Src/prompt.c')
-rw-r--r--Src/prompt.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/Src/prompt.c b/Src/prompt.c
index e0304f298..d83ec9417 100644
--- a/Src/prompt.c
+++ b/Src/prompt.c
@@ -526,11 +526,16 @@ putpromptchar(int doprint, int endchar)
}
timet = time(NULL);
tm = localtime(&timet);
- for(t0=80; ; t0*=2) {
+ /*
+ * Hack because strftime won't say how
+ * much space it actually needs. Try to add it
+ * a few times until it works. Some formats don't
+ * actually have a length, so we could go on for
+ * ever.
+ */
+ for(j = 0, t0 = strlen(tmfmt)*8; j < 3; j++, t0*=2) {
addbufspc(t0);
- if (ztrftime(bp, t0, tmfmt, tm) ||
- !strcmp("%P", tmfmt) ||
- !strcmp("%p", tmfmt))
+ if (ztrftime(bp, t0, tmfmt, tm) >= 0)
break;
}
bp += strlen(bp);