summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2009-03-18sort: handle fd exhaustion better when mergingPaul Eggert
This is an alternative to my 9 March patch labeled "Silently lower nmerge; don't (sometimes incorrectly) range-check" <http://lists.gnu.org/archive/html/bug-coreutils/2009-03/msg00070.html>. It differs by not using 'dup' to probe for extra file descriptors; instead, it simply calls 'open' (and 'pipe') to open files and pipes, until one of these calls fails due to file descriptor exhaustion; it then backs off by 1, does a merge with the files that it has opened, and then retries with the (now-smaller) number of files. This patch requires quite a few more changes to the source code than the earlier patch, but it is in some sense "better" because it doesn't need to call "dup" ahead of time in order to decide whether "open" or "pipe" will fail. Also, it's more robust in the case where "open" or "pipe" fails with errno==EMFILE because some system-wide limit is exhausted. * src/sort.c (create_temp_file): New arg SURVIVE_FD_EXHAUSTION. (stream_open): New function, containing guts of xfopen. (xfopen): Use it. (pipe_fork): Set errno on failure. (maybe_create_temp): New function, containing guts of create_temp. (create_temp): Use it. (open_temp): Distinguish failures due to file descriptor exhaustion from other failures, and on fd exhaustion return a notice to caller rather than dying. Don't test execlp's return value; when it returns, it *always* returns -1. (open_input_files): New function. (mergefps): New arg FPS. It's now the caller's responsibility to open the input and output files. All callers changed. (mergefiles): New function. (avoid_trashing_input, merge): Handle the case where a single merge can't merge as much as we wanted due to file descriptor exhaustion, by merging as much as we can and then retrying. * tests/Makefile.am (TESTS): Add misc/sort-continue. * tests/misc/sort-continue: New file. * THANKS: Add Glen Lenker and Matt Pham who coauthored this patch.
2009-03-18maint: normalize leading-TAB indentation in MakefilesJim Meyering
* maint.mk (sc_makefile_TAB_only_indentation): New rule. Replace each TAB+8-space sequence with two TABs. * man/Makefile.am: Likewise. * build-aux/check.mk: Likewise. I used this command (run it more than once, if needed): t=$'\t'; git grep -l -E "$t {8}"|grep -E 'Makefile|\.mk$' \ | xargs perl -pi -e 's/\t {8}/\t\t/'
2009-03-15maint: remove long-unused MakefileJim Meyering
* tests/sort-time/Makefile: Remove long-unused file.
2009-03-15maint: remove unused include and definitionsJim Meyering
* gl/lib/randread.c (__attribute__): Remove unused definition. (ATTRIBUTE_UNUSED): Likewise. * gl/lib/selinux-at.c (_): Remove unused definition. Don't include <gettext.h>. No longer needed.
2009-03-15* gnulib: Update submodule to latest.Jim Meyering
2009-03-14system.h: correct compilation error: MAX not definedJim Meyering
* src/system.h (io_blksize): Move definition down, so it follows that of MAX -- to avoid compilation failure on OpenSolaris. Reported by David Bartley. Details in http://lists.gnu.org/archive/html/bug-coreutils/2009-03/msg00190.html
2009-03-14* gnulib: Update to pull in select/interix work-around.Jim Meyering
2009-03-13doc: update "version sort" documentationKamil Dudka
* doc/coreutils.texi: Reflect current filevercmp behavior.
2009-03-12tests: groups-version: don't require that id be builtJim Meyering
* tests/misc/groups-version: groups is now independent of id.
2009-03-12tests: skip the groups-dash test when "groups" is not builtJim Meyering
* tests/misc/groups-dash: Skip if groups is not being installed. Suggested by Mike Frysinger. Also fail if groups exits with nonzero status.
2009-03-12maint: mention Autoconf version required to build AutomakePádraig Brady
* README-prereq: coreutils currently requires an unreleased version of Automake, so mention the minimum version of Autoconf required to build that. Suggestion from James Youngman.
2009-03-12* gnulib: Update submodule to latest.Jim Meyering
2009-03-11cp: make -a option preserve xattrs, but with reduced diagnosticsOndřej Vašík
* copy.c (copy_attr_by_fd): Reduce xattr diagnostics for 'cp -a'. (copy_attr_by_name): Likewise. * cp.c (main): Preserve xattrs with -a option, when possible. * doc/coreutils.texi: Document that xattrs are preserved with cp -a, with no added diagnostics. * NEWS: Mention the change. * tests/misc/xattr: Add tests for 'cp --preserve=all' and 'cp -a'.
2009-03-11maint: Document how to best to enable gcc warnings for developersPádraig Brady
* README-hacking: Mention --enable-gcc-warnings configure option * configure.ac: Don't scare developers away from using gcc warnings
2009-03-11maint: remove an obsolete FIXME commentJim Meyering
* src/Makefile.am (../AUTHORS): Remove obsolete FIXME comment. There are no longer any installed *.sh programs.
2009-03-11cat: Fix immediate output of processed dataPádraig Brady
Introduced by commit 790892db, 2006-06-08 "Ensure that cat works ...". * NEWS: Mention the bugfix. * src/cat.c (cat): Fix the typo which stopped the writing of processed data before a blocking read() is done. * tests/misc/cat-buf: Add to ensure processed data is not buffered. * tests/Makefile.am: Reference the new test.
2009-03-11cat,cp,mv,install,split: Set the minimum IO block size used to 32KiBPádraig Brady
This is following on from this change: [02c3dc9d 2008-03-06 cat: use larger buffer sizes ...] which increased the IO block size used by cat by 8 times, but also capped it at 32KiB. * NEWS: Mention the change in behavior. * src/system.h: Add a new io_blksize() function that returns the max of ST_BLKSIZE or 32KiB, as this was seen as a good value for a minimum block size to use to get good performance while minimizing system call overhead. * src/cat.c: Use it. * src/copy.c: ditto * src/split.c: ditto
2009-03-08tests: add a test for newly-fixed bug in comm --check-orderJim Meyering
* tests/misc/comm (ooo-prefix): Add a test for today's fix. * NEWS (Bug fixes): Mention it.
2009-03-08comm: fix a bug in its new --check-order optionBruno Haible
* src/comm.c: Include memcmp2.h. (check_order): Use memcmp2 instead of memcmp. * bootstrap.conf (gnulib_modules): Add memcmp2.
2009-03-08tests: ls -v: exercise the bug fixed by gnulib's new filevercmpJim Meyering
* tests/misc/ls-misc (version-sort): New test. (mk_file): New function. Reported by Josh Triplett in <http://bugs.debian.org/517558>. Details in http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/16902 * NEWS (Bug fixes): Mention it.
2009-03-08gnulib: sync submodule to latestJim Meyering
2009-03-07pr: fix a bug whereby --indent=N (-o) did not indent header linesJim Meyering
* src/pr.c (print_header): Honor chars_per_margin also for the header. Inspired by a patch from C de-Avillez. This change also adjusts two other %*s directives to be %*.*s instead, (for the padding on either side of "file_text") to correct a bug that could make pr print one space of padding instead of none. * NEWS (Bug fixes): Mention it. * tests/pr/o3Jml24f-lm-lo: Adjust for new expected output. * tests/pr/o3a3Sl24f-tn: Likewise. * tests/pr/o3a3Snl24f-tn: Likewise. * tests/pr/o3a3l24f-tn: Likewise. * tests/pr/o3b3Sl24f-tn: Likewise. * tests/pr/o3b3Snl24f-tn: Likewise. * tests/pr/o3b3l24f-tn: Likewise. * tests/pr/o3mSl24f-bl-tn: Likewise. * tests/pr/o3mSnl24fbltn: Likewise. * tests/pr/o3ml24f-bl-tn: Likewise.
2009-03-07bootstrap: add to XGETTEXT_OPTIONSJim Meyering
* bootstrap.conf (XGETTEXT_OPTIONS): Add c-format --flag options for verror and verror_at_line; alphabetize.
2009-03-07maint: use a git submodule for gnulibJim Meyering
* .gitmodules: New file, to track gnulib. * gnulib: New file, created by running this: git submodule add git://git.sv.gnu.org/gnulib.git gnulib
2009-03-07build: allow ./bootstrap --srcdir=... to work with a git submoduleJim Meyering
* bootstrap (git_modules_config): Use GIT_CONFIG, not GIT_CONFIG_LOCAL. The latter was removed in v1.5.6.1-109-gdc87183.
2009-03-07build: avoid "multiply defined..." warning from automakeJim Meyering
* Makefile.am (AM_CFLAGS): Add $(WARN_CFLAGS) via +=, not =, to avoid "multiply defined..." warning from automake.
2009-03-06cat: use larger buffer sizes to reduce read/write-syscall overheadJim Meyering
* src/cat.c (max): Remove definition. Use MAX from system.h instead. (compute_buffer_size): New function to compute the input and output buffer sizes, which are now set at 8 times st_blksize with a maximum of 32KiB. Previously the typical block sizes used were 1KiB for pipes and 4KiB for files, and now will be 8KiB and 32KiB respectively. (main): Use it. This change can double throughput on modern systems. For timings, see http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/16040 Suggestion from Tzvi Rotshtein.
2009-03-06maint: avoid new unused-macro warnings from gccJim Meyering
* src/ls.c (ASSERT_MATCHING_DEV_INO): Comment-out unused definition, to match commented-out use. * src/install.c (INITIAL_HASH_MODULE, INITIAL_ENTRY_TAB_SIZE): (READ_SIZE): Remove definitions of unused macros. * src/mv.c (INITIAL_HASH_MODULE, INITIAL_ENTRY_TAB_SIZE): Likewise. * src/dd.c (max): Likewise. * src/expand.c (OUTPUT_BLOCK): Likewise. * src/csplit.c (ALLOC_SIZE): Likewise. * src/pr.c (NULLCOL): Likewise. * src/ptx.c (Sword): Likewise. * src/unexpand.c (OUTPUT_BLOCK): Likewise. * src/factor.c (NDEBUG): Likewise.
2009-03-06tests: fix just-introduced typo in rm/ext3-perfJim Meyering
* tests/rm/ext3-perf: Fix typo in commit 2b1e6636bea, 2009-02-27 "tests: rm/ext3-perf: relax this test".
2009-03-06maint: remove spurious case-ignoring option from a testJim Meyering
* maint.mk (sc_trailing_blank): Remove useless/harmless ignore_case=1.
2009-03-04policy: use git to help avoid trailing white spaceRalf Wildenhues
* HACKING (Avoid trailing white space): Describe how git can help.
2009-03-03Update Andreas Schwab's email addressAndreas Schwab
* THANKS: Update Andreas Schwab's email address.
2009-03-03maint: improve release-related process and documentationJim Meyering
* README-release: Fix typo. it's "maintainer-clean". Refer to HACKING for full list of dependencies. Use cvs add's -ko option to inhibit $Id$-style keyword expansion. * maint.mk (web-manual): Factor out definition of $(manual_title). (vc-dist): Set XZ_OPT=-9ev for the final "make dist". * cfg.mk (manual_title): Define it here. Suggestions from Eric Blake.
2009-03-02dist: document our release procedureJim Meyering
* README-release: New file.
2009-03-02dist: automate the post-release web-manual update processJim Meyering
* maint.mk (web-manual): New rule, from m4's maint.mk. * bootstrap.conf (gnulib_modules): Add gendocs.
2009-03-02tests: rm/ext3-perf: relax this testJim Meyering
* tests/rm/ext3-perf: If set-up takes too long, use the set-up time as the removal time limit. Otherwise, a parallel "make check" would usually fail when run with RUN_VERY_EXPENSIVE_TESTS=yes.
2009-03-02tests: don't skip setgid-dir related tests on SELinux-enabled systemsJim Meyering
* tests/setgid-check: The change in ls (use ".", not "+") caused this check always to report the working directory as set-gid. Now, use stat, not ls.
2009-03-02tests: reflect the s/+/./ SELinux indicator changeJim Meyering
* tests/mkdir/perm: Now that this test is no longer always skipped, make it work independently of ls: use stat, not ls, to get perm string. * test-lib.sh (rwx_to_mode_): Use stat, not ls to get perm string This test was run only when RUN_VERY_EXPENSIVE_TESTS=yes was set.
2009-03-02tests: when skipping a test, say why on screen, not just in the logJim Meyering
* tests/test-lib.sh: Redirect also to descriptor 9. Better one-line why-skip diagnostics. * tests/check.mk (TESTS_ENVIRONMENT): Redirect 9 to stderr. * tests/misc/pwd-unreadable-parent: Remove redundant "skipping..." diag.
2009-03-02maint: enable many gcc warningsJim Meyering
* bootstrap.conf (gnulib_modules): Add manywarnings. * configure.ac: Use gl_MANYWARN_ALL_GCC, and exclude options I don't want or that provoke too many warnings. (WARN_CFLAGS, WERROR_CFLAGS): Define. (lint, GNULIB_PORTCHECK): Define. (_FORTIFY_SOURCE): Define to 2.
2009-03-02maint: avoid gcc warning about missing attributesJim Meyering
* src/prog-fprintf.h (prog_fprintf): Declare with printf attribute. * src/system.h (usage): Declare with the "noreturn" attribute.
2009-03-02maint: avoid warnings about potentially-counterproductive "inline"Jim Meyering
* src/dd.c (quit): Remove "inline" attribute. * src/test.c (advance, unary_advance): Likewise.
2009-03-02maint: cp: avoid gcc warning about unused macro definitionsJim Meyering
* src/cp.c (INITIAL_HASH_MODULE, INITIAL_ENTRY_TAB_SIZE): Remove.
2009-03-02dist: do not emit MD5 or SHA1 checksums into announcement templateJim Meyering
* maint.mk (announcement): Use announce-gen's new --no-print-checksums.
2009-02-28maint: detect unnecessary inclusion of signal.hJim Meyering
* maint.mk (sc_prohibit_signal_without_use): New rule.
2009-02-28maint: remove an unnecessary inclusion of <signal.h>Jim Meyering
* src/operand2sig.c: Don't include <signal.h>.
2009-02-28tests: sort: Check skipping blanks in multibyte localesPádraig Brady
* tests/misc/sort: On Fedora 8 at least, sort -k1b,1 mishandles blanks in multibyte locales, so add test.
2009-02-27* HACKING: avoid trailing white spaceJim Meyering
2009-02-27cp: diagnose invalid "cp -rl dir dir" right away, once againJim Meyering
Running "mkdir dir; cp -rl dir dir" would create dir/dir/dir/... rather than diagnosing the "copy-into-self" failure. The easy fix would have been to revert this part of the change [3ece0355 2008-11-09 cp: use far less memory in some cases] that introduced the bug: - remember_copied (dst_name, dst_sb.st_ino, dst_sb.st_dev); + if (!x->hard_link) + remember_copied (dst_name, dst_sb.st_ino, dst_sb.st_dev); However, that would have induced the failure of the new cp/link-heap test, due to the added memory pressure of recording 10k dev/ino pairs. And besides, I liked that improvement and wanted to keep it. Now that it's obvious recording the just-created-directory dev/ino needn't depend on the setting of hard_link, I realized it is necessary to record the pair only for the first directory created for each source command-line argument. I made that change, then noticed the new test, cp -rl a d d, would pass when run once, yet output the into-self diagnostic twice. Also note the side effect: it creates d/a and d/d. However, running that same command a second time, now with the modified directory, would fail. That turned out to be due to the fact that although the first into-self failure was detected in copy_dir, that function would continue copying other entries regardless -- and that would make it fail (eventually) with the unwanted recursion. * src/copy.c (copy_internal): This function needed an indicator of whether, for a give command line argument, it had already created its first directory. If so, no more need to record dev/ino pairs. If this is the first, then do record its pair. Hence, the new parameter. (copy_dir, copy): Update callers. (copy_dir): Upon any into-self failure, break out of the loop. * tests/cp/into-self: Test for the above. Reported by Mikael Magnusson.
2009-02-26tests: stty-row-col would hang when run in the backgroundJim Meyering
* tests/misc/stty-row-col: Don't hang when run in background at least on Solaris 10 and OpenBSD.