From cbc8c6f7a5de52fc01395241ef1faaac96c8bca3 Mon Sep 17 00:00:00 2001 From: Frank Lahm Date: Mon, 12 Sep 2011 14:15:17 +0200 Subject: [PATCH] Move fullpathname() around in libatalk --- bin/adv1tov2/adv1tov2.c | 15 --------------- include/atalk/unix.h | 1 - include/atalk/util.h | 1 + libatalk/util/unix.c | 22 ++++++++++++++++++++++ libatalk/vfs/unix.c | 15 --------------- 5 files changed, 23 insertions(+), 31 deletions(-) diff --git a/bin/adv1tov2/adv1tov2.c b/bin/adv1tov2/adv1tov2.c index d4a66fba..eade898b 100644 --- a/bin/adv1tov2/adv1tov2.c +++ b/bin/adv1tov2/adv1tov2.c @@ -58,21 +58,6 @@ static void xlate(char *name, int flags) { } #endif -/* ----------------------------- */ -char *fullpathname(const char *name) -{ - static char wd[ MAXPATHLEN + 1]; - - if ( getcwd( wd , MAXPATHLEN) ) { - strlcat(wd, "/", MAXPATHLEN); - strlcat(wd, name, MAXPATHLEN); - } - else { - strlcpy(wd, name, MAXPATHLEN); - } - return wd; -} - #define MAXDESCEND 0xFFFF /* recursively descend subdirectories. * oh the stack space we use up! */ diff --git a/include/atalk/unix.h b/include/atalk/unix.h index 06e3f493..f6d191ca 100644 --- a/include/atalk/unix.h +++ b/include/atalk/unix.h @@ -26,7 +26,6 @@ /* vfs/unix.c */ extern int netatalk_unlink(const char *name); extern int netatalk_unlinkat(int dirfd, const char *name); -extern char *fullpathname(const char *); extern int statat(int dirfd, const char *path, struct stat *st); extern int lstatat(int dirfd, const char *path, struct stat *st); extern DIR *opendirat(int dirfd, const char *path); diff --git a/include/atalk/util.h b/include/atalk/util.h index bcf7e708..67a68d5d 100644 --- a/include/atalk/util.h +++ b/include/atalk/util.h @@ -177,6 +177,7 @@ extern int recv_fd(int fd, int nonblocking); *****************************************************************/ extern const char *getcwdpath(void); +extern const char *fullpathname(const char *); extern char *stripped_slashes_basename(char *p); extern int lchdir(const char *dir); extern void randombytes(void *buf, int n); diff --git a/libatalk/util/unix.c b/libatalk/util/unix.c index c16c5da5..0e466307 100644 --- a/libatalk/util/unix.c +++ b/libatalk/util/unix.c @@ -110,6 +110,28 @@ const char *getcwdpath(void) return strerror(errno); } +/*! + * @brief Request absolute path + * + * @returns Absolute filesystem path to object + */ +const char *fullpathname(const char *name) +{ + static char wd[MAXPATHLEN + 1]; + + if (name[0] == '/') + return name; + + if (getcwd(wd , MAXPATHLEN)) { + strlcat(wd, "/", MAXPATHLEN); + strlcat(wd, name, MAXPATHLEN); + } else { + strlcpy(wd, name, MAXPATHLEN); + } + + return wd; +} + /*! * Takes a buffer with a path, strips slashs, returns basename * diff --git a/libatalk/vfs/unix.c b/libatalk/vfs/unix.c index 229f1b7a..cc053c91 100644 --- a/libatalk/vfs/unix.c +++ b/libatalk/vfs/unix.c @@ -168,21 +168,6 @@ int netatalk_unlink(const char *name) return AFP_OK; } -char *fullpathname(const char *name) -{ - static char wd[ MAXPATHLEN + 1]; - - if ( getcwd( wd , MAXPATHLEN) ) { - strlcat(wd, "/", MAXPATHLEN); - strlcat(wd, name, MAXPATHLEN); - } - else { - strlcpy(wd, name, MAXPATHLEN); - } - return wd; -} - - /************************************************************************** * *at semnatics support functions (like openat, renameat standard funcs) **************************************************************************/ -- 2.39.2