From: mjmac Date: Thu, 28 Dec 2006 04:40:57 +0000 (+0000) Subject: * reverting: X-Git-Tag: v1_7_100~381 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=7891ce53d26ae6ae1cc2cc4a50b58c4c5fb7e465 * reverting: configure.in: 1.4 -> 1.1.1.2 src/readlink.c: 1.4 -> 1.1.1.2 include/sysio.h: 1.6 -> 1.3 --- diff --git a/libsysio/configure.in b/libsysio/configure.in index 5de069a..c6b6e30 100644 --- a/libsysio/configure.in +++ b/libsysio/configure.in @@ -101,6 +101,17 @@ AC_ARG_WITH(zero-sum-memory, [with_zero_sum_memory=no]) AC_SUBST(ZERO_SUM_MEMORY) +AC_ARG_WITH(defer-init-cwd, + AC_HELP_STRING([--with-defer-init-cwd], + [defer initialization of current working directory]), + [ case "${withval}" in + yes) DEFER_INIT_CWD=-DDEFER_INIT_CWD=1 ;; + no) ;; + *) AC_MSG_ERROR(bad value ${withval} for --with-defer-init-cwd) ;; + esac], + [with_defer_init_cwd=no]) +AC_SUBST(DEFER_INIT_CWD) + AC_ARG_WITH(cplant_yod, AC_HELP_STRING([--with-cplant-yod],[build cplant yod I/O driver]), [ case "${withval}" in @@ -198,21 +209,6 @@ if test "$machine" = rs6000; then machine="powerpc" fi -AC_MSG_CHECKING(if readlink returns ssize_t) -AC_TRY_COMPILE([ - include -],[ - ssize_t readlink(const char *, char *, size_t); -], - readlink_returns_ssize_t="yes", - readlink_returns_ssize_t="yes" -) -AC_MSG_RESULT($readlink_returns_ssize_t) -if test x$readlink_returns_ssize_t = xyes; then - AC_DEFINE(HAVE_POSIX_1003_READLINK, 1, [readlink returns ssize_t]) -fi - - # If we can't provoke the declaration of stat64 then we assume the # environment supports 64-bit file support naturally. Beware! AC_MSG_CHECKING(whether _LARGEFILE64_SOURCE definition is required) @@ -250,61 +246,6 @@ fi AC_MSG_RESULT($alpha_linux_env) AM_CONDITIONAL(TEST_ALPHA_ARG, test x$alpha_linux_env = xyes) -# check for 64 bit stat, fstat, truncate, ftruncate syscalls -# -AC_MSG_CHECKING(for 64 bit stat and truncate syscalls) -AC_TRY_COMPILE([ -#include -#include -extern int syscall();], -[char path[] = "/"; -int fd = 0; -struct stat buf; -syscall(SYS_stat64,path,&buf); -syscall(SYS_fstat64,fd,&buf); -syscall(SYS_truncate64, path, buf.st_size); -syscall(SYS_ftruncate64, fd, buf.st_size); -], - sysstat64_exists=yes, - sysstat64_exists=no) -AC_MSG_RESULT($sysstat64_exists) -if test x$sysstat64_exists = xno; then - AC_DEFINE(USE_NATIVE_STAT) -fi - -# Check for fdatasync syscall -# -AC_MSG_CHECKING(for fdatasync system call) -if test x$alpha_linux_env = xyes; then - _syscallnum=SYS_osf_fdatasync -else - _syscallnum=SYS_fdatasync -fi -AC_TRY_COMPILE([ -#include -extern int syscall();], -[int fd = 0; -syscall(SYS_fdatasync, fd);], - syscall_fdatasync_exists=yes, - syscall_fdatasync_exists=no) -AC_MSG_RESULT($syscall_fdatasync_exists) -if test x$syscall_fdatasync_exists = xyes; then - AC_DEFINE_UNQUOTED(NATIVE_FDATASYNC, $_syscallnum) -fi - -# Check for SYS_utime -# -AC_MSG_CHECKING(for utime system call) -AC_TRY_COMPILE([ -#include -extern int syscall();], -[syscall(SYS_utime);], - syscall_utime_exists=yes, - syscall_utime_exists=no) -AC_MSG_RESULT($syscall_utime_exists) -if test x$syscall_utime_exists = xno; then - AC_DEFINE(USE_NATIVE_UTIME) -fi # Check for __st_ino # AC_MSG_CHECKING(for __st_ino) diff --git a/libsysio/include/sysio.h b/libsysio/include/sysio.h index bae86c2..770d741 100644 --- a/libsysio/include/sysio.h +++ b/libsysio/include/sysio.h @@ -247,11 +247,7 @@ extern int SYSIO_INTERFACE_NAME(ftruncate64)(int fd, off64_t length); #endif extern int SYSIO_INTERFACE_NAME(rmdir)(const char *path); extern int SYSIO_INTERFACE_NAME(symlink)(const char *path1, const char *path2); -#ifdef HAVE_POSIX_1003_READLINK -extern ssize_t SYSIO_INTERFACE_NAME(readlink)(const char *path, -#else extern int SYSIO_INTERFACE_NAME(readlink)(const char *path, -#endif char *buf, size_t bufsiz); extern int SYSIO_INTERFACE_NAME(link)(const char *oldpath, const char *newpath); diff --git a/libsysio/src/readlink.c b/libsysio/src/readlink.c index f083744..8693dc3 100644 --- a/libsysio/src/readlink.c +++ b/libsysio/src/readlink.c @@ -41,21 +41,21 @@ * lee@sandia.gov */ +#if defined(__linux__) +#define _BSD_SOURCE +#endif #include #include #include #include +#include #include #include "sysio.h" #include "inode.h" #include "sysio-symbols.h" -#ifdef HAVE_POSIX_1003_READLINK -ssize_t -#else int -#endif SYSIO_INTERFACE_NAME(readlink)(const char *path, char *buf, size_t bufsiz) { struct intent intent; @@ -70,14 +70,15 @@ SYSIO_INTERFACE_NAME(readlink)(const char *path, char *buf, size_t bufsiz) if (err) goto out; ino = pno->p_base->pb_ino; - err = (*ino->i_ops.inop_readlink)(pno, buf, bufsiz); - if (err) + if (!S_ISLNK(ino->i_stbuf.st_mode)) { + err = -EINVAL; goto error; - + } + err = (*ino->i_ops.inop_readlink)(pno, buf, bufsiz); error: P_RELE(pno); out: - SYSIO_INTERFACE_RETURN(err, err >= 0 ? 0 : err); + SYSIO_INTERFACE_RETURN(err < 0 ? -1 : err, err >= 0 ? 0 : err); } #ifdef REDSTORM