Commit Graph

18940 Commits

Author SHA1 Message Date
Paul Eggert
5a0e4bcd67 Merged into backupfile.c. 2004-07-27 23:20:03 +00:00
Paul Eggert
0dd8a47056 backupfile integer overflow fixups 2004-07-27 23:15:05 +00:00
Paul Eggert
94a410b48a backupfile integer overflow fixups 2004-07-27 23:14:53 +00:00
Paul Eggert
9dfcfc47dc (do_link): find_backup_file_name no longer returns NULL, so don't
bother to check for this.
2004-07-27 23:14:30 +00:00
Paul Eggert
53b24fa527 (do_copy): find_backup_file_name no longer returns NULL, so don't
bother to check for this.
2004-07-27 23:14:05 +00:00
Paul Eggert
c3d37adf6d (copy_internal): find_backup_file_name no longer
returns NULL, so don't bother to check for this.
2004-07-27 23:13:38 +00:00
Paul Eggert
967a08d520 (gl_BACKUPFILE): AC_REQUIRE
gl_CHECK_TYPE_STRUCT_DIRENT_D_INO instead of invoking it directly.
Do not require AC_FUNC_CLOSEDIR_VOID.
2004-07-27 23:13:17 +00:00
Paul Eggert
1b94625f19 backupfile.c rewrite to avoid arbitrary limits on lengths of
numeric backup extensions.

