diff options
author | Clint Adams <clint@users.sourceforge.net> | 2002-05-26 22:43:56 +0000 |
---|---|---|
committer | Clint Adams <clint@users.sourceforge.net> | 2002-05-26 22:43:56 +0000 |
commit | 189aa5c9f21969dfa2f157e25c126eb527e4d557 (patch) | |
tree | ac8b176e985511520e8230750cce5ad3dc151c11 | |
parent | b66a4a262fd19934efcda0aa5dbe5d74a7848f2b (diff) | |
download | zsh-189aa5c9f21969dfa2f157e25c126eb527e4d557.tar.gz zsh-189aa5c9f21969dfa2f157e25c126eb527e4d557.tar.xz zsh-189aa5c9f21969dfa2f157e25c126eb527e4d557.zip |
17235: strftime builtin
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Src/Modules/datetime.c | 99 | ||||
-rw-r--r-- | Src/Modules/datetime.mdd | 8 |
3 files changed, 110 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 43f486ad7..19ba9b4bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2002-05-26 Clint Adams <clint@zsh.org> + * 17235: Src/Modules/datetime.c, Src/Modules/datetime.mdd: + strftime builtin. + * 17234: Completion/Unix/Command/_cvs: don't call _path_files with empty (). diff --git a/Src/Modules/datetime.c b/Src/Modules/datetime.c new file mode 100644 index 000000000..ff9158019 --- /dev/null +++ b/Src/Modules/datetime.c @@ -0,0 +1,99 @@ +/* + * datetime.c - parameter interface to langinfo via curses + * + * This file is part of zsh, the Z shell. + * + * Copyright (c) 2002 Peter Stephenson, Clint Adams + * All rights reserved. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and to distribute modified versions of this software for any + * purpose, provided that the above copyright notice and the following + * two paragraphs appear in all copies of this software. + * + * In no event shall Peter Stephenson, Clint Adams or the Zsh Development Group + * be liable to any party for direct, indirect, special, incidental, or + * consequential damages arising out of the use of this software and its + * documentation, even if Peter Stephenson, Clint Adams and the Zsh + * Development Group have been advised of the possibility of such damage. + * + * Peter Stephenson, Clint Adams and the Zsh Development Group specifically + * disclaim any warranties, including, but not limited to, the implied + * warranties of merchantability and fitness for a particular purpose. + * The software provided hereunder is on an "as is" basis, and Peter + * Stephenson, Clint Adams and the Zsh Development Group have no obligation + * to provide maintenance, support, updates, enhancements, or modifications. + * + */ + +#include "datetime.mdh" +#include "datetime.pro" +#include <time.h> + +static char datetime_nam[] = "datetime"; + +static int +bin_strftime(char *nam, char **argv, char *ops, int func) +{ + int ret = 0, bufsize, x; + char *endptr = NULL, *buffer = NULL; + time_t secs; + struct tm *t; + int size; + + secs = (time_t)strtoul(argv[1], &endptr, 10); + if (secs == ULONG_MAX) { + zwarnnam(nam, "%s: %e", argv[1], errno); + return 1; + } else if (*endptr != '\0') { + zwarnnam(nam, "%s: invalid decimal number", argv[1], 0); + return 1; + } + + t = localtime(&secs); + bufsize = strlen(argv[0]) * 2; + + for (x=1;x<4;x++) { + buffer = zrealloc(buffer, bufsize * x); + size = ztrftime(buffer, bufsize * x, argv[0], t); + if (size) x = 4; + } + + printf("%s\n", buffer); + + return 0; +} + +static struct builtin bintab[] = { + BUILTIN("strftime", 0, bin_strftime, 2, 2, 0, NULL, NULL), +}; + +/**/ +int +setup_(Module m) +{ + return 0; +} + +/**/ +int +boot_(Module m) +{ + return !addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); +} + +/**/ +int +cleanup_(Module m) +{ + deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); + return 0; +} + +/**/ +int +finish_(Module m) +{ + return 0; +} diff --git a/Src/Modules/datetime.mdd b/Src/Modules/datetime.mdd new file mode 100644 index 000000000..fbe7e0356 --- /dev/null +++ b/Src/Modules/datetime.mdd @@ -0,0 +1,8 @@ +name=zsh/datetime + +link=either +load=no + +autobins="strftime" + +objects="datetime.o" |