diff options
author | Rob Landley <rob@landley.net> | 2013-07-14 22:12:22 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2013-07-14 22:12:22 -0500 |
commit | 87aef2480ed3c6ca587815ea36e7dd380301c97c (patch) | |
tree | 29e22b25293b8fce82517d29e89f8d94866dd681 /lib/lib.c | |
parent | e999ca008416e3d41c1079bcb4d151b43c95dc3a (diff) | |
download | toybox-87aef2480ed3c6ca587815ea36e7dd380301c97c.tar.gz |
New stuff added to lib.c needs review too, so make a lib/pending.c and move several functions to it.
Diffstat (limited to 'lib/lib.c')
-rw-r--r-- | lib/lib.c | 109 |
1 files changed, 0 insertions, 109 deletions
@@ -1034,37 +1034,6 @@ int yesno(char *prompt, int def) return def; } -// Execute a callback for each PID that matches a process name from a list. -void for_each_pid_with_name_in(char **names, int (*callback)(pid_t pid, char *name)) -{ - DIR *dp; - struct dirent *entry; - char cmd[sizeof(toybuf)], path[64]; - char **curname; - - if (!(dp = opendir("/proc"))) perror_exit("opendir"); - - while ((entry = readdir(dp))) { - int fd, n; - - if (!isdigit(*entry->d_name)) continue; - - if (sizeof(path) <= snprintf(path, sizeof(path), "/proc/%s/cmdline", - entry->d_name)) continue; - - if (-1 == (fd=open(path, O_RDONLY))) continue; - n = read(fd, cmd, sizeof(cmd)); - close(fd); - if (n<1) continue; - - for (curname = names; *curname; curname++) - if (!strcmp(basename(cmd), *curname)) - if (!callback(atol(entry->d_name), *curname)) goto done; - } -done: - closedir(dp); -} - struct signame { int num; char *name; @@ -1235,81 +1204,3 @@ void mode_to_string(mode_t mode, char *buf) else c = '-'; *buf = c; } - -char* make_human_readable(unsigned long long size, unsigned long unit) -{ - unsigned int frac = 0; - if(unit) { - size = (size/(unit)) + (size%(unit)?1:0); - return xmsprintf("%llu", size); - } - else { - static char units[] = {'\0', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'}; - int index = 0; - while(size >= 1024) { - frac = size%1024; - size /= 1024; - index++; - } - frac = (frac/102) + ((frac%102)?1:0); - if(frac >= 10) { - size += 1; - frac = 0; - } - if(frac) return xmsprintf("%llu.%u%c", size, frac, units[index]); - else return xmsprintf("%llu%c", size, units[index]); - } - return NULL; //not reached -} - -// strtoul with exit on error -unsigned long xstrtoul(const char *nptr, char **endptr, int base) -{ - unsigned long l; - errno = 0; - l = strtoul(nptr, endptr, base); - if (errno) - perror_exit("xstrtoul"); - return l; -} - -/* - * used to get the interger value. - */ -unsigned long get_int_value(const char *numstr, unsigned lowrange, unsigned highrange) -{ - unsigned long rvalue = 0; - char *ptr; - if(*numstr == '-' || *numstr == '+' || isspace(*numstr)) perror_exit("invalid number '%s'", numstr); - errno = 0; - rvalue = strtoul(numstr, &ptr, 10); - if(errno || numstr == ptr) perror_exit("invalid number '%s'", numstr); - if(*ptr) perror_exit("invalid number '%s'", numstr); - if(rvalue >= lowrange && rvalue <= highrange) return rvalue; - else { - perror_exit("invalid number '%s'", numstr); - return rvalue; //Not reachable; to avoid waring message. - } -} - -/* - * strcat to mallocated buffer - * reallocate if need be - */ -char *astrcat (char *x, char *y) { - char *z; - z = x; - x = realloc (x, (x ? strlen (x) : 0) + strlen (y) + 1); - if (!x) return 0; - (z ? strcat : strcpy) (x, y); - return x; -} - -/* - * astrcat, but die on failure - */ -char *xastrcat (char *x, char *y) { - x = astrcat (x, y); - if (!x) error_exit ("xastrcat"); - return x; -} |