comparison src/win32/libc_interface.c @ 4193:c297b9d4f67c

[gaim-migrate @ 4424] strsep committer: Tailor Script <tailor@pidgin.im>
author Herman Bloggs <hermanator12002@yahoo.com>
date Fri, 03 Jan 2003 20:51:08 +0000
parents 10ffafd1c91f
children 86037d6bf80f
comparison
equal deleted inserted replaced
4192:17187504bfc2 4193:c297b9d4f67c
166 } 166 }
167 else 167 else
168 return strerror( errornum ); 168 return strerror( errornum );
169 } 169 }
170 170
171 /* From glibc 2.2.5 */
172 char* wgaim_strsep(char **stringp, const char *delim) {
173 char *begin, *end;
174
175 begin = *stringp;
176 if (begin == NULL)
177 return NULL;
178
179 /* A frequent case is when the delimiter string contains only one
180 character. Here we don't need to call the expensive `strpbrk'
181 function and instead work using `strchr'. */
182 if (delim[0] == '\0' || delim[1] == '\0') {
183 char ch = delim[0];
184
185 if (ch == '\0')
186 end = NULL;
187 else {
188 if (*begin == ch)
189 end = begin;
190 else if (*begin == '\0')
191 end = NULL;
192 else
193 end = strchr (begin + 1, ch);
194 }
195 }
196 else
197 /* Find the end of the token. */
198 end = strpbrk (begin, delim);
199
200 if (end) {
201 /* Terminate the token and set *STRINGP past NUL character. */
202 *end++ = '\0';
203 *stringp = end;
204 }
205 else
206 /* No more delimiters; this is the last token. */
207 *stringp = NULL;
208
209 return begin;
210 }
211
171 /* unistd.h */ 212 /* unistd.h */
172 213
173 /* 214 /*
174 * We need to figure out whether fd is a file or socket handle. 215 * We need to figure out whether fd is a file or socket handle.
175 */ 216 */