Changeset 5002:35d2d75c1504 in roaraudio
- Timestamp:
- 05/24/11 00:55:30 (13 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/memmgr.h
r5001 r5002 133 133 #endif 134 134 135 #ifndef ROAR_HAVE_STRLCPY 136 ssize_t roar_mm_strlcpy(char *dst, const char *src, size_t size); 137 #else 138 #define roar_mm_strlcpy(dst,src,size) strlcpy((dst),(src),(size)) 139 #endif 140 141 #ifndef ROAR_HAVE_STRLCAT 142 ssize_t roar_mm_strlcat(char *dst, const char *src, size_t size); 143 #else 144 #define roar_mm_strlcat(dst,src,size) strlcat((dst),(src),(size)) 145 #endif 146 147 #ifndef ROAR_HAVE_STRTOK_R 148 char * roar_mm_strtok_r(char *str, const char *delim, char **saveptr); 149 #else 150 #define roar_mm_strtok_r(str,delim,saveptr) strtok_r((str),(delim),(saveptr)) 151 #endif 152 135 153 #endif 136 154 -
libroar/memmgr.c
r5001 r5002 301 301 } 302 302 303 304 #ifndef ROAR_HAVE_STRLCPY 305 ssize_t roar_mm_strlcpy(char *dst, const char *src, size_t size) { 306 ssize_t len; 307 308 if ( dst == NULL || src == NULL ) { 309 roar_err_set(ROAR_ERROR_FAULT); 310 return -1; 311 } 312 313 if ( size == 0 ) 314 return 0; 315 316 len = roar_mm_strlen(src); 317 if ( len == -1 ) 318 return -1; 319 320 if ( len < (ssize_t)size ) { 321 memcpy(dst, src, len); 322 dst[len] = 0; 323 } else { 324 memcpy(dst, src, size - 1); 325 dst[size-1] = 0; 326 } 327 328 return len; 329 } 330 #endif 331 332 #ifndef ROAR_HAVE_STRLCAT 333 ssize_t roar_mm_strlcat(char *dst, const char *src, size_t size) { 334 ssize_t slen; 335 ssize_t dlen; 336 int err; 337 338 if ( dst == NULL || src == NULL ) { 339 roar_err_set(ROAR_ERROR_FAULT); 340 return -1; 341 } 342 343 if ( size == 0 ) 344 return 0; 345 346 slen = roar_mm_strlen(src); 347 if ( slen == -1 ) 348 return -1; 349 350 dlen = roar_mm_strnlen(dst, size); 351 err = roar_error; 352 if ( dlen == -1 && err == ROAR_ERROR_MSGSIZE ) 353 dlen = size; 354 355 if ( dlen == -1 ) 356 return -1; 357 358 if ( (dlen + slen) < (ssize_t)size ) { 359 memcpy(dst+dlen, src, slen); 360 dst[dlen+slen] = 0; 361 } else if ( dlen != size ) { 362 memcpy(dst+dlen, src, size-dlen-1); 363 dst[size-1] = 0; 364 } 365 366 return dlen+slen; 367 } 368 #endif 369 370 #ifndef ROAR_HAVE_STRTOK_R 371 char * roar_mm_strtok_r(char *str, const char *delim, char **saveptr) { 372 char * next; 373 374 if ( delim == NULL || saveptr == NULL ) { 375 roar_err_set(ROAR_ERROR_FAULT); 376 return NULL; 377 } 378 379 if ( delim[0] == 0 ) { 380 roar_err_set(ROAR_ERROR_NOTSUP); 381 return NULL; 382 } 383 384 if ( delim[1] != 0 ) { 385 roar_err_set(ROAR_ERROR_NOTSUP); 386 return NULL; 387 } 388 389 if ( str != NULL ) { 390 next = str; 391 } else { 392 next = *saveptr; 393 } 394 395 if ( next == NULL ) { 396 roar_err_set(ROAR_ERROR_NODATA); 397 return NULL; 398 } 399 400 *saveptr = strstr(next, delim); 401 402 if ( *saveptr != NULL ) { 403 **saveptr = 0; 404 (*saveptr)++; 405 } 406 407 return next; 408 } 409 #endif 410 303 411 //ll
Note: See TracChangeset
for help on using the changeset viewer.