426 util_getpwnam(const char *name, struct passwd *result, char *buffer, |
426 util_getpwnam(const char *name, struct passwd *result, char *buffer, |
427 int buflen) |
427 int buflen) |
428 { |
428 { |
429 struct passwd *rv; |
429 struct passwd *rv; |
430 |
430 |
431 #if defined(AIX) || defined(LINUX) || defined(HPUX) || defined(BSD) |
|
432 errno = getpwnam_r(name, result, buffer, buflen, &rv); |
431 errno = getpwnam_r(name, result, buffer, buflen, &rv); |
433 if (errno != 0) |
432 if (errno != 0) |
434 rv = NULL; |
433 rv = NULL; |
435 #else |
|
436 rv = getpwnam_r(name, result, buffer, buflen); |
|
437 #endif |
|
438 |
434 |
439 return rv; |
435 return rv; |
440 } |
436 } |
441 #endif |
437 #endif |
442 |
438 |
445 NSAPI_PUBLIC struct passwd * |
441 NSAPI_PUBLIC struct passwd * |
446 util_getpwuid(uid_t uid, struct passwd *result, char *buffer, int buflen) |
442 util_getpwuid(uid_t uid, struct passwd *result, char *buffer, int buflen) |
447 { |
443 { |
448 struct passwd *rv; |
444 struct passwd *rv; |
449 |
445 |
450 #if defined(AIX) || defined(LINUX) || defined(HPUX) || defined(BSD) |
|
451 errno = getpwuid_r(uid, result, buffer, buflen, &rv); |
446 errno = getpwuid_r(uid, result, buffer, buflen, &rv); |
452 if (errno != 0) |
447 if (errno != 0) |
453 rv = NULL; |
448 rv = NULL; |
454 #else |
|
455 rv = getpwuid_r(uid, result, buffer, buflen); |
|
456 #endif |
|
457 |
449 |
458 return rv; |
450 return rv; |
459 } |
451 } |
460 #endif |
452 #endif |
461 |
453 |
482 sstr_t util_path_append(pool_handle_t *pool, char *path, char *ch) { |
474 sstr_t util_path_append(pool_handle_t *pool, char *path, char *ch) { |
483 sstr_t parent = sstr(path); |
475 sstr_t parent = sstr(path); |
484 sstr_t child = sstr(ch); |
476 sstr_t child = sstr(ch); |
485 sstr_t newstr; |
477 sstr_t newstr; |
486 sstr_t s; |
478 sstr_t s; |
487 |
479 if(parent.ptr[parent.length-1] == '/') { |
|
480 s.length = 0; |
|
481 } else { |
|
482 s = S("/"); |
|
483 } |
488 |
484 |
489 UcxAllocator a = util_pool_allocator(pool); |
485 UcxAllocator a = util_pool_allocator(pool); |
490 if(s.length == 1) { |
486 if(s.length == 1) { |
491 newstr = sstrcat_a(&a, 3, parent, s, child); |
487 newstr = sstrcat_a(&a, 3, parent, s, child); |
492 } else { |
488 } else { |