annotate toys/pending/watch.c @ 1349:bf2e5591bdf0 draft

Cleanup strings.
author Rob Landley <rob@landley.net>
date Wed, 11 Jun 2014 08:02:55 -0500
parents 0ecfaa7022e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 /* watch.c - Execute a program periodically
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
2 *
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 * Copyright 2013 Sandeep Sharma <sandeep.jack2756@gmail.com>
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
4 * Copyright 2013 Kyungwan Han <asura321@gmail.com>
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 *
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
6 USE_WATCH(NEWTOY(watch, "^<1n#<0=2te", TOYFLAG_USR|TOYFLAG_BIN))
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
7
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
8 config WATCH
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
9 bool "watch"
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
10 default n
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
11 help
1265
0ecfaa7022e8 usage: is lower case (the help generator looks for that, might as well be consistent).
Rob Landley <rob@landley.net>
parents: 1183
diff changeset
12 usage: watch [-n SEC] [-t] PROG ARGS
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
13
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 Run PROG periodically
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
15
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 -n Loop period in seconds (default 2)
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
17 -t Don't print header
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
18 -e Freeze updates on command error, and exit after enter.
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 */
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
20 #define FOR_watch
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
21 #include "toys.h"
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
22
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 GLOBALS(
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
24 int interval;
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 )
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
26
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
27 void watch_main(void)
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 {
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
29 int i = 0, hlen;
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
30 time_t t;
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
31 unsigned width = 80, len = sizeof("Www Mmm dd hh:mm:ss yyyy") - 1 ;
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
32 char *header, *cmd = *toys.optargs;
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
33 int retval;
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
34
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
35 while(toys.optargs[++i])
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
36 {
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
37 char * oldcmd = cmd;
1183
0752b2d58909 Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents: 1096
diff changeset
38 cmd = xmprintf("%s %s", oldcmd, toys.optargs[i]);
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
39 if (CFG_TOYBOX_FREE) free(oldcmd);
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
40 }
1183
0752b2d58909 Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents: 1096
diff changeset
41 header = xmprintf("Every %us: %s", TT.interval, cmd);
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
42 hlen = strlen(header);
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
43
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 while(1) {
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
45 xprintf("\033[H\033[J");
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 if(!(toys.optflags & FLAG_t)) {
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
47 terminal_size(&width, NULL);
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 if (!width) width = 80; //on serial it may return 0.
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
49 time(&t);
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
50 if (width > (hlen + len)) xprintf("%s", header);
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
51 if(width >= len)
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
52 xprintf("%*s\n",width + ((width > (hlen + len))?-hlen:0) + 1, ctime(&t));
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
53 else
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
54 xprintf("\n\n");
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
55 }
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
56 fflush(NULL); //making sure the screen is clear
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
57 retval = system(cmd);
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
58 if ((toys.optflags & FLAG_e) && retval){
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
59 xprintf("command exit with non-zero status, press enter to exit\n");
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
60 getchar();
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
61 break;
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
62 }
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
63 sleep(TT.interval);
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
64 }
1096
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
65
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
66 if (CFG_TOYBOX_FREE){
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
67 free(header);
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
68 if (cmd != *toys.optargs) free(cmd);
580a0300b68f watch: Add support for -e option, remove memory leak and deal with not-wide terminals
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1020
diff changeset
69 }
1020
fe7725c1819a Add watch and ps, sent by Ashwini Sharma.
Rob Landley <rob@landley.net>
parents:
diff changeset
70 }