From 3425b57dda674f76f9ec32cc37dc5e1891001320 Mon Sep 17 00:00:00 2001 From: visor Date: Thu, 1 Jul 2010 22:45:37 +0900 Subject: [PATCH] change key-value format of http and xml function. --- Makefile.conf | 17 ++++++++--------- modules/ml-http.cc | 15 +++++---------- modules/ml-xml.cc | 18 +++++++++++++++--- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/Makefile.conf b/Makefile.conf index b95b006..e331d68 100644 --- a/Makefile.conf +++ b/Makefile.conf @@ -2,34 +2,33 @@ UTF8JP = 1 BSD = 1 #Linux = 1 -MSRCS += ml-tcpserver.cc -MSRCS += ml-http.cc MSRCS += diff.cc -MSRCS += ml-config.cc -MSRCS += ml-db.cc -MSRCS += ml-debug.cc -MSRCS += ml-diff.cc MSRCS += ml-addon.cc MSRCS += ml-apache.cc MSRCS += ml-bool.cc +MSRCS += ml-config.cc MSRCS += ml-cookielogin.cc +MSRCS += ml-db.cc +MSRCS += ml-debug.cc MSRCS += ml-defun.cc +MSRCS += ml-diff.cc MSRCS += ml-encode.cc MSRCS += ml-formvar.cc +MSRCS += ml-http.cc MSRCS += ml-include.cc MSRCS += ml-inet.cc MSRCS += ml-math.cc MSRCS += ml-motor.cc MSRCS += ml-sendmail.cc MSRCS += ml-sqlite3.cc +MLDADD += ../ext/libsqlite3.a MSRCS += ml-store.cc MSRCS += ml-string.cc MSRCS += ml-struct.cc +MSRCS += ml-tcpserver.cc MSRCS += ml-time.cc MSRCS += ml-variable.cc MSRCS += ml-wiki.cc MSRCS += ml-xml.cc -MSRCS += motor-function.cc - -MLDADD += ../ext/libsqlite3.a MLDADD += -lexpat +MSRCS += motor-function.cc diff --git a/modules/ml-http.cc b/modules/ml-http.cc index e6e1698..6c6bd8b 100644 --- a/modules/ml-http.cc +++ b/modules/ml-http.cc @@ -97,9 +97,7 @@ static void request_query (MNode* query, HTTPSend& http) { if (http.params.size () > 0) http.params.append (uAmp); if (a->isCons ()) { - http.params.append (urlencode (to_string (a->car ()))).append (uEq); - nextNode (a); - http.params.append (urlencode (to_string (a->car ()))); + http.params.append (urlencode (to_string (a->car ()))).append (uEq).append (urlencode (to_string (a->cdr ()))); } else { http.params.append (urlencode (to_string (a))).append (uEq); nextNode (query); @@ -122,9 +120,7 @@ static void request_cookie (MNode* cookie, HTTPSend& http) { if (http.cookie.size () > 0) http.cookie.append (CharConst ("; ")); if (a->isCons ()) { - http.cookie.append (cookieencode (to_string (a->car ()))).append (uEq); - nextNode (a); - http.cookie.append (cookieencode (to_string (a->car ()))); + http.cookie.append (cookieencode (to_string (a->car ()))).append (uEq).append (cookieencode (to_string (a->cdr ()))); } else { http.cookie.append (cookieencode (to_string (a))).append (uEq); nextNode (cookie); @@ -267,7 +263,7 @@ MNode* ml_location_html (MNode* cell, MlEnv* mlenv) { /*DOC: ===$http-get== - ($http-get [#post] [:id STRING] [:password STRING | :pw STRING] URL [:query '(NAME VALUE ...)] [:cookie '(NAME VALUE ...)] [SUBFUNCTION...]) + ($http-get [#post] [:id STRING] [:password STRING | :pw STRING] URL [:query '((NAME . VALUE) ...)] [:cookie '((NAME . VALUE) ...)] [SUBFUNCTION...]) */ //#MFUNC $http-get ml_http_get cMLHttpGetID @@ -468,7 +464,7 @@ MNode* ml_http_get_get_cookie (MNode* cell, MlEnv* mlenv, MLFunc* mobj) { /*DOC: ====get-cookie-all==== - (get-cookie-all) -> LIST of (NAME VALUE) + (get-cookie-all) -> LIST of (NAME . VALUE) */ //#SFUNC get-cookie-all ml_http_get_get_cookie_all @@ -485,8 +481,7 @@ MNode* ml_http_get_get_cookie_all (MNode* cell, MlEnv* mlenv, MLFunc* mobj) { for (i = 0; i < obj->http.cookie_reply.size (); i ++) { a = new MNode; a->set_car (newMNode_str (new ustring (obj->http.cookie_reply[i].key))); - a->set_cdr (new MNode); - a->cdr ()->set_car (newMNode_str (new ustring (obj->http.cookie_reply[i].value))); + a->set_cdr (newMNode_str (new ustring (obj->http.cookie_reply[i].value))); ans.append (a); } diff --git a/modules/ml-xml.cc b/modules/ml-xml.cc index f20418b..feb68a3 100644 --- a/modules/ml-xml.cc +++ b/modules/ml-xml.cc @@ -188,6 +188,16 @@ MNode* ml_xml_read (MNode* cell, MlEnv* mlenv) { ===xml-read-file=== (xml-read-file FILENAME) -> LIST + Element ::= (list TagName ElementBody Attribute* ) + Attribute ::= (cons AttributeName AttributeValue ) + ElementBody ::= TextData + | (list Element* ) + | nil + TagName ::= Symbol + AttributeName ::= String + AttributeValue ::= String + TextData ::= String + */ //#AFUNC xml-read-file ml_xml_read_file MNode* ml_xml_read_file (MNode* cell, MlEnv* mlenv) { @@ -267,14 +277,16 @@ static void xmlWrite (MotorOutput* out, MNode* list) { } if (c) { out->out_raw (CharConst (">")); - if (c->isStr ()) { - out->out_toHTML (*c->str); - } else { + if (c->isCons ()) { out->out_raw (uLF); while (c && c->isCons ()) { xmlWrite (out, c->car ()); c = c->cdr (); } + } else if (c->isStr ()) { + out->out_toHTML (*c->str); + } else { + out->out_toHTML (to_string (c)); } out->out_raw (CharConst ("out_toHTML_noCtrl (*name)->out_raw (CharConst (">\n")); } else { -- 2.11.0