modules/fchdir


Log

Author Commit Date CI Message
Eric Blake e4ee1420 2009-12-16T10:07:13 fcntl: use to simplify other modules Let fcntl do the work, instead of copying code into other modules. * modules/cloexec (Depends-on): Add fcntl. * modules/fchdir (Depends-on): Likewise. * modules/fd-safer-flag (Depends-on): Likewise. * modules/unistd-safer (Depends-on): Likewise. * modules/dup3 (configure.ac): Set module indicator. * m4/fchdir.m4 (gl_FUNC_FCHDIR): Replace fcntl if fchdir is missing. * lib/fchdir.c (_gl_register_dup): Fix comment. * lib/cloexec.c (dup_cloexec): Simplify, by relying on fcntl. * lib/dup-safer.c (dup_safer): Likewise. * lib/dup-safer-flag.c (dup_safer_flag): Likewise. * lib/dup3.c (dup3): Likewise. * tests/test-fchdir.c (main): Enhance test. Fixes a dup_cloexec bug reported by Ondřej Vašík. Signed-off-by: Eric Blake <ebb9@byu.net>
Eric Blake 657fb89d 2009-09-23T20:33:40 fchdir: another mingw fix canonicalize_file_name does not understand drive letters or backslash. The only reason openat required it was to make fchdir get the canonical name of a directory. But we can do the same trick with chdir and getcwd. With this fix, fchdir(open("..",O_RDONLY)) finally does the right thing on mingw. * modules/fchdir (Depends-on): Drop canonicalize-lgpl. * lib/fchdir.c (get_name): New helper method; skips canonicalize on mingw (where it has not yet been ported), and make it optional elsewhere. (_gl_register_fd): Use it. Signed-off-by: Eric Blake <ebb9@byu.net>
Eric Blake ba165292 2009-09-15T14:43:14 stat: add as dependency to other modules Modules that use stat but are not in this list don't trip any of the bugs that the stat module fixes. * modules/chown (Depends-on): Add stat. * modules/euidaccess (Depends-on): Likewise. * modules/fchdir (Depends-on): Likewise. * modules/isdir (Depends-on): Likewise. * modules/link (Depends-on): Likewise. * modules/lstat (Depends-on): Likewise. * modules/mkdir-p (Depends-on): Likewise. * modules/modechange (Depends-on): Likewise. * modules/open (Depends-on): Likewise. * modules/readlink (Depends-on): Likewise. * modules/same (Depends-on): Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
Eric Blake 6a9b156f 2009-09-17T11:49:36 maint: make Include sections of modules consistent Done with "sed -i 's/^#include //' `git grep -l ^#include modules`". * modules/alloca: Use only header name; no need to list #include. * modules/alloca-opt: Likewise. * modules/arpa_inet: Likewise. * modules/canon-host: Likewise. * modules/configmake: Likewise. * modules/dirent: Likewise. * modules/eealloc: Likewise. * modules/environ: Likewise. * modules/fchdir: Likewise. * modules/fcntl: Likewise. * modules/fcntl-h: Likewise. * modules/gethrxtime: Likewise. * modules/gettime: Likewise. * modules/ignore-value: Likewise. * modules/inet_ntop: Likewise. * modules/inet_pton: Likewise. * modules/inttypes: Likewise. * modules/isnand-nolibm: Likewise. * modules/isnanf-nolibm: Likewise. * modules/mbchar: Likewise. * modules/mbfile: Likewise. * modules/mbiter: Likewise. * modules/mbuiter: Likewise. * modules/netdb: Likewise. * modules/netinet_in: Likewise. * modules/nproc: Likewise. * modules/pagealign_alloc: Likewise. * modules/poll: Likewise. * modules/printf-frexp: Likewise. * modules/pthread: Likewise. * modules/putenv: Likewise. * modules/random_r: Likewise. * modules/relocatable-prog: Likewise. * modules/search: Likewise. * modules/select: Likewise. * modules/selinux-h: Likewise. * modules/settime: Likewise. * modules/signal: Likewise. * modules/size_max: Likewise. * modules/socklen: Likewise. * modules/ssize_t: Likewise. * modules/stdarg: Likewise. * modules/stdbool: Likewise. * modules/stddef: Likewise. * modules/stdint: Likewise. * modules/stdio: Likewise. * modules/stdlib: Likewise. * modules/string: Likewise. * modules/strings: Likewise. * modules/sys_file: Likewise. * modules/sys_ioctl: Likewise. * modules/sys_select: Likewise. * modules/sys_socket: Likewise. * modules/sys_stat: Likewise. * modules/sys_time: Likewise. * modules/sys_times: Likewise. * modules/sys_utsname: Likewise. * modules/sys_wait: Likewise. * modules/sysexits: Likewise. * modules/time: Likewise. * modules/times: Likewise. * modules/tmpfile: Likewise. * modules/trim: Likewise. * modules/unistd: Likewise. * modules/wchar: Likewise. * modules/wctype: Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
Eric Blake 4475e25b 2009-08-31T14:20:03 fchdir: simplify error handling, and support dup3 * modules/fchdir (Depends-on): Use strdup-posix, not strdup. Add stdbool, malloc-posix, realloc-posix. * lib/fchdir.c (struct dir_info_t): Delete saved_errno. (ensure_dirs_slot): Return false on allocation failure. (rpl_dup2): Delete. (_gl_register_dup): New function. (_gl_unregister_fd, rpl_opendir, rpl_dup): Update callers. (_gl_register_fd): Close fd on allocation failure. * lib/fcntl.in.h (_gl_register_fd): Update signature. * lib/unistd.in.h (_gl_register_dup) [FCHDIR_REPLACEMENT]: New prototype. (rpl_dup2_fchdir): Delete prototype. * lib/open.c (open): Update caller. * lib/dup2.c (dup2): Track fchdir metadata. * lib/dup3.c (dup3): Likewise. * m4/dup2.m4 (gl_REPLACE_DUP2): New macro. * m4/fchdir.m4 (gl_FUNC_FCHDIR): Use it. Signed-off-by: Eric Blake <ebb9@byu.net>
Eric Blake 8fc864a0 2009-08-31T06:09:08 fchdir: port to mingw * m4/fchdir.m4 (gl_FUNC_FCHDIR): Check for mingw bug. * lib/open.c (open) [FCHDIR_REPLACEMENT]: If directories can't be opened, then use a substitute. * lib/sys_stat.in.h (fstat) [REPLACE_OPEN_DIRECTORY]: Declare replacement. * lib/fchdir.c (fstat) [REPLACE_OPEN_DIRECTORY]: Implement it. (_gl_register_fd): No need to check stat if open already filters all directories. (fchdir): Fix error condition to match POSIX. * modules/fchdir (Depends-on): Add sys_stat. * doc/posix-functions/open.texi (open): Document the limitation. * modules/fchdir-tests: New file. * tests/test-fchdir.c: Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
Bruno Haible 802f6fc3 2009-08-23T10:18:14 Update module dependencies.
Bruno Haible c5fb0151 2008-10-19T01:44:46 New module 'dirent'.
Paolo Bonzini d638ad23 2008-10-10T00:06:58 New module 'close'.
Bruno Haible c2318e88 2008-08-30T03:09:15 Avoid some "gcc -pedantic" warnings.
Jim Meyering 0f5a6cf4 2008-06-24T09:40:36 make several modules depend on the "open" module This provides slightly increased consistency when opening-for-write the name of a non-directory spelled with a trailing slash. * modules/chdir-safer: Likewise. * modules/chown: Likewise. * modules/clean-temp: Likewise. * modules/copy-file: Likewise. * modules/fchdir: Likewise. * modules/fcntl-safer: Likewise. * modules/pipe: Likewise. * modules/utime: Likewise. Prompted by Eric Blake and Bruno Haible.
Bruno Haible 25d87af7 2007-10-02T00:08:48 Rename dirent_.h to dirent.in.h.
Paul Eggert 73f2a1c0 2007-06-21T17:08:44 * m4/fchdir.m4 (gl_FUNC_FCHDIR): Likewise. * m4/iconv_h.m4 (gl_ICONV_H): Likewise. * m4/locale_h.m4 (gl_LOCALE_H): Likewise. * m4/netinet_in_h.m4 (gl_HEADER_NETINET_IN): Likewise. * m4/sys_select_h.m4 (gl_HEADER_SYS_SELECT): Likewise. * m4/sys_socket_h.m4 (gl_HEADER_SYS_SOCKET): Likewise. * m4/sysexits.m4 (gl_SYSEXITS): Likewise. SCALAR(0x828a248) * lib/dirent_.h: Likewise. * lib/iconv_.h: Likewise. * lib/locale_.h: Likewise. * lib/netinet_in_.h: Likewise. * lib/sys_select_.h: Likewise. * lib/sys_socket_.h: Likewise. * lib/sysexits_.h: Likewise. * modules/fchdir: Likewise. * modules/iconv_open: Likewise. * modules/locale: Likewise. * modules/netinet_in: Likewise. * modules/sys_select: Likewise. * modules/sys_socket: Likewise. * modules/sysexits: Likewise.
Paul Eggert af36a1d1 2007-05-17T15:56:05 * lib/dirent_.h: Prefer #include_next <foo.h> to #include @ABSOLUTE_FOO_H@ if @HAVE_INCLUDE_NEXT@. This works better with GCC 4.2, which otherwise issues a lot of warnings. * lib/iconv_.h, lib/locale_.h, lib/netinet_in_.h, lib/sys_select_.h: * lib/sys_socket_.h, lib/sys_stat_.h, lib/sysexits_.h, lib/unistd_.h: Likewise. * modules/fchdir (dirent.h): Substitute @HAVE_INCLUDE_NEXT@. * modules/iconv_open (iconv.h): Likewise. * modules/locale (locale.h): Likewise. * modules/netinet_in (netinet/in.h): Likewise. * modules/sys_select (sys_select.h): Likewise. * modules/sys_socket (sys/socket.h): Likewise. * modules/sys_stat (sys/stat.h): Likewise. * modules/sysexits (sysexits.h): Likewise. * modules/unistd (unistd.h): Likewise.
Bruno Haible d52c5b93 2007-02-19T02:23:32 Move more declarations into <unistd.h>.
Bruno Haible c002371c 2007-02-18T22:44:21 Depends on dup2 function being available.
Bruno Haible 8e2cdb06 2007-01-28T16:10:39 Simplify macrology that creates unistd.h.
Bruno Haible 8520ad55 2007-01-14T20:29:04 Add missing dependency.
Bruno Haible 854ebf64 2007-01-14T11:32:10 New module 'fchdir'.