* doc/posix-functions/stat.texi: Mention the problem with the Microsoft
implementations of stat().
* lib/stat.c: Include filename.h instead of dosname.h. Include
malloca.h, stat-w32.h.
(is_unc_root): New function.
(rpl_stat): New implementation for native Windows. Remove
REPLACE_FUNC_STAT_DIR code.
* m4/stat.m4 (gl_FUNC_STAT): On native Windows, set REPLACE_STAT always.
Don't define REPLACE_FUNC_STAT_DIR.
(gl_PREREQ_STAT): Require gl_HEADER_SYS_STAT_H.
* modules/stat (Files): Add lib/stat-w32.h, lib/stat-w32.c.
(Depends-on): Remove dosname. Add filename, malloca.
(configure.ac): Also compile lib/stat-w32.c.
* build-aux/gendocs.sh (version):
* doc/gendocs_template:
* doc/gendocs_template_min:
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR):
Update copyright dates by hand in templates and the like.
* all files: Run 'make update-copyright'.
* build-aux/gendocs.sh (version):
* doc/gendocs_template:
* doc/gendocs_template_min:
* doc/gnulib.texi:
* lib/version-etc.c (COPYRIGHT_YEAR):
Update copyright dates by hand in templates and the like.
* all files: Run 'make update-copyright'.
* m4/cbrtl.m4 (gl_FUNC_CBRTL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_cbrtl_ieee to "guessing yes".
* m4/ceil.m4 (gl_FUNC_CEIL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_ceil_ieee to "guessing yes".
* m4/ceilf.m4 (gl_FUNC_CEILF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_ceilf_ieee to "guessing yes".
* m4/ceill.m4 (gl_FUNC_CEILL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_ceill_ieee to "guessing yes".
* m4/chown.m4 (gl_FUNC_CHOWN): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_chown_slash_works,
gl_cv_func_chown_ctime_works to "guessing yes".
* m4/lchown.m4 (gl_FUNC_LCHOWN): Update.
* m4/exp2l.m4 (gl_FUNC_EXP2L): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_exp2l_ieee to "guessing yes".
* m4/expm1.m4 (gl_FUNC_EXPM1): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_expm1_ieee to "guessing yes".
* m4/fchdir.m4 (gl_FUNC_FCHDIR): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_open_directory_works to
"guessing yes".
* m4/fstat.m4 (gl_FUNC_FSTAT): Update.
* m4/fdopendir.m4 (gl_FUNC_FDOPENDIR): Require AC_CANONICAL_HOST. When
cross-compiling to glibc systems, set gl_cv_func_fdopendir_works to
"guessing yes".
* m4/floor.m4 (gl_FUNC_FLOOR): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_floor_ieee to "guessing yes".
* m4/floorf.m4 (gl_FUNC_FLOORF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_floorf_ieee to
"guessing yes".
* m4/fmod.m4 (gl_FUNC_FMOD): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_fmod_ieee to "guessing yes".
* m4/fmodf.m4 (gl_FUNC_FMODF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_fmodf_ieee to "guessing yes".
* m4/fmodl.m4 (gl_FUNC_FMODL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_fmodl_ieee to "guessing yes".
* m4/getgroups.m4 (gl_FUNC_GETGROUPS): Require AC_CANONICAL_HOST. When
cross-compiling to glibc systems, set gl_cv_func_getgroups_works to
"guessing yes".
* m4/hypot.m4 (gl_FUNC_HYPOT): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_hypot_ieee to "guessing yes".
* m4/hypotf.m4 (gl_FUNC_HYPOTF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_hypotf_ieee to
"guessing yes".
* m4/hypotl.m4 (gl_FUNC_HYPOTL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_hypotl_ieee to
"guessing yes".
* m4/link.m4 (gl_FUNC_LINK): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_link_works to "guessing yes".
* m4/log.m4 (gl_FUNC_LOG): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_log_ieee to "guessing yes".
* m4/logf.m4 (gl_FUNC_LOGF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_logf_ieee to "guessing yes".
* m4/log10.m4 (gl_FUNC_LOG10): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_log10_ieee to "guessing yes".
* m4/log10f.m4 (gl_FUNC_LOG10F): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_log10f_ieee to
"guessing yes".
* m4/log1p.m4 (gl_FUNC_LOG1P): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_log1p_ieee to "guessing yes".
* m4/log1pf.m4 (gl_FUNC_LOG1PF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_log1pf_ieee to
"guessing yes".
* m4/log1pl.m4 (gl_FUNC_LOG1PL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_log1pl_ieee to
"guessing yes".
* m4/log2.m4 (gl_FUNC_LOG2): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_log2_ieee to "guessing yes".
* m4/log2f.m4 (gl_FUNC_LOG2F): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_log2f_ieee to "guessing yes".
* m4/mkdir.m4 (gl_FUNC_MKDIR): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_mkdir_trailing_slash_works,
gl_cv_func_mkdir_trailing_dot_works to "guessing yes".
* m4/mkfifo.m4 (gl_FUNC_MKFIFO): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_mkfifo_works to
"guessing yes".
* m4/mknod.m4 (gl_FUNC_MKNOD): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_mknod_works to
"guessing yes".
* m4/mkstemp.m4 (gl_FUNC_MKSTEMP): Require AC_CANONICAL_HOST. When
cross-compiling to glibc systems, set gl_cv_func_working_mkstemp to
"guessing yes".
* m4/modf.m4 (gl_FUNC_MODF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_modf_ieee to "guessing yes".
* m4/modff.m4 (gl_FUNC_MODFF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_modff_ieee to "guessing yes".
* m4/modfl.m4 (gl_FUNC_MODFL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_modfl_ieee to "guessing yes".
* m4/putenv.m4 (gl_FUNC_PUTENV): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_svid_putenv to
"guessing yes".
* m4/readlink.m4 (gl_FUNC_READLINK): Require AC_CANONICAL_HOST. When
cross-compiling to glibc systems, set gl_cv_func_readlink_works to
"guessing yes".
* m4/remainder.m4 (gl_FUNC_REMAINDER): Require AC_CANONICAL_HOST. When
cross-compiling to glibc systems, set gl_cv_func_remainder_ieee to
"guessing yes".
* m4/remainderf.m4 (gl_FUNC_REMAINDERF): Require AC_CANONICAL_HOST.
When cross-compiling to glibc systems, set gl_cv_func_remainderf_ieee
to "guessing yes".
* m4/remainderl.m4 (gl_FUNC_REMAINDERL): Require AC_CANONICAL_HOST.
When cross-compiling to glibc systems, set gl_cv_func_remainderl_ieee
to "guessing yes".
* m4/rmdir.m4 (gl_FUNC_RMDIR): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_rmdir_works to
"guessing yes".
* m4/unlink.m4 (gl_FUNC_UNLINK): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_unlink_honors_slashes,
gl_cv_func_unlink_parent_fails to "guessing yes".
* m4/remove.m4 (gl_FUNC_REMOVE): Update.
* m4/rename.m4 (gl_FUNC_RENAME): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_rename_slash_dst_works,
gl_cv_func_rename_slash_src_works, gl_cv_func_rename_link_works,
gl_cv_func_rename_dest_works to "guessing yes".
* m4/round.m4 (gl_FUNC_ROUND): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_round_ieee to "guessing yes".
* m4/roundf.m4 (gl_FUNC_ROUNDF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_roundf_ieee to
"guessing yes".
* m4/roundl.m4 (gl_FUNC_ROUNDL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_roundl_ieee to
"guessing yes".
* m4/setenv.m4 (gl_FUNC_SETENV): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_setenv_works to
"guessing yes".
(gl_FUNC_UNSETENV): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_unsetenv_works to
"guessing yes".
* m4/sleep.m4 (gl_FUNC_SLEEP): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_sleep_works to
"guessing yes".
* m4/stat.m4 (gl_FUNC_STAT): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_stat_file_slash to
"guessing yes".
* m4/symlink.m4 (gl_FUNC_SYMLINK): Require AC_CANONICAL_HOST. When
cross-compiling to glibc systems, set gl_cv_func_symlink_works to
"guessing yes".
* m4/trunc.m4 (gl_FUNC_TRUNC): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_trunc_ieee to "guessing yes".
* m4/truncf.m4 (gl_FUNC_TRUNCF): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_truncf_ieee to
"guessing yes".
* m4/truncl.m4 (gl_FUNC_TRUNCL): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_truncl_ieee to
"guessing yes".
* m4/usleep.m4 (gl_FUNC_USLEEP): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_usleep_works to
"guessing yes".
* m4/utimens.m4 (gl_UTIMENS): Require AC_CANONICAL_HOST. When cross-
compiling to glibc systems, set gl_cv_func_futimesat_works to
"guessing yes".
* m4/stat.m4 (gl_PREREQ_STAT): New macro, extracted from gl_FUNC_STAT.
(gl_FUNC_STAT): Move AC_LIBOBJ and gl_PREREQ_STAT invocations from
here...
* modules/stat (configure.ac): ... to here.
m4/dos.m4 needs to go. It laboriously invokes the C compiler, and
extracts symbols from it, puts them into config.h; but it's much
easier to use the symbols directly. filename.h already does this,
but it disagrees with dos.m4 in some respects. This patch
introduces a different include file dosname.h that packages up
dos.m4, and then later we can work on merging filename.h and
dosname.h. Applications that need only the easy-to-configure
symbols should consider including dosname.h rather than dirname.h.
* NEWS: Mention incompatible changes.
* m4/dos.m4: Remove.
* lib/dosname.h, modules/dosname: New files.
* lib/dirname.h (ISSLASH, FILE_SYSTEM_PREFIX_LEN):
(FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE):
(IS_ABSOLUTE_FILE_NAME, IS_RELATIVE_FILE_NAME): Move to lib/dosname.h.
* lib/at-func.c, lib/at-func2.c, lib/openat.c, lib/savewd.c:
Include dosname.h, not dirname.h.
* lib/rmdir.c, lib/stat.c, lib/unlink.c, lib/unlinkat.c:
Include dosname.h, for definitions of symbols like ISSLASH
that used to be in config.h.
* m4/dirname.m4 (gl_DIRNAME_LGPL): Do not require gl_AC_DOS.
* m4/rmdir.m4 (gl_FUNC_RMDIR): Likewise.
* m4/stat.m4 (gl_FUNC_STAT): Likewise.
* m4/unlink.m4 (gl_FUNC_UNLINK): Likewise.
* modules/dirname-lgpl (Files): Omit m4/dos.m4.
* modules/rmdir (Files): Likewise.
* modules/stat (Files): Likewise.
* modules/unlink (Files): Likewise.
* modules/dirname-lgpl (Depends-on): Add dosname.
* modules/lstat (Depends-on): Likewise.
* modules/openat (Depends-on): Likewise.
* modules/rmdir (Depends-on): Likewise.
* modules/savewd (Depends-on): Likewise.
* modules/stat (Depends-on): Likewise.
* modules/unlink (Depends-on): Likewise.
* modules/openat (Depends-on): Remove dirname-lgpl.
* modules/savewd (Depends-on): Likewise.
* tests/test-dirname.c: Do not use removed symbols like
FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR. Instead, use
the remaining symbols, e.g., ISSLASH ('\\').
Like Solaris 9, FreeBSD 7.2 mistakenly allows stat("link-to-file/").
Unlike Solaris, it correctly forbids stat("file/"). A number of
interfaces are affected (such as utimes), but replacing stat is
enough to catch several by reusing the Solaris 9 fixes.
* m4/stat.m4 (gl_FUNC_STAT): Also detect FreeBSD bug with slash on
symlink.
* doc/posix-functions/stat.texi (stat): Document the bug.
* tests/test-stat.h (test_stat_func): Add argument.
* tests/test-stat.c (main): Adjust caller.
* tests/test-fstatat.c (main): Likewise.
* modules/stat-tests (Depends-on): Add stdbool, symlink.
Reported by Jim Meyering.
Signed-off-by: Eric Blake <ebb9@byu.net>
stat("file/",buf) mistakenly succeeded.
* m4/stat.m4 (gl_FUNC_STAT): Detect Solaris 9 bug with trailing
slash.
* lib/stat.c (rpl_stat): Work around it.
* doc/posix-functions/stat.texi (stat): Update documentation.
Signed-off-by: Eric Blake <ebb9@byu.net>
Depending on the current directory, either stat(".",buf) or
stat("./",buf) would fail on mingw.
* modules/stat: New file.
* lib/stat.c: Likewise.
* m4/stat.m4 (gl_FUNC_STAT): Likewise.
* m4/sys_stat_h.m4 (gl_SYS_STAT_H_DEFAULTS): Add witnesses.
* modules/sys_stat (Makefile.am): Use them.
* lib/sys_stat.in.h (stat): Declare replacement.
* lib/openat.c (fstatat): Deal with lstat and stat being function
macros.
* modules/openat (Depends-on): Add inline.
* MODULES.html.sh (systems lacking POSIX:2008): Mention module.
* doc/posix-functions/stat.texi (stat): Likewise.
* modules/stat-tests: New test.
* tests/test-stat.c: Likewise.
Signed-off-by: Eric Blake <ebb9@byu.net>