]> git.webhop.me Git - lcd4linux.git/commitdiff
[lcd4linux @ 2004-02-01 19:37:40 by reinelt]
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Sun, 1 Feb 2004 19:37:40 +0000 (19:37 +0000)
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Sun, 1 Feb 2004 19:37:40 +0000 (19:37 +0000)
got rid of every strtok() incarnation.

git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@352 3ae390bd-cb1e-0410-b409-cd5a39f66f1f

layout.c
plugin_cfg.c
plugin_netdev.c
plugin_proc_stat.c

index 7fb01de4d5f02cad8950201c5cd2c0abf611d1af..451d80aa525f57f9465331be70c602955cae7300 100644 (file)
--- a/layout.c
+++ b/layout.c
@@ -1,4 +1,4 @@
-/* $Id: layout.c,v 1.8 2004/02/01 18:08:50 reinelt Exp $
+/* $Id: layout.c,v 1.9 2004/02/01 19:37:40 reinelt Exp $
  *
  * new layouter framework
  *
@@ -23,6 +23,9 @@
  *
  *
  * $Log: layout.c,v $
+ * Revision 1.9  2004/02/01 19:37:40  reinelt
+ * got rid of every strtok() incarnation.
+ *
  * Revision 1.8  2004/02/01 18:08:50  reinelt
  * removed strtok() from layout processing (took me hours to find this bug)
  * further strtok() removind should be done!
@@ -111,20 +114,22 @@ int layout_init (char *layout)
   // map to lower char for scanf()
   for (l=list; *l!='\0'; l++) *l=tolower(*l);
 
-  while (list!=NULL) {
-    char *pipe;
+  l=list;
+  while (l!=NULL) {
+    char *p;
     int i, n;
     // list is delimited by |
-    if ((pipe=strchr(list, '|'))!=NULL) *pipe='\0';
-    i=sscanf (list, "row%d.col%d%n", &row, &col, &n);
-    if (i==2 && list[n]=='\0') {
-      widget=cfg_get(section, list, NULL);
+    while (*l=='|') l++;
+    if ((p=strchr(l, '|'))!=NULL) *p='\0';
+    i=sscanf (l, "row%d.col%d%n", &row, &col, &n);
+    if (i==2 && l[n]=='\0') {
+      widget=cfg_get(section, l, NULL);
       if (widget!=NULL && *widget!='\0') {
        layout_addItem (widget, row, col);
       }
     }
     // next field
-    list=pipe?pipe+1:NULL;
+    l=p?p+1:NULL;
   }
   free (list);
   
index 14296c42a09e32e2ae21c341a16a959373cf7151..0a9f9c6e120095be861908a7c75b4e4005b00103 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: plugin_cfg.c,v 1.4 2004/01/30 20:57:56 reinelt Exp $
+/* $Id: plugin_cfg.c,v 1.5 2004/02/01 19:37:40 reinelt Exp $
  *
  * plugin for config file access
  *
@@ -23,6 +23,9 @@
  *
  *
  * $Log: plugin_cfg.c,v $
+ * Revision 1.5  2004/02/01 19:37:40  reinelt
+ * got rid of every strtok() incarnation.
+ *
  * Revision 1.4  2004/01/30 20:57:56  reinelt
  * HD44780 patch from Martin Hejl
  * dmalloc integrated
 static void load_variables (void)
 {
   char *section="Variables";
-  char *list, *key;
+  char *list, *l, *p;
   char *expression;
   RESULT result = {0, 0.0, NULL};
   
   list=cfg_list(section);
-  key=strtok(list, "|");
-  while (key!=NULL) {
-    if (strchr(key, '.')!=NULL || strchr(key, ':') !=0) {
-      error ("ignoring variable '%s' from %s: structures not allowed", key, cfg_source());
+  l=list;
+  while (l!=NULL) {
+    while (*l=='|') l++;
+    if ((p=strchr(l, '|'))!=NULL) *p='\0';
+    if (strchr(l, '.')!=NULL || strchr(l, ':') !=0) {
+      error ("ignoring variable '%s' from %s: structures not allowed", l, cfg_source());
     } else {
-      expression=cfg_get_raw (section, key, "");
+      expression=cfg_get_raw (section, l, "");
       if (expression!=NULL && *expression!='\0') {
        if (Eval(expression, &result)==0) {
-         debug ("Variable %s = '%s' (%f)", key, R2S(&result), R2N(&result));
-         SetVariable (key, &result);
+         debug ("Variable %s = '%s' (%f)", l, R2S(&result), R2N(&result));
+         SetVariable (l, &result);
          DelResult (&result);
        } else {
-         error ("error evaluating variable '%s' from %s", key, cfg_source());
+         error ("error evaluating variable '%s' from %s", list, cfg_source());
        }
       }
     }
-    key=strtok(NULL, "|");
+    l=p?p+1:NULL;
   }
   free (list);
   
index edfe1c44a20ed021772d92a5dd031ef9090b1931..2d49e3fcc7702fae6d2b2d01acdf00584d3553c4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: plugin_netdev.c,v 1.2 2004/01/29 04:40:02 reinelt Exp $
+/* $Id: plugin_netdev.c,v 1.3 2004/02/01 19:37:40 reinelt Exp $
  *
  * plugin for /proc/net/dev parsing
  *
@@ -23,6 +23,9 @@
  *
  *
  * $Log: plugin_netdev.c,v $
+ * Revision 1.3  2004/02/01 19:37:40  reinelt
+ * got rid of every strtok() incarnation.
+ *
  * Revision 1.2  2004/01/29 04:40:02  reinelt
  * every .c file includes "config.h" now
  *
@@ -86,8 +89,9 @@ static int parse_netdev (void)
   line=0;
   while (!feof(stream)) {
     char buffer[256];
-    char header[256];
+    char header[256], *h, *t;
     char *head[32];
+    char delim[]=" :|\t\n";
     int  col;
     
     if (fgets (buffer, sizeof(buffer), stream) == NULL) break;
@@ -97,26 +101,29 @@ static int parse_netdev (void)
 
     // line 2 used for headers
     if (line==2) {
-      char *h;
       strncpy(header, buffer, sizeof(header));
       RxTx=(strrchr(header, '|') - header);
       col=0;
-      h=strtok(header, "| \t\n");
+      h=header;
       while (h!=NULL) {
+       while (strchr(delim, *h)) h++;
+       if ((t=strpbrk(h, delim))!=NULL) *t='\0';
        head[col++]=h;
-       h=strtok(NULL, "| \t\n");
+       h=t?t+1:NULL;
       }
     } else {
       char *h, *iface=NULL;
       col=0;
-      h=strtok(buffer, ":| \t\n");
+      h=buffer;
       while (h!=NULL) {
+       while (strchr(delim, *h)) h++;
+       if ((t=strpbrk(h, delim))!=NULL) *t='\0';
        if (col==0) {
          iface=h;
        } else {
          hash_set3 (iface, (h-buffer) < RxTx ? "Rx" : "Tx", head[col], h);
        }
-       h=strtok(NULL, "| \t\n");
+       h=t?t+1:NULL;
        col++;
       }
     }
index 50537878b04252bcebdde2da813347b974ebb4c5..48a19a05340afdb8b6e309e601ce785ed218a68b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: plugin_proc_stat.c,v 1.13 2004/01/29 04:40:02 reinelt Exp $
+/* $Id: plugin_proc_stat.c,v 1.14 2004/02/01 19:37:40 reinelt Exp $
  *
  * plugin for /proc/stat parsing
  *
@@ -23,6 +23,9 @@
  *
  *
  * $Log: plugin_proc_stat.c,v $
+ * Revision 1.14  2004/02/01 19:37:40  reinelt
+ * got rid of every strtok() incarnation.
+ *
  * Revision 1.13  2004/01/29 04:40:02  reinelt
  * every .c file includes "config.h" now
  *
@@ -97,6 +100,7 @@ static HASH Stat = { 0, };
 
 static void hash_set1 (char *key1, char *val) 
 {
+  debug ("Michi: hash_set (<%s>=<%s>)", key1, val);
   hash_set_delta (&Stat, key1, val);
 }
 
@@ -137,51 +141,105 @@ static int parse_proc_stat (void)
   while (!feof(stream)) {
     char buffer[1024];
     if (fgets (buffer, sizeof(buffer), stream) == NULL) break;
-
+    
     if (strncmp(buffer, "cpu", 3)==0) {
-      char *cpu;
-      cpu=strtok(buffer, " \t\n");
-      hash_set2 (cpu, "user",   strtok(NULL, " \t\n"));
-      hash_set2 (cpu, "nice",   strtok(NULL, " \t\n"));
-      hash_set2 (cpu, "system", strtok(NULL, " \t\n"));
-      hash_set2 (cpu, "idle",   strtok(NULL, " \t\n"));
+      char *key[]  = { "user", "nice", "system", "idle" }; 
+      char delim[] = " \t\n";
+      char *cpu, *beg, *end; 
+      int i;
+      
+      cpu=buffer;
+      
+      // skip "cpu" or "cpu0" block
+      if ((end=strpbrk(buffer, delim))!=NULL) *end='\0'; 
+      beg=end?end+1:NULL;
+      
+      for (i=0; i<4 && beg!=NULL; i++) {
+       while (strchr(delim, *beg)) beg++; 
+       if ((end=strpbrk(beg, delim))) *end='\0'; 
+       hash_set2 (cpu, key[i], beg); 
+       beg=end?end+1:NULL;
+      }
     } 
+    
     else if (strncmp(buffer, "page ", 5)==0) {
-      strtok(buffer, " \t\n");
-      hash_set2 ("page", "in",  strtok(NULL, " \t\n"));
-      hash_set2 ("page", "out", strtok(NULL, " \t\n"));
+      char *key[]  = { "in", "out" }; 
+      char delim[] = " \t\n";
+      char *beg, *end;
+      int i;
+      
+      for (i=0, beg=buffer+5; i<2 && beg!=NULL; i++) {
+       while (strchr(delim, *beg)) beg++; 
+       if ((end=strpbrk(beg, delim))) *end='\0'; 
+       hash_set2 ("page", key[i], beg); 
+       beg=end?end+1:NULL;
+      }
     } 
+    
     else if (strncmp(buffer, "swap ", 5)==0) {
-      strtok(buffer, " \t\n");
-      hash_set2 ("swap", "in",  strtok(NULL, " \t\n"));
-      hash_set2 ("swap", "out", strtok(NULL, " \t\n"));
+      char *key[]  = { "in", "out" }; 
+      char delim[] = " \t\n";
+      char *beg, *end;
+      int i;
+      
+      for (i=0, beg=buffer+5; i<2 && beg!=NULL; i++) {
+       while (strchr(delim, *beg)) beg++; 
+       if ((end=strpbrk(beg, delim))) *end='\0'; 
+       hash_set2 ("swap", key[i], beg); 
+       beg=end?end+1:NULL;
+      }
     } 
+
     else if (strncmp(buffer, "intr ", 5)==0) {
+      char delim[]=" \t\n";
+      char *beg, *end, num[4];
       int i;
-      strtok(buffer, " \t\n");
-      hash_set2 ("intr", "sum", strtok(NULL, " \t\n"));
-      for (i=0; i<16; i++) {
-       char buffer[3];
-       snprintf(buffer, sizeof(buffer), "%d", i);
-       hash_set2 ("intr", buffer, strtok(NULL, " \t\n"));
+      
+      for (i=0, beg=buffer+5; i<17 && beg!=NULL; i++) {
+       while (strchr(delim, *beg)) beg++; 
+       if ((end=strpbrk(beg, delim))) *end='\0'; 
+       if (i==0) 
+         snprintf(num, sizeof(num), "sum");
+       else 
+         snprintf(num, sizeof(num), "%d", i-1);
+       hash_set2 ("intr", num,  beg);
+       beg=end?end+1:NULL;
       }
     } 
+    
+
     else if (strncmp(buffer, "disk_io:", 8)==0) {
-      char *dev=strtok(buffer+8, " \t\n:()");
+      char *key[]  = { "io", "rio", "rblk", "wio", "wblk" }; 
+      char delim[] = " ():,\t\n";
+      char *dev, *beg, *end, *p;
+      int i;
+      
+      dev=buffer+8;
       while (dev!=NULL) {
-       char *p;
+       while (strchr(delim, *dev)) dev++; 
+       if ((end=strchr(dev, ')'))) *end='\0'; 
        while ((p=strchr(dev, ','))!=NULL) *p=':';
-       hash_set3 ("disk_io", dev, "io",   strtok(NULL, " :(,"));
-       hash_set3 ("disk_io", dev, "rio",  strtok(NULL, " ,"));
-       hash_set3 ("disk_io", dev, "rblk", strtok(NULL, " ,"));
-       hash_set3 ("disk_io", dev, "wio",  strtok(NULL, " ,"));
-       hash_set3 ("disk_io", dev, "wblk", strtok(NULL, " ,)"));
-       dev=strtok(NULL, " \t\n:()");
-      }
-    } 
+       beg=end?end+1:NULL;
+       for (i=0; i<5 && beg!=NULL; i++) {
+         while (strchr(delim, *beg)) beg++; 
+         if ((end=strpbrk(beg, delim))) *end='\0'; 
+         hash_set3 ("disk_io", dev, key[i], beg); 
+         beg=end?end+1:NULL;
+       }
+       dev=beg;
+      } 
+    }
+    
     else {
-      char *key=strtok(buffer, " \t\n");
-      hash_set2 (key, NULL, strtok(NULL, " \t\n"));
+      char delim[] = " \t\n";
+      char *beg, *end;
+
+      beg=buffer;
+      if ((end=strpbrk(beg, delim))) *end='\0'; 
+      beg=end?end+1:NULL;
+      if ((end=strpbrk(beg, delim))) *end='\0'; 
+      while (strchr(delim, *beg)) beg++; 
+      hash_set1 (buffer, beg);
     } 
   }
   fclose (stream);