OSDN Git Service

update libMiMic
[mimic/MiMicSDK.git] / lib / src / http / NyLPC_cHttpBasicBodyParser.c
index e705c7c..b7f7875 100644 (file)
@@ -3,8 +3,8 @@
 \r
 void NyLPC_cHttpBasicBodyParser_initialize(NyLPC_TcHttpBasicBodyParser_t* i_inst,struct NyLPC_TcHttpBasicBodyParser_Handler* i_handler)\r
 {\r
-       i_inst->_handler=i_handler;\r
-       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_NULL;\r
+    i_inst->_handler=i_handler;\r
+    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_NULL;\r
 }\r
 #define NyLPC_cHttpBasicBodyParser_finalize(i_inst)\r
 \r
@@ -17,19 +17,19 @@ void NyLPC_cHttpBasicBodyParser_initialize(NyLPC_TcHttpBasicBodyParser_t* i_inst
  */\r
 void NyLPC_cHttpBasicBodyParser_parseInit(NyLPC_TcHttpBasicBodyParser_t* i_inst,const struct NyLPC_THttpBasicHeader* i_info)\r
 {\r
-       switch(i_info->transfer_encoding)\r
-       {\r
-       case NyLPC_THttpMessgeHeader_TransferEncoding_CHUNKED:\r
-               i_inst->_encode_type=NyLPC_THttpMessgeHeader_TransferEncoding_CHUNKED;\r
-               i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_START;\r
-               i_inst->_data.chunked.recv_len=0;\r
-               break;\r
-       default:\r
-               i_inst->_encode_type=NyLPC_THttpMessgeHeader_TransferEncoding_NONE;\r
-               i_inst->_data.normal.content_length=i_info->content_length;\r
-               i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_BODY;\r
-               break;\r
-       }\r
+    switch(i_info->transfer_encoding)\r
+    {\r
+    case NyLPC_THttpMessgeHeader_TransferEncoding_CHUNKED:\r
+        i_inst->_encode_type=NyLPC_THttpMessgeHeader_TransferEncoding_CHUNKED;\r
+        i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_START;\r
+        i_inst->_data.chunked.recv_len=0;\r
+        break;\r
+    default:\r
+        i_inst->_encode_type=NyLPC_THttpMessgeHeader_TransferEncoding_NONE;\r
+        i_inst->_data.normal.content_length=i_info->content_length;\r
+        i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_BODY;\r
+        break;\r
+    }\r
 }\r
 \r
 /**\r
@@ -39,9 +39,9 @@ void NyLPC_cHttpBasicBodyParser_parseInit(NyLPC_TcHttpBasicBodyParser_t* i_inst,
  */\r
 NyLPC_TBool NyLPC_cHttpBasicBodyParser_parseFinish(NyLPC_TcHttpBasicBodyParser_t* i_inst)\r
 {\r
-       NyLPC_TBool ret=(i_inst->_status==NyLPC_TcHttpBasicBodyParser_ST_EOB);\r
-       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_NULL;\r
-       return ret;\r
+    NyLPC_TBool ret=(i_inst->_status==NyLPC_TcHttpBasicBodyParser_ST_EOB);\r
+    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_NULL;\r
+    return ret;\r
 }\r
 #define HTTP_CR 0x0D\r
 #define HTTP_LF 0x0A\r
@@ -55,137 +55,136 @@ NyLPC_TBool NyLPC_cHttpBasicBodyParser_parseFinish(NyLPC_TcHttpBasicBodyParser_t
  */\r
 NyLPC_TInt32 NyLPC_cHttpBasicBodyParser_parseChar(NyLPC_TcHttpBasicBodyParser_t* i_inst,const NyLPC_TChar* i_c,NyLPC_TInt32 i_size)\r
 {\r
-       NyLPC_TInt32 i;\r
-       NyLPC_TChar c;\r
-       switch(i_inst->_encode_type){\r
-       case NyLPC_THttpMessgeHeader_TransferEncoding_CHUNKED:\r
-               for(i=0;i<i_size;)\r
-               {\r
-                       c=*(i_c+i);\r
-                       //[:START:][:SP:][:EXT:][:BODY:][:END:]\r
-                       switch(i_inst->_status)\r
-                       {\r
-                       case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_BODY:\r
-                               //OnRecv\r
-                               if(!i_inst->_handler->bodyHandler(i_inst,c)){\r
-                                       i_inst->_data.chunked.recv_len--;\r
-                                       //中断\r
-                                       if(i_inst->_data.chunked.recv_len==0){\r
-                                               //content length分だけ読み取った\r
-                                               i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_FOOTER;\r
-                                       }\r
-                                       return i+1;\r
-                               }\r
-                               i_inst->_data.chunked.recv_len--;\r
-                               if(i_inst->_data.chunked.recv_len==0){\r
-                                       //content length分だけ読み取った\r
-                                       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_FOOTER;\r
-                               }\r
-                               i++;//次の文字へ\r
-                               break;\r
-                       // HEX\r
-                       case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_START:\r
-                               if(isxdigit(c)){\r
-                                       i_inst->_data.chunked.recv_len=i_inst->_data.chunked.recv_len*16+NyLPC_ctox(c);\r
-                                       //一応最大チャンクサイズは決めておこうか。\r
-                                       if(i_inst->_data.chunked.recv_len>0x0fffffff){\r
-                                               NyLPC_OnErrorGoto(ERROR);\r
-                                       }\r
-                                       i++;//次の文字へ\r
-                               }else if(c==HTTP_SP){\r
-                                       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_SP;\r
-                                       i++;//次の文字へ\r
-                               }else if(c==HTTP_CR || c==HTTP_LF){\r
-                                       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_EXT;\r
-                                       //読取位置を変化させずにEXTへ\r
-                               }else{\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                               break;\r
-                       case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_SP:\r
-                               if(c==HTTP_SP){\r
-                                       i++;//次の文字へ\r
-                               }else{\r
-                                       //ext\r
-                                       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_EXT;\r
-                               }\r
-                               break;\r
-                       case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_EXT:\r
-                               //EXTの内容は読まない。\r
-                               if(c==HTTP_LF){\r
-                                       if(i_inst->_data.chunked.recv_len==0){\r
-                                               //chunksize=0でCRLFを検出したらend-chunk\r
-                                               i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_END;\r
-                                       }else{\r
-                                               //chunksize>0でCRLFを検出したらBODY検出\r
-                                               i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_BODY;\r
-                                       }\r
-                               }else{\r
-                                       //nothing to do\r
-                               }\r
-                               i++;//次の文字へ\r
-                               break;\r
-                       case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_FOOTER:\r
-                               //CRLF待ち\r
-                               if(c==HTTP_CR){\r
-                                       //無視\r
-                               }else if(c==HTTP_LF){\r
-                                       //確定\r
-                                       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_START;\r
-                               }else{\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                               i++;\r
-                               break;\r
-                       case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_END:\r
-                               //CRLF待ち\r
-                               if(c==HTTP_CR){\r
-                                       //無視\r
-                               }else if(c==HTTP_LF){\r
-                                       //確定\r
-                                       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_EOB;\r
-                                       return i+1;\r
-                               }else{\r
-                                       NyLPC_OnErrorGoto(ERROR);\r
-                               }\r
-                               i++;\r
-                               break;\r
-                       default:\r
-                               NyLPC_OnErrorGoto(ERROR);\r
-                       }\r
-               }\r
-               return i_size;\r
-               break;\r
-       case NyLPC_THttpMessgeHeader_TransferEncoding_NONE:\r
-               if(i_inst->_status!=NyLPC_TcHttpBasicBodyParser_ST_BODY){\r
-                       NyLPC_OnErrorGoto(ERROR);\r
-               }\r
-               for(i=0;i<i_size;i++)\r
-               {\r
-                       if(i_inst->_data.normal.content_length>0){\r
-                               //OnRecv\r
-                               if(!i_inst->_handler->bodyHandler(i_inst,*(i_c+i))){\r
-                                       i++;\r
-                                       i_inst->_data.normal.content_length--;\r
-                                       break;//中断(遷移無し)\r
-                               }\r
-                               i_inst->_data.normal.content_length--;\r
-                       }else{\r
-                               //content-length==0;全て受信\r
-                               break;\r
-                       }\r
-               }\r
-               if(i_inst->_data.normal.content_length==0){\r
-                       //content length分だけ読み取った\r
-                       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_EOB;\r
-                       return i;\r
-               }\r
-               return i;\r
-       }\r
+    NyLPC_TInt32 i;\r
+    NyLPC_TChar c;\r
+    switch(i_inst->_encode_type){\r
+    case NyLPC_THttpMessgeHeader_TransferEncoding_CHUNKED:\r
+        for(i=0;i<i_size;)\r
+        {\r
+            c=*(i_c+i);\r
+            //[:START:][:SP:][:EXT:][:BODY:][:END:]\r
+            switch(i_inst->_status)\r
+            {\r
+            case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_BODY:\r
+                //OnRecv\r
+                if(!i_inst->_handler->bodyHandler(i_inst,c)){\r
+                    i_inst->_data.chunked.recv_len--;\r
+                    //中断\r
+                    if(i_inst->_data.chunked.recv_len==0){\r
+                        //content length分だけ読み取った\r
+                        i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_FOOTER;\r
+                    }\r
+                    return i+1;\r
+                }\r
+                i_inst->_data.chunked.recv_len--;\r
+                if(i_inst->_data.chunked.recv_len==0){\r
+                    //content length分だけ読み取った\r
+                    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_FOOTER;\r
+                }\r
+                i++;//次の文字へ\r
+                break;\r
+            // HEX\r
+            case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_START:\r
+                if(isxdigit((int)c)){\r
+                    i_inst->_data.chunked.recv_len=i_inst->_data.chunked.recv_len*16+NyLPC_ctox(c);\r
+                    //一応最大チャンクサイズは決めておこうか。\r
+                    if(i_inst->_data.chunked.recv_len>0x0fffffff){\r
+                        NyLPC_OnErrorGoto(ERROR);\r
+                    }\r
+                    i++;//次の文字へ\r
+                }else if(c==HTTP_SP){\r
+                    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_SP;\r
+                    i++;//次の文字へ\r
+                }else if(c==HTTP_CR || c==HTTP_LF){\r
+                    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_EXT;\r
+                    //読取位置を変化させずにEXTへ\r
+                }else{\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+                break;\r
+            case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_SP:\r
+                if(c==HTTP_SP){\r
+                    i++;//次の文字へ\r
+                }else{\r
+                    //ext\r
+                    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_EXT;\r
+                }\r
+                break;\r
+            case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_EXT:\r
+                //EXTの内容は読まない。\r
+                if(c==HTTP_LF){\r
+                    if(i_inst->_data.chunked.recv_len==0){\r
+                        //chunksize=0でCRLFを検出したらend-chunk\r
+                        i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_END;\r
+                    }else{\r
+                        //chunksize>0でCRLFを検出したらBODY検出\r
+                        i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_BODY;\r
+                    }\r
+                }else{\r
+                    //nothing to do\r
+                }\r
+                i++;//次の文字へ\r
+                break;\r
+            case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_FOOTER:\r
+                //CRLF待ち\r
+                if(c==HTTP_CR){\r
+                    //無視\r
+                }else if(c==HTTP_LF){\r
+                    //確定\r
+                    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_CHUNK_HEADER_START;\r
+                }else{\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+                i++;\r
+                break;\r
+            case NyLPC_TcHttpBasicBodyParser_ST_CHUNK_END:\r
+                //CRLF待ち\r
+                if(c==HTTP_CR){\r
+                    //無視\r
+                }else if(c==HTTP_LF){\r
+                    //確定\r
+                    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_EOB;\r
+                    return i+1;\r
+                }else{\r
+                    NyLPC_OnErrorGoto(ERROR);\r
+                }\r
+                i++;\r
+                break;\r
+            default:\r
+                NyLPC_OnErrorGoto(ERROR);\r
+            }\r
+        }\r
+        return i_size;\r
+    case NyLPC_THttpMessgeHeader_TransferEncoding_NONE:\r
+        if(i_inst->_status!=NyLPC_TcHttpBasicBodyParser_ST_BODY){\r
+            NyLPC_OnErrorGoto(ERROR);\r
+        }\r
+        for(i=0;i<i_size;i++)\r
+        {\r
+            if(i_inst->_data.normal.content_length>0){\r
+                //OnRecv\r
+                if(!i_inst->_handler->bodyHandler(i_inst,*(i_c+i))){\r
+                    i++;\r
+                    i_inst->_data.normal.content_length--;\r
+                    break;//中断(遷移無し)\r
+                }\r
+                i_inst->_data.normal.content_length--;\r
+            }else{\r
+                //content-length==0;全て受信\r
+                break;\r
+            }\r
+        }\r
+        if(i_inst->_data.normal.content_length==0){\r
+            //content length分だけ読み取った\r
+            i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_EOB;\r
+            return i;\r
+        }\r
+        return i;\r
+    }\r
 ERROR:\r
-       //ERROR\r
-       i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_ERROR;\r
-       return -1;\r
+    //ERROR\r
+    i_inst->_status=NyLPC_TcHttpBasicBodyParser_ST_ERROR;\r
+    return -1;\r
 }\r
 \r
 \r