X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Flibcfs%2Fuser-prim.c;h=2c03cb778fb86e23f65d7bebdc9073b43a401c0b;hb=317ebf88af58e9d9235c90f84b112e931ae69b43;hp=e6aaaeac996ee359128e646b787db70d08decd1a;hpb=1364ab2c166d69bc857a729f3eff2c965db847c9;p=fs%2Flustre-release.git diff --git a/libcfs/libcfs/user-prim.c b/libcfs/libcfs/user-prim.c index e6aaaea..2c03cb7 100644 --- a/libcfs/libcfs/user-prim.c +++ b/libcfs/libcfs/user-prim.c @@ -46,6 +46,7 @@ #ifndef __KERNEL__ +#include #include /* @@ -124,7 +125,7 @@ void cfs_waitq_wait(struct cfs_waitlink *link, cfs_task_state_t state) (void)link; /* well, wait for something to happen */ - cfs_call_wait_handler(0); + call_wait_handler(0); } int64_t cfs_waitq_timedwait(struct cfs_waitlink *link, cfs_task_state_t state, @@ -132,7 +133,7 @@ int64_t cfs_waitq_timedwait(struct cfs_waitlink *link, cfs_task_state_t state, { LASSERT(link != NULL); (void)link; - cfs_call_wait_handler(timeout); + call_wait_handler(timeout); return 0; } @@ -263,6 +264,49 @@ gid_t cfs_curproc_fsgid(void) return getgid(); } +#ifndef HAVE_STRLCPY /* not in glibc for RHEL 5.x, remove when obsolete */ +size_t strlcpy(char *tgt, const char *src, size_t tgt_len) +{ + int src_len = strlen(src); + + strncpy(tgt, src, tgt_len - 1); + tgt[tgt_len - 1] = '\0'; + + return src_len + 1; +} +#endif + +#ifndef HAVE_STRLCAT /* not in glibc for RHEL 5.x, remove when obsolete */ +size_t strlcat(char *tgt, const char *src, size_t size) +{ + size_t tgt_len = strlen(tgt); + + if (size > tgt_len) { + strncat(tgt, src, size - tgt_len - 1); + tgt[size - 1] = '\0'; + } + + return tgt_len + strlen(src); +} +#endif + +/* Read the environment variable of current process specified by @key. */ +int cfs_get_environ(const char *key, char *value, int *val_len) +{ + char *entry; + int len; + + entry = getenv(key); + if (entry == NULL) + return -ENOENT; + + len = strlcpy(value, entry, *val_len); + if (len >= *val_len) + return -EOVERFLOW; + + return 0; +} + void cfs_enter_debugger(void) { /*