diff options
author | Tatsuya Kinoshita <tats@vega.ocn.ne.jp> | 2011-05-04 07:05:14 +0000 |
---|---|---|
committer | Tatsuya Kinoshita <tats@vega.ocn.ne.jp> | 2011-05-04 07:05:14 +0000 |
commit | 72f72d64a422d6628c4796f5c0bf2e508f134214 (patch) | |
tree | 0c9ea90cc53310832c977265521fb44db24a515e /parsetag.c | |
parent | Adding upstream version 0.3 (diff) | |
download | w3m-72f72d64a422d6628c4796f5c0bf2e508f134214.tar.gz w3m-72f72d64a422d6628c4796f5c0bf2e508f134214.zip |
Adding upstream version 0.5.1upstream/0.5.1
Diffstat (limited to '')
-rw-r--r-- | parsetag.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/parsetag.c b/parsetag.c new file mode 100644 index 0000000..7713c14 --- /dev/null +++ b/parsetag.c @@ -0,0 +1,57 @@ +/* $Id: parsetag.c,v 1.4 2001/11/20 17:49:23 ukai Exp $ */ +#include "myctype.h" +#include "indep.h" +#include "Str.h" +#include "parsetag.h" + +char * +tag_get_value(struct parsed_tagarg *t, char *arg) +{ + for (; t; t = t->next) { + if (!strcasecmp(t->arg, arg)) + return t->value; + } + return NULL; +} + +int +tag_exists(struct parsed_tagarg *t, char *arg) +{ + for (; t; t = t->next) { + if (!strcasecmp(t->arg, arg)) + return 1; + } + return 0; +} + +struct parsed_tagarg * +cgistr2tagarg(char *cgistr) +{ + Str tag; + Str value; + struct parsed_tagarg *t0, *t; + + t = t0 = NULL; + do { + t = New(struct parsed_tagarg); + t->next = t0; + t0 = t; + tag = Strnew(); + while (*cgistr && *cgistr != '=' && *cgistr != '&') + Strcat_char(tag, *cgistr++); + t->arg = Str_form_unquote(tag)->ptr; + t->value = NULL; + if (*cgistr == '\0') + return t; + else if (*cgistr == '=') { + cgistr++; + value = Strnew(); + while (*cgistr && *cgistr != '&') + Strcat_char(value, *cgistr++); + t->value = Str_form_unquote(value)->ptr; + } + else if (*cgistr == '&') + cgistr++; + } while (*cgistr); + return t; +} |