[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;
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r26082 - in monkey/trunk/pathologist/src: . struct_parse,
gnunet <=