gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r26082 - in monkey/trunk/pathologist/src: . struct_parse


From: gnunet
Subject: [GNUnet-SVN] r26082 - in monkey/trunk/pathologist/src: . struct_parse
Date: Wed, 13 Feb 2013 00:09:51 +0100

Author: teichm
Date: 2013-02-13 00:09:50 +0100 (Wed, 13 Feb 2013)
New Revision: 26082

Added:
   monkey/trunk/pathologist/src/struct_parse/
   monkey/trunk/pathologist/src/struct_parse/p.c
Log:
add draft for struct parser

Added: monkey/trunk/pathologist/src/struct_parse/p.c
===================================================================
--- monkey/trunk/pathologist/src/struct_parse/p.c                               
(rev 0)
+++ monkey/trunk/pathologist/src/struct_parse/p.c       2013-02-12 23:09:50 UTC 
(rev 26082)
@@ -0,0 +1,64 @@
+#include <stdio.h>
+#include <string.h>
+
+int parse(char* str) {
+       char* token = str;
+       char* name;
+       char* value;
+       int i, ret = 1;
+
+       if(str[0] != '{') return 0;
+       while(*token != '\0' && (*token == '{' || *token == ' ')) token++;
+       if(*token == '\0') return 0;
+       while(*token != '\0') {
+               i=1;
+               name = token;
+               while(*token != '\0' && *token != ' ' && *token != '=')
+                       if(*token == '{' || *token == '}')
+                               return 0;
+                       else
+                               token++;
+               if(*token == '\0') return 0;
+               *(token++) = '\0';
+               while(*token != '\0' && (*token == ' ' || *token == '=')) 
token++;
+               if(*token == '\0') return 0;
+               value = token;
+               if(*token == '{') {
+                       while(i>0) {
+                               token++;
+                               if(*token == '\0') return 0;
+                               if(*token == '{') i++;
+                               if(*token == '}') i--;
+                       }
+                       token++;
+               } else {
+                       while(*token != '\0' && *token != ',' && *token != '}') 
token++;
+                       if(*token == '\0') return 0;
+               }
+               if(*token == '}')
+                       if(*(token+1) != '\0') return 0;
+                       else {
+                               *(token++) = '\0';
+                               printf("name: %s\tvalue: %s\n", name, value);
+                               break;
+                       }
+               *(token++) = '\0';
+               if(!i && printf("name: %s\n", name)) {
+                       if(!parse(value)) ret = 0;
+               } else printf("name: %s\tvalue: %s\n", name, value);
+               while(*token == ',' || *token == ' ') token++;
+               if(*token == '}' && *(token+1) == '\0') break;
+       }
+       return ret;
+}
+
+
+
+int main(int argc, char* argv[]) {
+       int i;
+       for(i=1; i<argc; i++) {
+               printf("\nreturned: %d\n", parse(argv[i]));
+       }
+       
+       return 0;
+}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]