head	1.2;
access;
symbols;
locks; strict;
comment	@# @;


1.2
date	2001.03.20.22.20.33;	author sf;	state dead;
branches;
next	1.1;

1.1
date	2000.12.10.16.05.18;	author roam;	state Exp;
branches;
next	;


desc
@@


1.2
log
@update to 0.1.11 + hsaka patchlevel 24.

PR:		25952
Submitted by:	maintainer
@
text
@diff -u file.c.orig file.c
--- file.c.orig	Thu Dec  7 22:41:39 2000
+++ file.c	Thu Dec  7 23:04:23 2000
@@@@ -71,6 +71,10 @@@@
 #ifdef JP_CHARSET
 static char content_charset = '\0';
 static char guess_charset(char *p);
+#ifdef NEW_FORM
+static char check_charset(char *p);
+static char check_accept_charset(char *p);
+#endif
 char DocumentCode = '\0';
 #endif
 
@@@@ -2545,61 +2549,68 @@@@
 }
 
 #ifdef NEW_FORM
-char *
-process_accept_charset(char *ac)
-{
-    static Str temp = NULL;
-    char *s = ac, *e;
 #ifdef JP_CHARSET
-    char res[2] = { '\0', '\0' };
-#endif
-
-    while (*s) {
-	while (*s && (IS_SPACE(*s) || *s == ',')) ++s;
-	if (!*s) break;
-	for (e = s ; *e && !(IS_SPACE(*e) || *e == ',') ; ++e);
-
-	if (temp)
-	    Strclear(temp);
-	else
-	    temp = Strnew();
-
-	Strcat_charp_n(temp, s, e - s);
+char
+check_charset(char *s)
+{
+    switch (*s) {
+    case CODE_EUC:
+    case CODE_SJIS:
+    case CODE_JIS_n:
+    case CODE_JIS_m:
+    case CODE_JIS_N:
+    case CODE_JIS_j:
+    case CODE_JIS_J:
+    case CODE_INNER_EUC:
+	return *s;
+    }
+    return 0;
+}
 
-#ifdef JP_CHARSET
-	if ((res[0] = guess_charset(temp->ptr)))
-	    return Strnew_charp(res)->ptr;
-#else
-	if (strcasecmp(temp->ptr, "us-ascii") ||
-	    strcasecmp(temp->ptr, "iso-8859-1"))
-#endif
-	    return Strnew_charp(temp->ptr)->ptr;
+char
+check_accept_charset(char *s)
+{
+    char *e;
+    char c;
 
+    while (*s) {
+	while (*s && (IS_SPACE(*s) || *s == ','))
+	    s++;
+	if (!*s)
+	    break;
+	e = s;
+	while (*e && !(IS_SPACE(*e) || *e == ','))
+	    e++;
+	c = guess_charset(Strnew_charp_n(s, e - s)->ptr);
+	if (c)
+	    return c;
 	s = e;
     }
-
-    return NULL;
+    return 0;
 }
+#endif
 
 Str
 process_form(struct parsed_tag *tag)
 {
-    char *p, *q, *r, *s, *acs, *tg;
+    char *p, *q, *r, *s, *tg;
+    char cs = 0;
 
     p = "get";
     parsedtag_get_value(tag, ATTR_METHOD, &p);
     q = "!CURRENT_URL!";
     parsedtag_get_value(tag, ATTR_ACTION, &q);
     r = NULL;
-    parsedtag_get_value(tag, ATTR_CHARSET, &r);
-    acs = NULL;
-    if (parsedtag_get_value(tag, ATTR_ACCEPT_CHARSET, &acs))
-	acs = process_accept_charset(acs);
+#ifdef JP_CHARSET
+    if (parsedtag_get_value(tag, ATTR_ACCEPT_CHARSET, &r))
+	cs = check_accept_charset(r);
+    if (! cs && parsedtag_get_value(tag, ATTR_CHARSET, &r))
+	cs = check_charset(r);
+#endif
     s = NULL;
     parsedtag_get_value(tag, ATTR_ENCTYPE, &s);
     tg = NULL;
     parsedtag_get_value(tag, ATTR_TARGET, &tg);
-    if (!r) r = acs;
     form_max++;
     form_sp++;
     if (forms_size == 0) {
@@@@ -2611,7 +2622,7 @@@@
 	forms = New_Reuse(FormList *, forms, forms_size);
     }
     forms[form_max] =
-	newFormList(q, p, r, s, tg, (form_max > 0) ? forms[form_max - 1] : NULL);
+	newFormList(q, p, &cs, s, tg, (form_max > 0) ? forms[form_max - 1] : NULL);
     form_stack[form_sp] = form_max;
 
     return NULL;
@@@@ -3515,6 +3526,7 @@@@
     Anchor *a_href = NULL, *a_img = NULL, *a_form = NULL;
     char outc[LINELEN];
     char *p, *q, *r, *str;
+    char cs;
     Lineprop outp[LINELEN], mode, effect;
     int pos;
     int nlines;
@@@@ -3731,13 +3743,16 @@@@
 		case HTML_FORM_INT:
 		    p = "get";
 		    q = "/";
-		    r = NULL;
 		    s = NULL;
+		    cs = 0;
 		    parsedtag_get_value(tag, ATTR_METHOD, &p);
 		    parsedtag_get_value(tag, ATTR_ACTION, &q);
-		    parsedtag_get_value(tag, ATTR_CHARSET, &r);
+#ifdef JP_CHARSET
+		    if (parsedtag_get_value(tag, ATTR_CHARSET, &r))
+			cs = check_charset(r);
+#endif
 		    parsedtag_get_value(tag, ATTR_ENCTYPE, &s);
-		    buf->formlist = newFormList(q, p, r, s, buf->formlist);
+		    buf->formlist = newFormList(q, p, &cs, s, buf->formlist);
 		    form_sp++;
 		    form_stack[form_sp] = buf->formlist;
 		    break;

@


1.1
log
@Update to 0.1.11-pre + kokb patchlevel 23

PR:		23393
Submitted by:	maintainer
@
text
@@

