aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toys/date.c47
-rw-r--r--toys/taskset.c45
2 files changed, 33 insertions, 59 deletions
diff --git a/toys/date.c b/toys/date.c
index ebcdeb1f..7881f464 100644
--- a/toys/date.c
+++ b/toys/date.c
@@ -6,7 +6,7 @@
*
* See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html
-USE_DATE(NEWTOY(date, "u", TOYFLAG_BIN))
+USE_DATE(NEWTOY(date, "r:u", TOYFLAG_BIN))
config DATE
bool "date"
@@ -23,8 +23,7 @@ config DATE
static int fromdec(const char *buf, int len)
{
int result = 0;
- while (len--)
- result=result * 10 + (*buf++ - '0');
+ while (len--) result=result * 10 + (*buf++ - '0');
return result;
}
@@ -36,16 +35,13 @@ void date_main(void)
if (!toys.optargs[0] || toys.optargs[0][0] == '+') {
time_t now = time(NULL);
struct tm *tm;
- if (toys.optargs[0])
- format_string = &toys.optargs[0][1];
- if (toys.optflags)
- tm = gmtime(&now);
- else
- tm = localtime(&now);
- if (!tm)
- perror_msg("Unable to retrieve current time");
+
+ if (toys.optargs[0]) format_string = toys.optargs[0]+1;
+ if (toys.optflags) tm = gmtime(&now);
+ else tm = localtime(&now);
+ if (!tm) perror_msg("Unable to retrieve current time");
if (!strftime(toybuf, sizeof(toybuf), format_string, tm))
- perror_msg("invalid format string `%s'", format_string);
+ perror_msg("bad format `%s'", format_string);
puts(toybuf);
} else {
int len = strlen(toys.optargs[0]);
@@ -53,30 +49,26 @@ void date_main(void)
struct timeval tv;
if (len < 8 || len > 12 || len & 1)
- error_msg("invalid date `%s'", toys.optargs[0]);
+ error_msg("bad date `%s'", toys.optargs[0]);
memset(&tm, 0, sizeof(tm));
/* Date format: mmddhhmm[[cc]yy] */
tm.tm_mon = fromdec(toys.optargs[0], 2) - 1;
tm.tm_mday = fromdec(&toys.optargs[0][2], 2);
tm.tm_hour = fromdec(&toys.optargs[0][4], 2);
tm.tm_min = fromdec(&toys.optargs[0][6], 2);
- if (len == 12)
- tm.tm_year = fromdec(&toys.optargs[0][8], 4) - 1900;
+ if (len == 12) tm.tm_year = fromdec(&toys.optargs[0][8], 4) - 1900;
else if (len == 10) {
tm.tm_year = fromdec(&toys.optargs[0][8], 2);
/* 69-99 = 1969-1999, 0 - 68 = 2000-2068 */
- if (tm.tm_year < 69)
- tm.tm_year += 100;
+ if (tm.tm_year < 69) tm.tm_year += 100;
} else {
/* Year not specified, so retrieve current year */
time_t now = time(NULL);
struct tm *now_tm = localtime(&now);
- if (!now_tm)
- perror_msg("Unable to retrieve current time");
+ if (!now_tm) perror_msg("Unable to retrieve current time");
tm.tm_year = now_tm->tm_year;
}
- if (!toys.optflags)
- tv.tv_sec = mktime(&tm);
+ if (!toys.optflags) tv.tv_sec = mktime(&tm);
else {
/* Get the UTC version of a struct tm */
char *tz = NULL;
@@ -84,20 +76,17 @@ void date_main(void)
setenv("TZ", "", 1);
tzset();
tv.tv_sec = mktime(&tm);
- if (tz)
- setenv("TZ", tz, 1);
- else
- unsetenv("TZ");
+ if (tz) setenv("TZ", tz, 1);
+ else unsetenv("TZ");
tzset();
}
if (tv.tv_sec == (time_t)-1)
- error_msg("invalid date `%s'", toys.optargs[0]);
+ error_msg("bad `%s'", toys.optargs[0]);
tv.tv_usec = 0;
if (!strftime(toybuf, sizeof(toybuf), format_string, &tm))
- perror_msg("invalid format string `%s'", format_string);
+ perror_msg("bad format `%s'", format_string);
puts(toybuf);
- if (settimeofday(&tv, NULL) < 0)
- perror_msg("cannot set date");
+ if (settimeofday(&tv, NULL) < 0) perror_msg("cannot set date");
}
}
diff --git a/toys/taskset.c b/toys/taskset.c
index c877264a..6a962241 100644
--- a/toys/taskset.c
+++ b/toys/taskset.c
@@ -17,7 +17,7 @@ config TASKSET
When mask is present the CPU affinity mask of a given PID will
be set to this mask. When a mask is not given, the mask will
be printed. A mask is a hexadecimal string where the bit position
- ..matches the cpu number.
+ matches the cpu number.
-a Set/get the affinity of all tasks of a PID.
*/
@@ -31,18 +31,14 @@ static int str_to_cpu_set(char * mask, cpu_set_t *set)
int cpu = 0;
CPU_ZERO(set);
- if (size > 1 && mask[0] == '0' && mask[1] == 'x')
- mask += 2;
+ if (size > 1 && mask[0] == '0' && mask[1] == 'x') mask += 2;
while(ptr >= mask)
{
char val = 0;
- if ( *ptr >= '0' && *ptr <= '9')
- val = *ptr - '0';
- else if (*ptr >= 'a' && *ptr <= 'f')
- val = 10 + (*ptr - 'a');
- else
- return -1;
+ if ( *ptr >= '0' && *ptr <= '9') val = *ptr - '0';
+ else if (*ptr >= 'a' && *ptr <= 'f') val = 10 + (*ptr - 'a');
+ else return -1;
if (val & 1) CPU_SET(cpu, set);
if (val & 2) CPU_SET(cpu + 1, set);
@@ -68,10 +64,8 @@ static char * cpu_set_to_str(cpu_set_t *set)
if (CPU_ISSET(cpu + 3, set)) val |= 8;
if (ptr != toybuf || val != 0)
{
- if (val < 10)
- *ptr = '0' + val;
- else
- *ptr = 'a' + (val - 10);
+ if (val < 10) *ptr = '0' + val;
+ else *ptr = 'a' + (val - 10);
ptr++;
}
}
@@ -82,6 +76,8 @@ static char * cpu_set_to_str(cpu_set_t *set)
static void do_taskset(pid_t pid)
{
cpu_set_t mask;
+
+ if (!pid) return;
if (sched_getaffinity(pid, sizeof(mask), &mask))
perror_exit("failed to get %d's affinity", pid);
@@ -90,7 +86,7 @@ static void do_taskset(pid_t pid)
if (toys.optc == 2)
{
if (str_to_cpu_set(toys.optargs[0], &mask))
- perror_exit("failed to parse CPU mask: %s", toys.optargs[0]);
+ perror_exit("bad mask: %s", toys.optargs[0]);
if (sched_setaffinity(pid, sizeof(mask), &mask))
perror_exit("failed to set %d's affinity", pid);
@@ -104,15 +100,10 @@ static void do_taskset(pid_t pid)
static int task_cb(struct dirtree *new)
{
- if (S_ISDIR(new->st.st_mode))
- {
- if (strstr(new->name,"/task/\0") != NULL)
- return DIRTREE_RECURSE;
+ if (!new->parent) return DIRTREE_RECURSE;
+ if (S_ISDIR(new->st.st_mode) && *new->name != '.')
+ do_taskset(atoi(new->name));
- pid_t tid = atoi(new->name);
- if (tid)
- do_taskset(tid);
- }
return 0;
}
@@ -120,15 +111,9 @@ void taskset_main(void)
{
char * pidstr = (toys.optc==1)?toys.optargs[0]:toys.optargs[1];
- if ( toys.optflags & 0x1 )
+ if (toys.optflags & 0x1)
{
sprintf(toybuf, "/proc/%s/task/", pidstr);
dirtree_read(toybuf, task_cb);
- }
- else
- {
- pid_t tid = atoi(pidstr);
- if (tid)
- do_taskset(tid);
- }
+ } else do_taskset(atoi(pidstr));
}