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 / util / util.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 contains functions for copying strings based on 
34 * different options.
35 ************************************************************************/
36
37
38 #include "config.h"
39 #include "upnp.h"
40 #include "util.h"
41
42
43 #include <string.h>
44
45
46 /************************************************************************
47 *       Function :      linecopy
48 *
49 *       Parameters :
50 *               OUT char dest[LINE_SIZE] ;      output buffer
51 *               IN const char* src ;    input buffer
52 *
53 *       Description : Copy no of bytes spcified by the LINE_SIZE constant, 
54 *               from the source buffer. Null terminate the destination buffer
55 *
56 *       Return : void ;
57 *
58 *       Note :
59 ************************************************************************/
60 void
61 linecopy( OUT char dest[LINE_SIZE],
62           IN const char *src )
63 {
64     strncpy( dest, src, LINE_SIZE - 1 );
65     dest[LINE_SIZE - 1] = '\0'; // null-terminate if len(src) >= LINE_SIZE
66 }
67
68 /************************************************************************
69 *       Function :      namecopy
70 *
71 *       Parameters :
72 *               OUT char dest[NAME_SIZE] ;      output buffer
73 *               IN const char* src ;    input buffer
74 *
75 *       Description : Copy no of bytes spcified by the NAME_SIZE constant, 
76 *               from the source buffer. Null terminate the destination buffer
77 *
78 *       Return : void ;
79 *
80 *       Note :
81 ************************************************************************/
82 void
83 namecopy( OUT char dest[NAME_SIZE],
84           IN const char *src )
85 {
86     strncpy( dest, src, NAME_SIZE - 1 );
87     dest[NAME_SIZE - 1] = '\0'; // null-terminate if len(src) >= NAME_SIZE
88 }
89
90 /************************************************************************
91 *       Function :      linecopylen
92 *
93 *       Parameters :
94 *               OUT char dest[LINE_SIZE] ;      output buffer
95 *               IN const char* src ;    input buffer
96 *               IN size_t srclen ;      bytes to be copied.
97 *
98 *       Description : Determine if the srclen passed in paramter is less than 
99 *               the permitted LINE_SIZE. If it is use the passed parameter, if not
100 *               use the permitted LINE_SIZE as the length parameter
101 *               Copy no of bytes spcified by the LINE_SIZE constant, 
102 *               from the source buffer. Null terminate the destination buffer
103 *
104 *       Return : void ;
105 *
106 *       Note :
107 ************************************************************************/
108 void
109 linecopylen( OUT char dest[LINE_SIZE],
110              IN const char *src,
111              IN size_t srclen )
112 {
113     int len;
114
115     len = srclen < ( LINE_SIZE - 1 ) ? srclen : ( LINE_SIZE - 1 );
116     strncpy( dest, src, len );
117     dest[len] = '\0';
118 }