w3m

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/w3m.git/
Log | Files | Refs | README

parsetag.c (1073B)


      1 /* $Id$ */
      2 #include "myctype.h"
      3 #include "indep.h"
      4 #include "Str.h"
      5 #include "parsetag.h"
      6 
      7 char *
      8 tag_get_value(struct parsed_tagarg *t, char *arg)
      9 {
     10     for (; t; t = t->next) {
     11 	if (!strcasecmp(t->arg, arg))
     12 	    return t->value;
     13     }
     14     return NULL;
     15 }
     16 
     17 int
     18 tag_exists(struct parsed_tagarg *t, char *arg)
     19 {
     20     for (; t; t = t->next) {
     21 	if (!strcasecmp(t->arg, arg))
     22 	    return 1;
     23     }
     24     return 0;
     25 }
     26 
     27 struct parsed_tagarg *
     28 cgistr2tagarg(char *cgistr)
     29 {
     30     Str tag;
     31     Str value;
     32     struct parsed_tagarg *t0, *t;
     33 
     34     t = t0 = NULL;
     35     do {
     36 	t = New(struct parsed_tagarg);
     37 	t->next = t0;
     38 	t0 = t;
     39 	tag = Strnew();
     40 	while (*cgistr && *cgistr != '=' && *cgistr != '&')
     41 	    Strcat_char(tag, *cgistr++);
     42 	t->arg = Str_form_unquote(tag)->ptr;
     43 	t->value = NULL;
     44 	if (*cgistr == '\0')
     45 	    return t;
     46 	else if (*cgistr == '=') {
     47 	    cgistr++;
     48 	    value = Strnew();
     49 	    while (*cgistr && *cgistr != '&')
     50 		Strcat_char(value, *cgistr++);
     51 	    t->value = Str_form_unquote(value)->ptr;
     52 	}
     53 	else if (*cgistr == '&')
     54 	    cgistr++;
     55     } while (*cgistr);
     56     return t;
     57 }