Introduction
Introduction Statistics Contact Development Disclaimer Help
Save geomyidae from invalid gph files. - geomyidae - A small C-based gopherd.
git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfri…
Log
Files
Refs
Tags
README
LICENSE
---
commit aef0076447d9ca07b4e758287f611e6cbbda224e
parent 387ac8be93c952305d9ef77e95ca21852cd47f4a
Author: Christoph Lohmann <[email protected]>
Date: Wed, 14 Jun 2017 22:54:50 +0200
Save geomyidae from invalid gph files.
Diffstat:
M ind.c | 58 ++++++++++++++++-------------…
1 file changed, 30 insertions(+), 28 deletions(-)
---
diff --git a/ind.c b/ind.c
@@ -177,41 +177,43 @@ addelem(Elems *e, char *s)
Elems *
getadv(char *str)
{
- char *b, *e;
+ char *b, *e, *o;
Elems *ret;
ret = xcalloc(1, sizeof(Elems));
- if(*str != '[') {
- b = str;
- if(*str == 't')
- b++;
- addelem(ret, "i");
- addelem(ret, b);
- addelem(ret, "Err");
- addelem(ret, "server");
- addelem(ret, "port");
-
- return ret;
- }
+ if (str[0] == '[') {
+ o = xstrdup(str);
+ b = o + 1;
+ while ((e = strchr(b, '|')) != nil) {
+ *e = '\0';
+ e++;
+ addelem(ret, b);
+ b = e;
+ }
- b = str + 1;
- while((e = strchr(b, '|')) != nil) {
- *e = '\0';
- e++;
- addelem(ret, b);
- b = e;
- }
+ e = strchr(b, ']');
+ if (e != nil) {
+ *e = '\0';
+ addelem(ret, b);
+ }
+ free(o);
+ if (ret->e != nil && ret->num == 5)
+ return ret;
- e = strchr(b, ']');
- if(e != nil) {
- *e = '\0';
- addelem(ret, b);
- }
- if(ret->e == nil) {
- free(ret);
- return nil;
+ /* Invalid entry: Give back the whole line. */
+ freeelem(ret);
+ ret = xcalloc(1, sizeof(Elems));
}
+ b = str;
+ if(*str == 't')
+ b++;
+ addelem(ret, "i");
+ addelem(ret, b);
+ addelem(ret, "Err");
+ addelem(ret, "server");
+ addelem(ret, "port");
+
return ret;
}
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.