OSDN Git Service

Merge branch 'master' into branch_0.13.0
[modchxj/mod_chxj.git] / src / chxj_load_emoji_data.c
index fc1774f..d44fa37 100644 (file)
@@ -1,6 +1,6 @@
 /*
+ * Copyright (C) 2005-2009 Atsushi Konno All rights reserved.
  * Copyright (C) 2005 QSDN,Inc. All rights reserved.
- * Copyright (C) 2005 Atsushi Konno All rights reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 #include "mod_chxj.h"
 #include "chxj_load_emoji_data.h"
 
-static char* s_load_emoji_set_tag( Doc* doc, apr_pool_t* p, mod_chxj_config* conf, Node* node);
-static char* s_set_emoji_data( Doc* doc, apr_pool_t* p, mod_chxj_config* conf, Node* node);
-static char* s_load_emoji_emoji_tag( Doc* doc, apr_pool_t* p, mod_chxj_config* conf, Node* node);
-static void  s_emoji_add_to_tail( mod_chxj_config* conf, emoji_t* emoji);
-static char* s_load_emoji_no_tag( Doc* doc, apr_pool_t* p, emoji_t* em, Node* node);
+static char* s_load_emoji_set_tag(
+  Doc*             doc,
+  apr_pool_t*      p,
+  mod_chxj_config* conf,
+  Node*            node);
+
+static char* s_set_emoji_data(
+  Doc*             doc,
+  apr_pool_t*      p,
+  mod_chxj_config* conf,
+  Node*            node);
+
+static char* s_load_emoji_emoji_tag(
+  Doc*             doc,
+  apr_pool_t*      p,
+  mod_chxj_config* conf,
+  Node*            node);
+
+static void  s_emoji_add_to_tail(
+  mod_chxj_config* conf,
+  emoji_t*         emoji);
+
+static char* s_load_emoji_no_tag(
+  Doc*        doc,
+  apr_pool_t* p,
+  emoji_t*    em,
+  Node*       node);
+
 static char* s_load_emoji_imode_tag( Doc* doc, apr_pool_t* p, emoji_t* em, Node* node);
+
 static char* s_load_emoji_ezweb_tag( Doc* doc, apr_pool_t* p, emoji_t* em, Node* node);
+
 static char* s_load_emoji_jphone_tag( Doc* doc, apr_pool_t* p, emoji_t* em, Node* node);
+
 static char  s_hexstring_to_byte(char* s);
 
 
@@ -43,7 +69,7 @@ chxj_load_emoji_data(
   conf->emoji      = NULL;
   conf->emoji_tail = NULL;
 
-  if (rtn = s_set_emoji_data(doc, p, conf,qs_get_root(doc))
+  if ((rtn = s_set_emoji_data(doc, p, conf,qs_get_root(doc))) != NULL)
     return rtn;
 
   return NULL;
@@ -93,7 +119,7 @@ s_load_emoji_emoji_tag(
     char* name = qs_get_node_name(doc, child);
 
     if ((*name == 's' || *name == 'S') && strcasecmp(name, "set") == 0) {
-      if (rtn = s_load_emoji_set_tag(doc, p, conf, child)
+      if ((rtn = s_load_emoji_set_tag(doc, p, conf, child)) != NULL
         return rtn;
     }
   }
@@ -128,7 +154,7 @@ s_load_emoji_set_tag(
     case 'n':
     case 'N':
       if (strcasecmp(name, "no") == 0) {
-        if (rtn = s_load_emoji_no_tag(doc, p, em, child)) 
+        if ((rtn = s_load_emoji_no_tag(doc, p, em, child)) != NULL)
           return rtn;
       }
       break;
@@ -136,7 +162,7 @@ s_load_emoji_set_tag(
     case 'i':
     case 'I':
       if (strcasecmp(name, "imode") == 0) {
-        if (rtn = s_load_emoji_imode_tag(doc, p, em, child)) 
+        if ((rtn = s_load_emoji_imode_tag(doc, p, em, child)) != NULL)
           return rtn;
       }
       break;
@@ -144,7 +170,7 @@ s_load_emoji_set_tag(
     case 'e':
     case 'E':
       if (strcasecmp(name, "ezweb") == 0) {
-        if (rtn = s_load_emoji_ezweb_tag(doc, p, em, child)) 
+        if ((rtn = s_load_emoji_ezweb_tag(doc, p, em, child)) != NULL)
           return rtn;
       }
       break;
@@ -152,7 +178,7 @@ s_load_emoji_set_tag(
     case 'j':
     case 'J':
       if (strcasecmp(name, "jphone") == 0) {
-        if (rtn = s_load_emoji_jphone_tag(doc, p, em, child))
+        if ((rtn = s_load_emoji_jphone_tag(doc, p, em, child)) != NULL)
           return rtn;
       }
       break;
@@ -204,100 +230,103 @@ s_load_emoji_imode_tag(
 {
   Node* child;
 
-
-  em->imode->hex1byte = 0;
-  em->imode->hex2byte = 0;
-  em->imode->string = NULL;
+  em->imode->hex1byte    = 0;
+  em->imode->hex2byte    = 0;
+  em->imode->string      = NULL;
   em->imode->description = NULL;
 
   for (child = qs_get_child_node(doc, node);
        child ;
-       child = qs_get_next_node(doc, child))
-  {
+       child = qs_get_next_node(doc, child)) {
+
     char* name  = qs_get_node_name(doc, child);
-    if (strcasecmp(name, "hex1") == 0) 
-    {
-      Node* hex1node = qs_get_child_node(doc, child);
-      if (hex1node != NULL)
-      {
-        char* cname = qs_get_node_name(doc, hex1node);
-        char* cvalue = qs_get_node_value(doc, hex1node);
-        if (strcasecmp(cname, "text") == 0)
-        {
-          em->imode->hex1byte = s_hexstring_to_byte(cvalue);
+
+    switch (*name) {
+    case 'h':
+    case 'H':
+      if (strcasecmp(name, "hex1") == 0) {
+        Node* hex1node = qs_get_child_node(doc, child);
+        if (hex1node) {
+  
+          char* cname  = qs_get_node_name(doc, hex1node);
+          char* cvalue = qs_get_node_value(doc, hex1node);
+  
+          if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
+            em->imode->hex1byte = s_hexstring_to_byte(cvalue);
         }
-      }
-      else
-      {
-        em->imode->hex1byte    = 0;
-      }
-    }
-    else
-    if (strcasecmp(name, "hex2") == 0)
-    {
-      Node* hex2node = qs_get_child_node(doc, child);
-      if (hex2node != NULL)
-      {
-        char* cname = qs_get_node_name(doc, hex2node);
-        char* cvalue = qs_get_node_value(doc, hex2node);
-        if (strcasecmp(cname, "text") == 0)
-        {
-          em->imode->hex2byte = s_hexstring_to_byte(cvalue);
+        else {
+          em->imode->hex1byte    = 0;
         }
       }
       else
-      {
-        em->imode->hex2byte    = 0;
-      }
-    }
-    else
-    if (strcasecmp(name, "string") == 0)
-    {
-      Node* string_node = qs_get_child_node(doc, child);
-      if (string_node != NULL)
-      {
-        char* cname = qs_get_node_name(doc, string_node);
-        char* cvalue = qs_get_node_value(doc, string_node);
-        if (strcasecmp(cname, "text") == 0)
-        {
-          em->imode->string = apr_pstrdup(p, cvalue);
+      if ((*name == 'h' || *name == 'H') && strcasecmp(name, "hex2") == 0) {
+        Node* hex2node = qs_get_child_node(doc, child);
+        if (hex2node) {
+          char* cname  = qs_get_node_name(doc, hex2node);
+          char* cvalue = qs_get_node_value(doc, hex2node);
+
+          if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
+            em->imode->hex2byte = s_hexstring_to_byte(cvalue);
+        }
+        else {
+          em->imode->hex2byte    = 0;
         }
       }
-      else
-      {
-        em->imode->string    = apr_palloc(p, 1);
-        em->imode->string[0] = 0;
-      }
-    }
-    else
-    if (strcasecmp(name, "description") == 0)
-    {
-      Node* description_node = qs_get_child_node(doc, child);
-      if (description_node != NULL)
-      {
-        char* cname = qs_get_node_name(doc, description_node);
-        char* cvalue = qs_get_node_value(doc, description_node);
-        if (strcasecmp(cname, "text") == 0)
-        {
-          em->imode->description = apr_pstrdup(p, cvalue);
+      break;
+
+    case 's':
+    case 'S':
+      if (strcasecmp(name, "string") == 0) {
+        Node* string_node = qs_get_child_node(doc, child);
+
+        if (string_node) {
+          char* cname = qs_get_node_name(doc, string_node);
+          char* cvalue = qs_get_node_value(doc, string_node);
+
+          if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
+            em->imode->string = apr_pstrdup(p, cvalue);
+        }
+        else {
+          em->imode->string    = apr_palloc(p, 1);
+          em->imode->string[0] = 0;
         }
       }
-      else
-      {
-        em->imode->description    = apr_palloc(p, 1);
-        em->imode->description[0] = 0;
+      break;
+    
+    case 'd':
+    case 'D':
+      if (strcasecmp(name, "description") == 0) {
+        Node* description_node = qs_get_child_node(doc, child);
+  
+        if (description_node) {
+          char* cname = qs_get_node_name(doc, description_node);
+          char* cvalue = qs_get_node_value(doc, description_node);
+  
+          if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
+            em->imode->description = apr_pstrdup(p, cvalue);
+        }
+        else {
+          em->imode->description    = apr_palloc(p, 1);
+          em->imode->description[0] = 0;
+        }
       }
+      break;
+
+    default:
+      break;
     }
   }
+
   return NULL;
 }
 
+
 static char*
 s_load_emoji_ezweb_tag(
-  Doc* doc,
+  Doc*        doc,
   apr_pool_t* p,
-  emoji_t* em,
-  Node* node)
+  emoji_t*    em,
+  Node*       node)
 {
   Node* child;
 
@@ -309,98 +338,96 @@ s_load_emoji_ezweb_tag(
 
   for (child = qs_get_child_node(doc, node);
        child ;
-       child = qs_get_next_node(doc, child))
-  {
+       child = qs_get_next_node(doc, child)) {
+
     char* name  = qs_get_node_name(doc, child);
-    if (strcasecmp(name, "A") == 0) 
-    {
+
+    if ((*name == 'a' || *name == 'A') && strcasecmp(name, "A") == 0) {
+
       Node* typeAnode = qs_get_child_node(doc, child);
 
-      if (typeAnode != NULL)
-      {
+      if (typeAnode) {
+
         char* cname = qs_get_node_name(doc, typeAnode);
         char* cvalue = qs_get_node_value(doc, typeAnode);
-        if (strcasecmp(cname, "text") == 0)
-        {
+
+        if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
           em->ezweb->typeA = apr_pstrdup(p,cvalue);
-        }
       }
-      else
-      {
+      else {
         em->ezweb->typeA    = apr_palloc(p, 1);
         em->ezweb->typeA[0] = 0;
       }
+
     }
     else
-    if (strcasecmp(name, "B") == 0) 
-    {
+    if ((*name == 'b' || *name == 'B') && strcasecmp(name, "B") == 0) {
+
       Node* typeBnode = qs_get_child_node(doc, child);
 
-      if (typeBnode != NULL)
-      {
+      if (typeBnode) {
+
         char* cname = qs_get_node_name(doc, typeBnode);
         char* cvalue = qs_get_node_value(doc, typeBnode);
-        if (strcasecmp(cname, "text") == 0)
-        {
+
+        if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
           em->ezweb->typeB = apr_pstrdup(p,cvalue);
-        }
+
       }
-      else
-      {
+      else {
         em->ezweb->typeB    = apr_palloc(p, 1);
         em->ezweb->typeB[0] = 0;
       }
     }
     else
-    if (strcasecmp(name, "C") == 0) 
-    {
+    if ((*name == 'c' || *name == 'C') && strcasecmp(name, "C") == 0) {
+
       Node* typeCnode = qs_get_child_node(doc, child);
 
-      if (typeCnode != NULL)
-      {
-        char* cname = qs_get_node_name(doc, typeCnode);
+      if (typeCnode) {
+
+        char* cname  = qs_get_node_name(doc, typeCnode);
         char* cvalue = qs_get_node_value(doc, typeCnode);
-        if (strcasecmp(cname, "text") == 0)
-        {
+
+        if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
           em->ezweb->typeC = apr_pstrdup(p,cvalue);
-        }
       }
-      else
-      {
+      else {
         em->ezweb->typeC = apr_palloc(p, 1);
         em->ezweb->typeC[0] = 0;
       }
     }
     else
-    if (strcasecmp(name, "D") == 0) 
-    {
+    if ((*name == 'd' || *name == 'D') && strcasecmp(name, "D") == 0) {
+
       Node* typeDnode = qs_get_child_node(doc, child);
 
-      if (typeDnode != NULL)
-      {
-        char* cname = qs_get_node_name(doc, typeDnode);
+      if (typeDnode) {
+
+        char* cname  = qs_get_node_name(doc, typeDnode);
         char* cvalue = qs_get_node_value(doc, typeDnode);
-        if (strcasecmp(cname, "text") == 0)
-        {
+
+        if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
           em->ezweb->typeD = apr_pstrdup(p,cvalue);
-        }
+
       }
-      else
-      {
+      else {
         em->ezweb->typeD = apr_palloc(p, 1);
         em->ezweb->typeD[0] = 0;
       }
     }
   }
+
   return NULL;
 }
 
+
 static char*
 s_load_emoji_jphone_tag(
-  Doc* doc,
+  Doc*        doc,
   apr_pool_t* p,
-  emoji_t* em,
-  Node* node)
+  emoji_t*    em,
+  Node*       node)
 {
   Node* child;
 
@@ -409,40 +436,40 @@ s_load_emoji_jphone_tag(
 
   for (child = qs_get_child_node(doc, node);
        child ;
-       child = qs_get_next_node(doc, child))
-  {
+       child = qs_get_next_node(doc, child)) {
+
     char* name  = qs_get_node_name(doc, child);
-    if (strcasecmp(name, "string") == 0) 
-    {
+
+    if ((*name == 's' || *name == 'S') && strcasecmp(name, "string") == 0) {
+
       Node* stringnode = qs_get_child_node(doc, child);
-      if (stringnode != NULL)
-      {
-        char* cname = qs_get_node_name(doc, stringnode);
+
+      if (stringnode) {
+
+        char* cname  = qs_get_node_name(doc, stringnode);
         char* cvalue = qs_get_node_value(doc, stringnode);
-        if (strcasecmp(cname, "text") == 0)
-        {
-          int ii;
-          int jj;
-          char* tmp = apr_palloc(p, strlen(cvalue)+1);
+
+        if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0) {
+          unsigned int   ii;
+          int   jj;
+          char* tmp;
+          tmp = apr_palloc(p, strlen(cvalue)+1);
           memset(tmp, 0, strlen(cvalue)+1);
 
-          for (jj=0,ii=0; ii< strlen(cvalue); ii++) 
-          {
-            if (strncasecmp(&cvalue[ii] , ESCAPE_CHAR_LT, strlen(ESCAPE_CHAR_LT)) == 0)
-            {
+          for (jj=0,ii=0; ii< strlen(cvalue); ii++) {
+            if (strncasecmp(&cvalue[ii] , ESCAPE_CHAR_LT, strlen(ESCAPE_CHAR_LT)) == 0) {
               tmp[jj] = '<';
               jj++;
               ii += (strlen(ESCAPE_CHAR_LT) - 1);
             }
             else
-            if (strncasecmp(&cvalue[ii] , ESCAPE_CHAR_GT, strlen(ESCAPE_CHAR_GT)) == 0)
-            {
+            if (strncasecmp(&cvalue[ii] , ESCAPE_CHAR_GT, strlen(ESCAPE_CHAR_GT)) == 0) {
               tmp[jj] = '>';
               jj++;
               ii += (strlen(ESCAPE_CHAR_GT) - 1);
             }
-            else
-            {
+            else {
               tmp[jj] = cvalue[ii];
               jj++;
             }
@@ -450,22 +477,25 @@ s_load_emoji_jphone_tag(
           em->jphone->string = apr_pstrdup(p,tmp);
         }
       }
-      else
-      {
+      else {
         em->jphone->string    = apr_palloc(p, 1);
         em->jphone->string[0] = 0;
       }
     }
   }
+
   return NULL;
 }
 
+
+
 static void
 s_emoji_add_to_tail(
   mod_chxj_config* conf,
-  emoji_t* emoji)
+  emoji_t*         emoji)
 {
   emoji->next = NULL;
+
   if (conf->emoji == NULL) {
     conf->emoji      = emoji;
     conf->emoji_tail = emoji;
@@ -473,21 +503,22 @@ s_emoji_add_to_tail(
   }
 
   conf->emoji_tail->next = emoji;
-  conf->emoji_tail = emoji;
+  conf->emoji_tail       = emoji;
 }
 
+
+
 static char 
 s_hexstring_to_byte(char* s)
 {
-  int len;
-  int ii;
+  int  len;
+  int  ii;
   char one_byte = 0;
 
   len = strlen(s);
-  for (ii=0; ii<len; ii++)
-  {
-    switch(s[ii]) 
-    {
+
+  for (ii=0; ii<len; ii++) {
+    switch(s[ii]) {
     case '1':
     case '2':
     case '3':
@@ -528,6 +559,7 @@ s_hexstring_to_byte(char* s)
       break;
     }
   }
+
   return one_byte;
 }
 /*