OSDN Git Service

Add strafter() to lib.
authorRob Landley <rob@landley.net>
Tue, 29 Dec 2015 17:52:12 +0000 (11:52 -0600)
committerRob Landley <rob@landley.net>
Tue, 29 Dec 2015 17:52:12 +0000 (11:52 -0600)
lib/lib.c
lib/lib.h
toys/other/vmstat.c

index 5ee7325..c89aeb6 100644 (file)
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -342,6 +342,14 @@ char *strlower(char *s)
   return try;
 }
 
+// strstr but returns pointer after match
+char *strafter(char *haystack, char *needle)
+{
+  char *s = strstr(haystack, needle);
+
+  return s ? s+strlen(needle) : s;
+}
+
 // Remove trailing \n
 char *chomp(char *s)
 {
index 5f70c8c..235b208 100644 (file)
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -173,6 +173,7 @@ long atolx(char *c);
 long atolx_range(char *numstr, long low, long high);
 int stridx(char *haystack, char needle);
 char *strlower(char *s);
+char *strafter(char *haystack, char *needle);
 char *chomp(char *s);
 int unescape(char c);
 int strstart(char **a, char *b);
index df35db1..ae856cf 100644 (file)
@@ -62,10 +62,7 @@ static void get_vmstat_proc(struct vmstat_proc *vmstat_proc)
       xreadfile(name = vmstuff[i], toybuf, sizeof(toybuf));
 
       continue;
-    } else {
-      if (!(p = strstr(toybuf, vmstuff[i]))) goto error;
-      p += strlen(vmstuff[i]);
-    }
+    } else if (!(p = strafter(toybuf, vmstuff[i]))) goto error;
     if (1 != sscanf(p, "%"PRIu64"%n", new++, &j)) goto error;
     p += j;
   }
@@ -123,7 +120,7 @@ void vmstat_main(void)
     if (!loop) {
       char *s = toybuf;
 
-      xreadfile("/proc/uptime", toybuf, sizeof(toybuf)-1);
+      xreadfile("/proc/uptime", toybuf, sizeof(toybuf));
       while (*(s++) > ' ');
       sscanf(s, "%"PRIu64, &units);
     } else units = loop_delay;