pupnp (libupnp) snapshot from SourceForge: git clone git://pupnp.git.sourceforge...
[igd2-for-linux:pandonghui1211s-igd2-for-linux.git] / pupnp_branch-1.6.x / upnp / src / genlib / net / http / parsetools.c
1 ///////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2000-2003 Intel Corporation 
4 // All rights reserved. 
5 //
6 // Redistribution and use in source and binary forms, with or without 
7 // modification, are permitted provided that the following conditions are met: 
8 //
9 // * Redistributions of source code must retain the above copyright notice, 
10 // this list of conditions and the following disclaimer. 
11 // * Redistributions in binary form must reproduce the above copyright notice, 
12 // this list of conditions and the following disclaimer in the documentation 
13 // and/or other materials provided with the distribution. 
14 // * Neither name of Intel Corporation nor the names of its contributors 
15 // may be used to endorse or promote products derived from this software 
16 // without specific prior written permission.
17 // 
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR 
22 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
25 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
26 // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
28 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 ///////////////////////////////////////////////////////////////////////////
31
32 /************************************************************************
33 * Purpose: This file a function to extract the header information from  *
34 * an http message and then matches the data with XML data.                              *
35 ************************************************************************/
36
37 #include "config.h"
38 #include <assert.h>
39 #include "util.h"
40 #include "membuffer.h"
41 #include "httpparser.h"
42 #include "statcodes.h"
43 #include "parsetools.h"
44
45 /************************************************************************
46 * Function: has_xml_content_type                                                                                
47 *                                                                                                                                               
48 * Parameters:                                                                                                                   
49 *       IN http_message_t* hmsg ; HTTP Message object
50 *                                                                                                                                               
51 * Description: Find the header from the HTTP message and match the              
52 *       header for xml data.                                                                                            
53 *                                                                                                                                               
54 * Returns:                                                                                                                              
55 *        BOOLEAN                                                                                                                        
56 ************************************************************************/
57 xboolean
58 has_xml_content_type( IN http_message_t * hmsg )
59 {
60     memptr hdr_value;
61
62     assert( hmsg );
63
64     // find 'content-type' header which must have text/xml
65     if( httpmsg_find_hdr( hmsg, HDR_CONTENT_TYPE, &hdr_value ) != NULL &&
66         matchstr( hdr_value.buf, hdr_value.length,
67                   "%itext%w/%wxml" ) == PARSE_OK ) {
68         return TRUE;
69     }
70     return FALSE;
71 }