annotate mcabber/libjabber/str.c @ 1469:1f7990dd416b

Update UK help files (Myhailo Danylenko)
author Mikael Berthe <mikael@lilotux.net>
date Sun, 13 Apr 2008 08:33:50 +0200
parents 5f43b532cc37
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
1 /*
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
2 * This program is free software; you can redistribute it and/or modify
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
3 * it under the terms of the GNU General Public License as published by
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
4 * the Free Software Foundation; either version 2 of the License, or
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
5 * (at your option) any later version.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
6 *
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
7 * This program is distributed in the hope that it will be useful,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
10 * GNU General Public License for more details.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
11 *
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
12 * You should have received a copy of the GNU General Public License
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
13 * along with this program; if not, write to the Free Software
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
14 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
15 *
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
16 * Copyrights
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
17 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
18 * Portions created by or assigned to Jabber.com, Inc. are
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
19 * Copyright (c) 1999-2002 Jabber.com, Inc. All Rights Reserved. Contact
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
20 * information for Jabber.com, Inc. is available at http://www.jabber.com/.
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
21 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
22 * Portions Copyright (c) 1998-1999 Jeremie Miller.
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
23 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
24 * Acknowledgements
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
25 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
26 * Special thanks to the Jabber Open Source Contributors for their
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
27 * suggestions and support of Jabber.
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
28 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
29 */
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
30
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
31 /**
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
32 * @file str.c
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
33 * @brief utilities for string handling
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
34 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
35 * This file contains utility functions for string handling:
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
36 * - NULL pointer save versions of many functions in string.c
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
37 * - string spools
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
38 * - functions to (un)escape strings for XML usage
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
39 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
40 * String spools allow to create a string by concatenating several smaller strings
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
41 * and the spool implementation is allocating the neccessary memory using memory pools.
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
42 */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
43
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
44 #include "libxode.h"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
45
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
46 /**
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
47 * NULL pointer save version of strdup()
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
48 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
49 * @param str the string the should be duplicated
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
50 * @return the duplicated string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
51 */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
52 char *j_strdup(const char *str)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
53 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
54 if(str == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
55 return NULL;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
56 else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
57 return strdup(str);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
58 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
59
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
60 /**
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
61 * NULL pointer save version of strcat()
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
62 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
63 * @note the return value of j_strcat() is not compatible with the return value of strcat()
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
64 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
65 * @todo check if the behaviour of the return value is intended
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
66 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
67 * @param dest where to append the string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
68 * @param txt what to append
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
69 * @return dest if txt contains a NULL pointer, pointer to the terminating zero byte of the result else
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
70 */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
71 char *j_strcat(char *dest, char *txt)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
72 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
73 if(!txt) return(dest);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
74
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
75 while(*txt)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
76 *dest++ = *txt++;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
77 *dest = '\0';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
78
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
79 return(dest);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
80 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
81
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
82 /**
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
83 * NULL pointer save version of strcmp
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
84 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
85 * If one of the parameters contains a NULL pointer, the string is considered to be unequal.
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
86 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
87 * @note the return value is not compatible with strcmp()
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
88 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
89 * @param a the one string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
90 * @param b the other string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
91 * @return 0 if the strings are equal, -1 if the strings are not equal
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
92 */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
93 int j_strcmp(const char *a, const char *b)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
94 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
95 if(a == NULL || b == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
96 return -1;
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
97
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
98 while(*a == *b && *a != '\0' && *b != '\0'){ a++; b++; }
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
99
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
100 if(*a == *b) return 0;
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
101
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
102 return -1;
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
103 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
104
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
105 /**
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
106 * NULL pointer save version of strcasecmp()
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
107 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
108 * If one of the parameters contains a NULL pointer, the string is considered to be unequal
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
109 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
110 * @param a the one string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
111 * @param b the other string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
112 * @return 0 if the strings are equal, non zero else
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
113 */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
114 int j_strcasecmp(const char *a, const char *b)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
115 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
116 if(a == NULL || b == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
117 return -1;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
118 else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
119 return strcasecmp(a, b);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
120 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
121
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
122 /**
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
123 * NULL pointer save version of strncmp()
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
124 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
125 * If one of the parameters contains a NULL pointer, the string is considered to be unequal
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
126 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
127 * @param a the first string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
128 * @param b the second string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
129 * @param i how many characters to compare at most
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
130 * @return 0 if the strings are equal (within the given length limitation), non zero else
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
131 */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
132 int j_strncmp(const char *a, const char *b, int i)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
133 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
134 if(a == NULL || b == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
135 return -1;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
136 else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
137 return strncmp(a, b, i);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
138 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
139
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
140 /**
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
141 * NULL pointer save version of strncasecmp()
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
142 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
143 * If one of the parameters contains a NULL pointer, the string is considered to be unequal
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
144 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
145 * @param a the first string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
146 * @param b the second string
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
147 * @param i how many characters to compare at most
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
148 * @return 0 if the strings are equal (within the given length limitation), non zero else
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
149 */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
150 int j_strncasecmp(const char *a, const char *b, int i)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
151 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
152 if(a == NULL || b == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
153 return -1;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
154 else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
155 return strncasecmp(a, b, i);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
156 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
157
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
158 /**
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
159 * NULL pointer save version of strlen
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
160 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
161 * If the parameter contains a NULL pointer, 0 is returned
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
162 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
163 * @param a the string for which the length should be calculated
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
164 * @return 0 if a==NULL, length of the string else
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
165 */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
166 int j_strlen(const char *a)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
167 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
168 if(a == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
169 return 0;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
170 else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
171 return strlen(a);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
172 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
173
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
174 int j_atoi(const char *a, int def)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
175 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
176 if(a == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
177 return def;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
178 else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
179 return atoi(a);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
180 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
181
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
182 spool spool_new(pool p)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
183 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
184 spool s;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
185
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
186 s = pmalloc(p, sizeof(struct spool_struct));
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
187 s->p = p;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
188 s->len = 0;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
189 s->last = NULL;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
190 s->first = NULL;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
191 return s;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
192 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
193
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
194 void spool_add(spool s, char *str)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
195 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
196 struct spool_node *sn;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
197 int len;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
198
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
199 if(str == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
200 return;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
201
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
202 len = strlen(str);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
203 if(len == 0)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
204 return;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
205
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
206 sn = pmalloc(s->p, sizeof(struct spool_node));
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
207 sn->c = pstrdup(s->p, str);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
208 sn->next = NULL;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
209
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
210 s->len += len;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
211 if(s->last != NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
212 s->last->next = sn;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
213 s->last = sn;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
214 if(s->first == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
215 s->first = sn;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
216 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
217
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
218 void spooler(spool s, ...)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
219 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
220 va_list ap;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
221 char *arg = NULL;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
222
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
223 if(s == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
224 return;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
225
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
226 va_start(ap, s);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
227
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
228 /* loop till we hit our end flag, the first arg */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
229 while(1)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
230 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
231 arg = va_arg(ap,char *);
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
232 if((spool)arg == s)
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
233 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
234 else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
235 spool_add(s, arg);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
236 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
237
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
238 va_end(ap);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
239 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
240
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
241 char *spool_print(spool s)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
242 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
243 char *ret,*tmp;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
244 struct spool_node *next;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
245
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
246 if(s == NULL || s->len == 0 || s->first == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
247 return NULL;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
248
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
249 ret = pmalloc(s->p, s->len + 1);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
250 *ret = '\0';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
251
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
252 next = s->first;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
253 tmp = ret;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
254 while(next != NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
255 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
256 tmp = j_strcat(tmp,next->c);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
257 next = next->next;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
258 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
259
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
260 return ret;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
261 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
262
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
263 /* convenience :) */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
264 char *spools(pool p, ...)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
265 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
266 va_list ap;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
267 spool s;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
268 char *arg = NULL;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
269
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
270 if(p == NULL)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
271 return NULL;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
272
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
273 s = spool_new(p);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
274
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
275 va_start(ap, p);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
276
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
277 /* loop till we hit our end flag, the first arg */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
278 while(1)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
279 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
280 arg = va_arg(ap,char *);
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 401
diff changeset
281 if((pool)arg == p)
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
282 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
283 else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
284 spool_add(s, arg);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
285 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
286
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
287 va_end(ap);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
288
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
289 return spool_print(s);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
290 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
291
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
292
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
293 char *strunescape(pool p, char *buf)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
294 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
295 int i,j=0;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
296 char *temp;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
297
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
298 if (p == NULL || buf == NULL) return(NULL);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
299
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
300 if (strchr(buf,'&') == NULL) return(buf);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
301
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
302 temp = pmalloc(p,strlen(buf)+1);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
303
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
304 if (temp == NULL) return(NULL);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
305
879
5f43b532cc37 Remove a few libjabber warnings
Mikael Berthe <mikael@lilotux.net>
parents: 417
diff changeset
306 for(i=0;i<(int)strlen(buf);i++)
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
307 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
308 if (buf[i]=='&')
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
309 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
310 if (strncmp(&buf[i],"&amp;",5)==0)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
311 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
312 temp[j] = '&';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
313 i += 4;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
314 } else if (strncmp(&buf[i],"&quot;",6)==0) {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
315 temp[j] = '\"';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
316 i += 5;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
317 } else if (strncmp(&buf[i],"&apos;",6)==0) {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
318 temp[j] = '\'';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
319 i += 5;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
320 } else if (strncmp(&buf[i],"&lt;",4)==0) {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
321 temp[j] = '<';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
322 i += 3;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
323 } else if (strncmp(&buf[i],"&gt;",4)==0) {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
324 temp[j] = '>';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
325 i += 3;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
326 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
327 } else {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
328 temp[j]=buf[i];
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
329 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
330 j++;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
331 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
332 temp[j]='\0';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
333 return(temp);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
334 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
335
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
336
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
337 char *strescape(pool p, char *buf)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
338 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
339 int i,j,oldlen,newlen;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
340 char *temp;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
341
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
342 if (p == NULL || buf == NULL) return(NULL);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
343
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
344 oldlen = newlen = strlen(buf);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
345 for(i=0;i<oldlen;i++)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
346 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
347 switch(buf[i])
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
348 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
349 case '&':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
350 newlen+=5;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
351 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
352 case '\'':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
353 newlen+=6;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
354 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
355 case '\"':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
356 newlen+=6;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
357 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
358 case '<':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
359 newlen+=4;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
360 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
361 case '>':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
362 newlen+=4;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
363 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
364 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
365 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
366
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
367 if(oldlen == newlen) return buf;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
368
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
369 temp = pmalloc(p,newlen+1);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
370
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
371 if (temp==NULL) return(NULL);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
372
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
373 for(i=j=0;i<oldlen;i++)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
374 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
375 switch(buf[i])
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
376 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
377 case '&':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
378 memcpy(&temp[j],"&amp;",5);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
379 j += 5;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
380 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
381 case '\'':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
382 memcpy(&temp[j],"&apos;",6);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
383 j += 6;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
384 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
385 case '\"':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
386 memcpy(&temp[j],"&quot;",6);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
387 j += 6;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
388 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
389 case '<':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
390 memcpy(&temp[j],"&lt;",4);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
391 j += 4;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
392 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
393 case '>':
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
394 memcpy(&temp[j],"&gt;",4);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
395 j += 4;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
396 break;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
397 default:
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
398 temp[j++] = buf[i];
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
399 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
400 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
401 temp[j] = '\0';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
402 return temp;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
403 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
404
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
405 char *zonestr(char *file, int line)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
406 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
407 static char buff[64];
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
408 int i;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
409
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
410 i = snprintf(buff,63,"%s:%d",file,line);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
411 buff[i] = '\0';
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
412
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
413 return buff;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
414 }