about summary refs log tree commit diff
path: root/Src/Builtins
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-06-14 13:25:58 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-06-14 13:25:58 +0000
commita016fed99f33d040c18515cc749f98a254b5a7e5 (patch)
treeea1040d4063157fa37bd63e81fc65e7608d80226 /Src/Builtins
parent7eeb60659972e0150258f59379e16b5ee2e8343f (diff)
downloadzsh-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.c69
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;