X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fsymlinkat.c;h=fc5bb526f809260d63277851738a43f1b9de13d2;hb=b344de996cd51f8a2f2558a3172016b64d99c622;hp=6c1c1d5fbdc23a75f8cbff967a960f4bcee451aa;hpb=ac181274675d799dc733b278418b2caa530e4c4d;p=gnulib.git diff --git a/lib/symlinkat.c b/lib/symlinkat.c index 6c1c1d5fb..fc5bb526f 100644 --- a/lib/symlinkat.c +++ b/lib/symlinkat.c @@ -1,5 +1,5 @@ /* Create a symlink relative to an open directory. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,19 +20,15 @@ #include -#include "dirname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */ -#include "openat.h" -#include "openat-priv.h" -#include "save-cwd.h" - #if !HAVE_SYMLINK -/* Mingw lacks symlink, so this wrapper is trivial. */ +/* Mingw lacks symlink, and it is more efficient to provide a trivial + wrapper than to go through at-func.c to call rpl_symlink. */ # include int -symlinkat (char const *path1 _UNUSED_PARAMETER_, int fd _UNUSED_PARAMETER_, - char const *path2 _UNUSED_PARAMETER_) +symlinkat (char const *path1 _GL_UNUSED, int fd _GL_UNUSED, + char const *path2 _GL_UNUSED) { errno = ENOSYS; return -1; @@ -68,7 +64,7 @@ symlinkat_reversed (int fd, char const *file, char const *contents); /* Create a symlink FILE, in the directory open on descriptor FD, holding CONTENTS. If possible, do it without changing the working directory. Otherwise, resort to using save_cwd/fchdir, - then mkdir/restore_cwd. If either the save_cwd or the restore_cwd + then symlink/restore_cwd. If either the save_cwd or the restore_cwd fails, then give a diagnostic and exit nonzero. */ int @@ -78,29 +74,3 @@ symlinkat (char const *contents, int fd, char const *file) } #endif /* HAVE_SYMLINK */ - -/* Gnulib provides a readlink stub for mingw; use it for distinction - between EINVAL and ENOENT, rather than always failing with ENOSYS. */ - -/* POSIX 2008 says that unlike readlink, readlinkat returns 0 for - success instead of the buffer length. But this would render - readlinkat worthless since readlink does not guarantee a - NUL-terminated buffer. Assume this was a bug in POSIX. */ - -/* Read the contents of symlink FILE into buffer BUF of size LEN, in the - directory open on descriptor FD. If possible, do it without changing - the working directory. Otherwise, resort to using save_cwd/fchdir, - then mkdir/restore_cwd. If either the save_cwd or the restore_cwd - fails, then give a diagnostic and exit nonzero. */ - -#define AT_FUNC_NAME readlinkat -#define AT_FUNC_F1 readlink -#define AT_FUNC_POST_FILE_PARAM_DECLS , char *buf, size_t len -#define AT_FUNC_POST_FILE_ARGS , buf, len -#define AT_FUNC_RESULT ssize_t -#include "at-func.c" -#undef AT_FUNC_NAME -#undef AT_FUNC_F1 -#undef AT_FUNC_POST_FILE_PARAM_DECLS -#undef AT_FUNC_POST_FILE_ARGS -#undef AT_FUNC_RESULT