diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2007-06-14 13:25:58 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2007-06-14 13:25:58 +0000 |
commit | a016fed99f33d040c18515cc749f98a254b5a7e5 (patch) | |
tree | ea1040d4063157fa37bd63e81fc65e7608d80226 /Src/Builtins | |
parent | 7eeb60659972e0150258f59379e16b5ee2e8343f (diff) | |
download | zsh-a016fed99f33d040c18515cc749f98a254b5a7e5.tar.gz zsh-a016fed99f33d040c18515cc749f98a254b5a7e5.tar.xz zsh-a016fed99f33d040c18515cc749f98a254b5a7e5.zip |
23560: improve $zsh_scheduled_events to make it easier to parse
Diffstat (limited to 'Src/Builtins')
-rw-r--r-- | Src/Builtins/sched.c | 69 |
1 files changed, 31 insertions, 38 deletions
diff --git a/Src/Builtins/sched.c b/Src/Builtins/sched.c index 1c7c0341f..21a2aad32 100644 --- a/Src/Builtins/sched.c +++ b/Src/Builtins/sched.c @@ -145,40 +145,6 @@ checksched(void) } } -/* - * Format event sch. If sn is zero, allocate string on the heap - * and return it; if non-zero, print with that as scheduled event - * number. - */ - -static -char *schedtext(struct schedcmd *sch, int sn) -{ - char *str, tbuf[40], *flagstr, *endstr; - time_t t; - struct tm *tmp; - - t = sch->time; - tmp = localtime(&t); - ztrftime(tbuf, 20, "%a %b %e %k:%M;%S", tmp); - if (sch->flags & SCHEDFLAG_TRASH_ZLE) - flagstr = "-o "; - else - flagstr = ""; - if (*sch->cmd == '-') - endstr = "-- "; - else - endstr = ""; - if (sn) { - printf("%3d %s %s%s%s\n", sn, tbuf, flagstr, endstr, sch->cmd); - return NULL; - } else { - str = (char *)zhalloc(48 + strlen(sch->cmd)); - sprintf(str, "%s %s%s%s", tbuf, flagstr, endstr, sch->cmd); - return str; - } -} - /**/ static int bin_sched(char *nam, char **argv, UNUSED(Options ops), UNUSED(int func)) @@ -238,8 +204,24 @@ bin_sched(char *nam, char **argv, UNUSED(Options ops), UNUSED(int func)) /* given no arguments, display the schedule list */ if (!*argptr) { - for (sn = 1, sch = schedcmds; sch; sch = sch->next, sn++) - (void)schedtext(sch, 1); + for (sn = 1, sch = schedcmds; sch; sch = sch->next, sn++) { + char tbuf[40], *flagstr, *endstr; + time_t t; + struct tm *tmp; + + t = sch->time; + tmp = localtime(&t); + ztrftime(tbuf, 20, "%a %b %e %k:%M:%S", tmp); + if (sch->flags & SCHEDFLAG_TRASH_ZLE) + flagstr = "-o "; + else + flagstr = ""; + if (*sch->cmd == '-') + endstr = "-- "; + else + endstr = ""; + printf("%3d %s %s%s%s\n", sn, tbuf, flagstr, endstr, sch->cmd); + } return 0; } else if (!argptr[1]) { /* other than the two cases above, sched * @@ -365,8 +347,19 @@ schedgetfn(UNUSED(Param pm)) ; aptr = ret = zhalloc(sizeof(char **) * (i+1)); - for (sch = schedcmds; sch; sch = sch->next, aptr++) - *aptr = schedtext(sch, 0); + for (sch = schedcmds; sch; sch = sch->next, aptr++) { + char tbuf[40], *flagstr; + time_t t; + + t = sch->time; + sprintf(tbuf, "%ld", t); + if (sch->flags & SCHEDFLAG_TRASH_ZLE) + flagstr = "-o"; + else + flagstr = ""; + *aptr = (char *)zhalloc(5 + strlen(tbuf) + strlen(sch->cmd)); + sprintf(*aptr, "%s:%s:%s", tbuf, flagstr, sch->cmd); + } *aptr = NULL; return ret; |