X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fsymlinkat.c;h=336b0a2a75ffec3d085229c2f01a7593dccfcea4;hb=e7086a9a301ffcfef17edbcba9e7c0312c33f7a8;hp=fd129ea014054113fcc3df2239bb117e44df29f9;hpb=41861b05c9192bf7cd65af0530d1097d0099b84f;p=gnulib.git diff --git a/lib/symlinkat.c b/lib/symlinkat.c index fd129ea01..336b0a2a7 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-2013 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 @@ -21,13 +21,14 @@ #include #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; @@ -73,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 readlink/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