Include "backupfile.h" first.
Include errno.h, stdbool.h, limits.h, unistd.h, xalloc.h.
(CLOSEDIR, INT_STRLEN_BOUND): Remove.
(pathconf) [! (HAVE_PATHCONF && defined _PC_NAME_MAX)]: New macro.
(_POSIX_NAME_MAX) [!defined _POSIX_NAME_MAX]: New macro.
(NAME_MAX_MAXIMUM): New macro.  Unlike the old addext.c, we
also look at _XOPEN_NAME_MAX, for better performance on modern
hosts that support only file names of length 255 or more.
(ISDIGIT): unsigned -> unsigned int
(max_backup_version, version_number): Remove.
(check_extension): New function.  Similar to the old addext, but
static, assumes that the extension has already been added,
and a bit more careful on DOS hosts.
(numbered_backup): New function.  It does what max_backup_version
and version_number used to do, but it doesn't use integer arithmetic
to calculate extensions so it doesn't overflow.
(find_backup_file_name): Rewrite to use these new functions.
This has a new optimization: we needn't call pathconf if the
new numbered backup name has the same length as the old.
Also, use xmalloc rather than malloc, so that the caller
needn't worry about memory exhaustion.
2004-07-27 23:12:56 +00:00
Paul Eggert
bdf757d699 backupfile.h (addext): Remove decl. 2004-07-27 23:12:17 +00:00
Paul Eggert
4e5aa1e97b (libfetish_a_SOURCES): Remove addext.c. 2004-07-27 23:11:55 +00:00
Paul Eggert
362264b40d Regenerate. 2004-07-26 06:14:11 +00:00
Paul Eggert
218f93ec2c (GET_NICE_VALUE): Renamed from GET_PRIORITY.
All uses changed.
(NZERO): New macro, if system doesn't define it already.
(usage): Distinguish priorities from nice values.
Don't assume NZERO is 20.
(main): Use bool instead of int where appropriate.
If user specifies an adjustment out of range, always truncate it
to an inrange value instead of sometimes giving an error message
and sometimes not.
Do not assume that -1 is an error return from "nice" or
"getpriority", as it might be the current nice value minus NZERO.
If nice/setpriority fails with errno == EPERM, go ahead and run
the command anyway; POSIX requires this.
2004-07-26 06:08:50 +00:00
Paul Eggert
b41eb892ea (nice invocation): Document the "nice value", and
how it affects the scheduling priority.  (The old documentation
implied that the nice value equaled the scheduling priority, which
isn't accurate.)  Document that the range of nice values might
exceed -20..19.  Specify what happens when you give a nice value
that is out of range, or when you don't have permissions to lower
the nice value.  Bash doesn't have a builtin 'nice', so don't say
"most shells" have one.
2004-07-26 06:08:18 +00:00
Paul Eggert
3bc83c8a92 Document portability and POSIX fixes for "nice". 2004-07-26 06:07:40 +00:00
Paul Eggert
a4dec5db91 Portability and POSIX fixes for "nice". 2004-07-26 06:07:04 +00:00
Paul Eggert
7200b3e37d Portability and POSIX fixes for "nice". 2004-07-26 06:06:30 +00:00
Paul Eggert
e86b28dc3d Remove setreuid/setregid test from gl_MACROS. 2004-07-25 23:01:23 +00:00
Paul Eggert
3092c8fa01 Update serial number. 2004-07-25 23:00:47 +00:00
Paul Eggert
f22603b500 (gl_MACROS): Remove test for setreuid and setregid,
as test.c no longer uses them directly.
2004-07-25 23:00:11 +00:00
Paul Eggert
be7b1ba252 Regenerate. 2004-07-25 07:48:17 +00:00
Paul Eggert
5538bf8921 euidaccess fixes 2004-07-25 07:40:32 +00:00
Paul Eggert
20b73f214c (R_OK, W_OK, X_OK, FOK): Remove; system.h defines them.
(eaccess): Remove.  All users changed to use euidaccess instead.
2004-07-25 07:39:02 +00:00
Paul Eggert
b93109eedc pathchk.c: Include euidaccess.h.
(dir_ok): Use euidaccess, not access.
2004-07-25 07:38:39 +00:00
Paul Eggert
34d19d25d5 (gl_PREREQ): Invoke gl_FUNC_NONREENTRANT_EUIDACCESS,
not gl_FUNC_EUIDACCESS.
2004-07-25 07:38:19 +00:00
Paul Eggert
b46f08fd59 (gl_FUNC_NONREENTRANT_EUIDACCESS): New macro.
(gl_FUNC_EUIDACCESS): Use AC_CHECK_DECLS_ONCE, not AC_CHECK_DECLS.
(gl_PREREQ_EUIDACCESS): Check for eaccess and setregid decls.
Require AC_HEADER_STAT.
2004-07-25 07:37:55 +00:00
Paul Eggert
6fb55c3b5a [!defined LIBC]: Included group-member.h, stat-macros.h.
(S_IXUSR, S_IXGRP, S_IXOTH, S_IROTH, S_IWOTH, S_IXOTH):
Remove; now done by stat-macros.h.
(NGROUPS_MAX, group_member): Remove; now down by group-member.h.
No need to include <limits.h>.
(errno): Remove decl; we now assume C89 or better.
(access, getuid, getgid, geteuid, getegid, stat) [defined _LIBC]:
New macros.
(uid, gid, have_ids): Remove these static variables.
They weren't accurate for programs that also invoked setreuid etc.
(euidaccess) [defined EFF_ONLY_OK || defined ACC_SELF ||
HAVE_DECL_EACCSS]: Use builtin substitutes.
[defined _LIBC]: Ignore __libc_enable_secure; it's not a
correct optimization for programs run as root that later
invoke setreuid.
[no builtin substitutes && HAVE_DECL_SETREGID &&
PREFER_NONREENTRANT_EUIDACCESS]:
Use setreuid+setregid to get the correct answer.
[no builtin substitutes && ! (HAVE_DECL_SETREGID &&
PREFER_NONREENTRANT_EUIDACCESS)]:
Don't assume that the stat macros have their historical values,
as POSIX doesn't require this.
[defined TEST]: Include <stdlib.h>; don't include errno.h
twice; include <error.h> rather than "error.h".
2004-07-25 07:37:22 +00:00
Paul Eggert
ac04178e31 Move some changelog entries here from ../ChangeLog. 2004-07-24 08:03:55 +00:00
Paul Eggert
3949476b46 Fix non-null-terminated-string bugs in who and uptime. 2004-07-24 08:03:40 +00:00
Paul Eggert
a6411b5d54 (print_uptime) [defined BOOT_MSG]:
Don't assume ut_line is null-terminated.
2004-07-24 08:03:02 +00:00
Paul Eggert
d3d39f9a3e (print_line): New arguments USERLEN and LINELEN, since USER and LINE
might not be null terminated.  All callers changed.
2004-07-24 08:01:49 +00:00
Paul Eggert
60a96eb684 Regenerate. 2004-07-23 22:41:52 +00:00
Paul Eggert
35c8fbacab Fix bug with tail -f and pipes, plus a few other problems with tail. 2004-07-23 22:36:07 +00:00
Paul Eggert
85e5128190 Add fcntl-safer. 2004-07-23 22:35:47 +00:00
Paul Eggert
ba1e6b0184 (gl_PREREQ): Add gl_FCNTL_SAFER. 2004-07-23 22:35:07 +00:00
Paul Eggert
441462ac72 Include fcntl-safer.h.
(COPY_TO_EOF): Set to UINTMAX_MAX, not OFF_T_MAX (which was wrong).
(COPY_A_BUFFER): New macro.
(struct File_spec): New members mtime, mode, blocking.
Remove member n_consecutive_size_changes.
(DEFAULT_MAX_N_CONSECUTIVE_SIZE_CHANGES,
max_n_consecutive_size_changes_between_opens,
MAX_CONSECUTIVE_SIZE_CHANGES_OPTION): Remove.
(long_options, tail_forever, parse_options):
Remove (non-)support for --max-consecutive-size-changes.
(record_open_fd): New function.
(recheck, tail_file): Use it.  Don't assume that stdin is open.
(dump_remainder): Add support for new COPY_A_BUFFER special value.
Treat errno==EAGAIN like EOF, since it might be a nonblocking read.
(recheck): New arg BLOCKING, specifying whether to use blocking reads.
All uses changed.
(n_live_files): Remove, replacing with...
(any_live_files): New function.  All uses changed.
(tail_forever): Use nonblocking I/O unless we know that blocking I/O
is safe; this avoids some hangs when reading from a fifo.
Avoid invoking fstat or sleep when using blocking I/O.
Do not check for changes to size if the file is not a regular file,
as the size is undefined in that case.
Check for changes to mtime or mode, too; this works for non-regular
files.
(tail_forever, main): Redo fflush strategy to work even when input
is nonblocking.  Don't use unbuffered output; just flush when needed.
2004-07-23 22:33:51 +00:00
Paul Eggert
61b792fc38 (libfetish_a_SOURCES): Add fcntl-safer.h, open-safer.c. 2004-07-23 22:33:23 +00:00
Paul Eggert
40ac111df8 New file. 2004-07-23 22:31:32 +00:00
Paul Eggert
c8ab5c1358 (tail invocation): "size has remained the same"
-> "file has not changed", which is more accurate for fifos.
2004-07-23 22:11:49 +00:00
Paul Eggert
2ebcff3337 tail: Fix bug with -f and pipes; remove --max-consecutive-size-changes. 2004-07-23 22:11:15 +00:00
Paul Eggert
af73da6cdf Regenerate. 2004-07-22 20:58:52 +00:00
Paul Eggert
21e0573220 Add fix for "tail -f" when stdin is a pipe. 2004-07-22 20:55:12 +00:00
Paul Eggert
1391d2dc5c Reinstate f-1 test, since we now pass.
Add a new commented-out f-2 test, which we still fail.
(test_vector): All f-* tests are special cases, not just f-1.
2004-07-22 20:54:53 +00:00
Paul Eggert
3f565ee1fe (tail invocation): Do not ignore -f for
all pipes, just for when standard input is a pipe and no
file operand is specified.
2004-07-22 20:54:33 +00:00
Paul Eggert
255eb9cf44 (main): Ignore -f if no file operand is specified
and standard input is a pipe.
2004-07-22 20:54:04 +00:00
Paul Eggert
e5d9694985 Prefer c_strtod to setlocale when scanning floating point. 2004-07-13 00:07:26 +00:00
Paul Eggert
92a74b0a88 Include <errno.h>, <stdio.h>, <stdlib.h> even
if HAVE_GETLOADAVG is defined, so that the test program can work.
(errno): Remove declaration; not needed in C89 or later.
Include "c-strtod.h".
Do not include locale.h or define setlocale; no longer needed.
Include <limits.h>.
(INT_STRLEN_BOUND): New macro.
(getloadavg): Use it to compute buffer size.
Don't assume that buffer will be properly terminated by 'read'.
Use c_strtod instead of setlocale.
(main) [defined TEST]: Return int, not void.
2004-07-12 18:19:38 +00:00
Paul Eggert
6301ff874e Include c-strtod.h.
(print_uptime): Use c_strtod instead of setlocale and sscanf.
Use long int rather than int to count days (for 64-bit hosts),
and check for arithmetic overflow when converting double to time_t.
2004-07-12 17:55:06 +00:00
Paul Eggert
576958b1fd (gl_C_STRTOD): Add gl_USE_SYSTEM_EXTENSIONS. 2004-07-12 17:50:28 +00:00
Paul Eggert
955aa2dc77 (STRTOD_L): New macro.
(C_STRTOD) [defined LC_ALL_MASK]: Use it, so that the
code is reentrant on platforms that have strtod_l.
2004-07-12 17:50:11 +00:00
Paul Eggert
70c9129e14 Regenerate. 2004-07-12 06:43:20 +00:00