summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-07-01tests: avoid false failure on FreeBSD systemsPádraig Brady
* tests/misc/stty.sh: FreeBSD returns ENOTTY for the TIOCEXT ioctl, so just avoid this option for now.
2015-07-01factor: ensure atomic output through pipesPádraig Brady
The new tests/misc/factor-parallel.sh test was seen to fail on FreeBSD (derived) systems, which was due to split(1) --filter reading partial lines through pipes, as factor(1) was writing a little over PIPE_BUF each time. * src/factor.c (lbuf): A new structure to internally buffer lines. (lbuf_alloc): A new function to allocate enough at program start. (lbuf_putint): A new function to buffer a uintmax_t. (lbuf_flush): A new function to write directly to standard output. (lbuf_putc): A new function to buffer a character and if enough lines are buffered, then output complete lines <= PIPE_BUF, and continue to buffer the rest. (main): Call the internal buffer allocator, and register the final flush from the internal buffer at program exit.
2015-07-01tests: fix false failure on slower systemsPádraig Brady
* tests/dd/stats.sh: Wait 20s for dd to write 250MB through a fifo, rather than 10s for 500MB. The failure was seen often on a lightly loaded SPARC-Enterprise-T5220 running Solaris 10.
2015-06-29maint: stdbuf.c: avoid the OS X putenv functionJim Meyering
* bootstrap.conf (gnulib_modules): Add setenv, to make this module dependency explicit; setenv is also used by split. * src/stdbuf.c (set_LD_PRELOAD) [__APPLE__]: Use the OS X setenv function, rather than putenv, per that documentation: https://developer.apple.com/\ library/mac/documentation/Darwin/Reference/ManPages/man3/putenv.3.html
2015-06-29build: numfmt.c: avoid a shadowing warningJim Meyering
* src/numfmt.c (parse_field_arg): Rename parameter s/optarg/arg/, to avoid shadowing getopt's global variable. Otherwise, building on OS X, with --enable-gcc-warnings, I saw this: In file included from src/numfmt.c:19:0: src/numfmt.c: In function 'parse_field_arg': ./lib/config.h:3109:25: error: declaration of 'rpl_optarg' shadows\ a global declaration [-Werror=shadow]
2015-06-29numfmt: fix printf argument orderAssaf Gordon
* src/numfmt.c (double_to_human): Fix the argument order passed to snprintf, which happened to work on amd64 with its separate va_arg storage area for floats¹, but would fail tests for example on i686. ¹ https://blog.nelhage.com/2010/10/amd64-and-va_arg/
2015-06-28maint: clarify df's use of device IDs from /proc/self/mountinfoPádraig Brady
* src/df.c (filter_mount_list): Clarify why we still stat even though devices IDs may already be available. Note using /proc/self/mountinfo is still an advantage to get filtered items with accurate device patchs in chroots and with bind mounts. I.E. on older setups with static /etc/mtab, df will now bypass that to get the more accuracte and dynamic info.
2015-06-26chroot: quote argument in error diagnosticPádraig Brady
* src/chroot.c (main): Quote the passed argument, to avoid confusing error messages.
2015-06-25maint: clarify integer operations in recent commitPádraig Brady
* src/factor.c (print_uintmaxes): Comment that the value of n_out doesn't matter on error, and add an explicit cast to avoid any future warnings. Suggested by Jim Meyering RE commit v8.23-229-g4d2d6c5
2015-06-25tests: avoid false failure when running as rootPádraig Brady
* tests/misc/sync.sh: Ensure dir is unreadable before including the permission check.
2015-06-25tests: avoid false failures with LD_PRELOAD=libasan.so.2Pádraig Brady
The LD_PRELOAD checks by -fsanitize=address are overly strict: https://groups.google.com/forum/#!topic/address-sanitizer/jEvOJgkDqQk A workaround is to first export LD_PRELOAD=libasan.so.2 The tests below are adjusted so that workaround is not discarded. * tests/cp/no-ctx.sh: Append to $LD_PRELOAD. * tests/df/no-mtab-status.sh: Likewise. * tests/df/skip-duplicates.sh: Likewise. * tests/ls/getxattr-speedup.sh: Likewise. * tests/rm/r-root.sh: Likewise. * tests/cp/nfs-removal-race.sh: Likewise. Also check that LD_PRELOAD is effective to aid future maintainability and avoid false failure if libasan.so.2 is not preloaded.
2015-06-25build: update to latest gnulibPádraig Brady
Mainly for -fsanitize=address and -fsanitize=undefined fixes
2015-06-25build: allow build to complete with -fsanitize=addressPádraig Brady
* src/make-prime-list.c (main): When building with the above option, avoid this build stopping error: "LeakSanitizer: detected memory leaks"
2015-06-24maint: avoid undefined behavior in qsort callPádraig Brady
GCC 5.1.1 -fsanitize=undefined with glibc 2.21 is returning: "runtime error: null pointer passed as argument 1, which is declared to never be null" * src/ptx.c (sort_found_occurs): Avoid the call with no entries.
2015-06-24factor: avoid interspersed lines for parallel runsPádraig Brady
* src/factor.c (n_out): A new global variable to track how much data has been written to stdout. (print_factors_single): Use n_out to determine whether to flush the current (and previous) lines. * tests/misc/factor-parallel.sh: Add a new test. * tests/local.mk: Reference the new test. * NEWS: Mention the bug fix.
2015-06-24seq: handle exponents more consistentlyPádraig Brady
src/seq.c (scan_arg): Set precision and width _after_ exponentiation. For example, this will make '1.1e1 12' and '11 1.2e1' equivalent. One can still set the precision by specifying extra precision on the start value, or more naturally with a precision on a step value. * tests/misc/seq-precision.sh: Add new cases.
2015-06-24seq: use consistent output format with hex integersPádraig Brady
* src/seq.c (scan_arg): Set precision to 0 for hex constants (while avoiding hex floats). This will use then use the fast path for these arguments. Note we also set the precision of inf to 0 here, which ensures we use consistent precision on output where possible. * tests/misc/seq-precision.sh: Add corresponding test cases.
2015-06-24seq: support inf last item more generally/efficientlyPádraig Brady
* src/seq.c (main): Call seq_fast for infinite last value. This implicitly avoids format conversion on the 999999 -> 1000000 transition. * src/seq.c (seq_fast): Generalize the buffer handling, and adjust to handle the "inf" last value specifics. * tests/misc/seq-precision.sh: A new test. * tests/local.mk: Reference the new test.
2015-06-22doc: list numfmt in the main menu with "Numeric operations"Pádraig Brady
* doc/coreutils.texi (main menu): Add numfmt.
2015-06-22numfmt: don't hardcode floating point limitsPádraig Brady
* src/numfmt.c (MAX_UNSCALED_DIGITS): Set this to LDBL_DIG rather than hardcoding at 18 for better portability. * tests/misc/numfmt.pl: Restrict limit tests to supported platforms.
2015-06-22numfmt: handle leading zeros correctlyPádraig Brady
* src/numfmt.c (simple_strtod_int): Don't count leading zeros as significant digits. Also have leading zeros as optional for floating point numbers. * tests/misc/numfmt.pl: Add test cases. * NEWS: Mention the fix.
2015-06-22numfmt: avoid integer overflow when roundingPádraig Brady
Due to existing limits this is usually triggered with an increased precision. We also add further restrictions to the output of increased precision numbers. * src/numfmt.c (simple_round): Avoid intmax_t overflow. (simple_strtod_int): Count digits consistently for precision loss and overflow detection. (prepare_padded_number): Include the precision when excluding numbers to output, since the precision determines the ultimate values used in the rounding scheme in double_to_human(). * tests/misc/numfmt.pl: Add previously failing test cases. * NEWS: Mention the fix.
2015-06-21numfmt: support user specified output precisionPádraig Brady
* src/numfmt.c (usage): Update the --format description to indicate precision is allowed. (parse_format_string): Parse a precision specification like the standard printf does. (double_to_human): Honor the precision in --to mode. * tests/misc/numfmt.pl: New tests. * doc/coreutils.texi (numfmt invocation): Mention the new feature. * NEWS: Likewise.
2015-06-19numfmt: implement support for field rangesDylan Cali
* src/numfmt.c: Replace field handling code with logic that understands field range specifiers. Instead of processing a single field and printing line prefix/suffix around it, process each field in the line checking whether it has been included for conversion. If so convert and print, otherwise just print the unaltered field. (extract_fields): Removed. (skip_fields): Removed. (process_line): Gutted and heavily reworked. (process_suffixed_number): FIELD is now passed as an arg instead of using a global. (parse_field_arg): New function that parses field range specifiers. (next_field): New function that returns pointers to the next field in a line. (process_field): New function that wraps the field conversion logic (include_field): New function that checks whether a field should be converted (compare_field): New function used for field value comparisons in a gl_list. (free_field): New function used for freeing field values in a gl_list. Global variable FIELD removed. New global variable all_fields indicates whether all fields should be processed. New global variable all_fields_after stores the first field of a N- style range. New global variable all_fields_before stores the last field of a -M style range. New global variable field_list stores explicitly specified fields to process (N N,M or N-M style specifiers). (usage): Document newly supported field range specifiers. * bootstrap.conf: Include xlist and linked-list modules. numfmt now uses the gl_linked_list implementation to store the field ranges. * tests/misc/numfmt.pl: Add tests for 'cut style' field ranges. Adjust existing tests as partial output can occur before an error Remove test for the 'invalid' field -5.. this is now a valid range. * gnulib: update to avoid compiler warnings in linked-list. * NEWS: Mention the new feature.
2015-06-19doc: use correct units in df | numfmt examplePádraig Brady
* src/numfmt.c (usage): Don't scale output from df so that numfmt outputs the correct values.
2015-06-19numfmt: handle suffixes consistently with --{from,to}-unitPádraig Brady
* src/numfmt.c (unit_to_umax): Support SI (power of 10) suffixes with the --from-unit and --to-unit options. Treat suffixes like is done with --from=auto, which for example will change the meaning of --to-unit=G to that of --to-unit=Gi. The suffix support was previously undocumented and it's better to avoid the traditional coreutils suffix handling in numfmt by default. * doc/coreutils.texi: Document the new behavior. Also fix a typo mentioning {from,to}=units=. * tests/misc/numfmt.pl: Adjust accordingly. * NEWS: Mention the change in behavior.
2015-06-17maint: remove stale online manual items at releasePádraig Brady
* gnulib: Update to get the new gnu-web-doc-update with --mirror option. * README-release: Use the --mirror option in the instructions. Also clarify and update various release steps.
2015-06-09tail: display consistent diagnostics upon file replacementPádraig Brady
* src/tail.c (recheck): Display diagnostices for replaced files even with reused inodes which is a common case. * tests/tail-2/F-vs-missing.sh: Use correct diagnostic in comment. * tests/tail-2/F-vs-rename.sh: Likewise.
2015-06-09tail: display file headers correctly with inotifyPádraig Brady
* src/tail.c (tail_forever_inotify): Use the fspec pointer to distinguish previously output files, rather than a descriptor from the inotify event. That event descriptor was that of the parent directory when files were created or renamed etc. (check_fspec): Adjust for the new comparison. Also show the header when the file is truncated, since we show data in this case also. * tests/tail-2/F-headers.sh: A new test case. * tests/local.mk: Reference the new test. * NEWS: Mention the bug fix.
2015-06-07maint: sync .gitignore items with gnulib entriesPádraig Brady
* .gitignore: Add entries for potentially generated headers. Also remove a couple of items already present in lib/.gitignore. * cfg.mk (sc_gitignore_missing): A new syntax check rule to identify missing .gitignore entries. (sc_gitignore_redundant): A new syntax check rule to identify redundant .gitignore entries. Reported by Tomas Nordin.
2015-06-06tests: fix false failure in recent test adjustmentPádraig Brady
* configure.ac: Comment on why we link rather than run the test, and remove the moot __ELF__ check since we never ran it anyway, and the new CFLAGS and LDFLAGS are a more direct test of support. * tests/misc/wc-parallel.sh: Fix a syntax error in the previous change. * tests/misc/md5sum-parallel.sh: Use better error checking, consistent with that used in wc-parallel.sh.
2015-06-06build: port to AIXPaul Eggert
Problems reported by Michael Felt, and and part of this fix taken from code suggested by Pádraig Brady in: http://bugs.gnu.org/20733#112 * configure.ac (stdbuf_supported): Check for warnings, and for -fPIC and -shared, for AIX. * src/stat.c (STRUCT_STATVFS): Define to struct statvfs64 if STATFS is statvfs64. * src/sync.c (sync_arg) [_AIX]: Open in write mode, since AIX fsync doesn't work on read-only file descriptors. * tests/misc/wc-parallel.sh: Skip test if xargs -P does not work.
2015-06-06build: update gnulib submodule to latestPaul Eggert
2015-06-05build: update gnulib submodule to latestPaul Eggert
2015-06-04build: port single_binary_prog to POSIX shellPaul Eggert
Problem reported privately by Michael Felt. * Makefile.am (install-exec-hook): * src/local.mk (src/coreutils_symlinks, src/coreutils_shebangs) (clean-local): Port to POSIX shell, which doesn't allow 'for i in ; do ...'.
2015-06-03build: add a dependency on the gnulib tempname modulePádraig Brady
* bootstrap.conf: Add "tempname" which is needed by mktemp(1). The explicit dependency supports running gnulib-tool with the --conditional-dependencies option, used to minimize built modules. Note on a Fedora 22 system, that results in avoiding redundant builds of: areadlinkat.o asnprintf.o fd-hook.o fseterr.o printf-args.o printf-parse.o sockets.o vasnprintf.o. However --conditional-dependencies is not enabled, since it currently precludes the inclusion of gnulib tests.
2015-06-02build: update to latest gnulibPádraig Brady
Mainly with build fixes for Mac OS X.
2015-06-01tests: fix race in tail test without inotifyPádraig Brady
* tests/tail-2/wait.sh: Without inotify, skip a portion of the test that checks that -F never outputs from a tailed descriptor after the followed name is recreated, because tail_forever() doesn't guarantee that. Noticed at http://hydra.nixos.org/build/22766288
2015-06-01tests: fix false failure on loaded systemsPádraig Brady
* tests/misc/uniq-perf.sh: Use our standard 10s timeout, which is sufficient to trigger the failure and also avoids a false failure on slow/loaded systems. Noticed at http://hydra.nixos.org/build/22766288
2015-05-30maint: avoid new coverity warningsPádraig Brady
* src/sync.c (sync_arg): Initialise variable to avoid unitialized access if assert is disabled. * src/head.c (elide_tail_bytes_file): Support this function with ---presume-input-pipe and larger files, which regressed with commit v8.23-47-g2662702. (elide_tail_lines_file): Likewise. * src/dd.c (dd_copy): Explicitly don't try to ftruncate() upon failure to lseek() (the existing check against st_size was already protecting that). * src/factor.c (factor_using_squfof): Assert (only when linting due to performance) to avoid the implication of divide by zero. * src/od.c (read_block): Remove dead code. * src/tac.c (tac_seekable): Likewise. * src/ls.c (gobble_file): Likewise.
2015-05-28build: remove workarounds for unsupported gettext versionsPádraig Brady
Now that we depend on gettext >= 0.19.2 remove the workaround for issues in autopoint 0.18.3. Note the scheme currently used in newer gettext (autopoint) to avoid these issues requires autoconf >= 2.69, therefore we update this requirement also. Note the gettext version dependence from gnulib comes from gnulib using gettext macros, and coreutils indirectly depends on the gettext module due to: http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=41dca647 bootstrap will then update m4/po.m4 and thus require a supportng gettext version. * bootstrap: Remove moot warning (resyncing with gnulib). * configure.ac (AC_PREREQ): Change to 2.69 (now 3 years old).
2015-05-28tests: ln/hard-to-sym FAIL rather than ERROR when ln failsPádraig Brady
* tests/ln/hard-to-sym.sh: Only call framework_failure_ when ln returns success.
2015-05-28copy: prefer our hardlink to symlink emulation on OS X 10.10Pádraig Brady
* src/copy.c (CAN_HARDLINK_SYMLINKS): Don't enable use of linkat() on Darwin 14, as the gnulib fallback emulation there doesn't preserve ownership and timestamps etc. This fixes a test failure in tests/cp/link-symlink.sh * tests/cp/link-deref.sh: Adjust accordingly.
2015-05-26maint: remove sys/types.h include order checkPádraig Brady
* src/system.h: This was inadvertently ineffective due to a typo in commit v8.9-10-ge1aaf89 (Jan 2011), but has not caused any issues, so remove.
2015-05-23mkdir: fix -pZ with existing parent directoriesPádraig Brady
When the parent directory exists and has a different default context to the final directory, the context was incorrectly left as that of the parent directory. * src/mkdir.c (process_dir): Because defaultcon() is called for existing ancestors (as it must be to avoid races), then we must unconditionally call restorecon() on the last component due to the already documented caveat with make_dir_parents(). Alternatively you could temp disable o->set_security_context around make_dir_parents(), but that would be subject to races. * tests (tests/mkdir/restorecon.sh): Add a TODO for improvement. Reference mknod and mkfifo with print_ver_. * NEWS: Mention the bug fix. Fixes http://bugs.gnu.org/20616
2015-05-22tests: df-output: accept multiple spaces in headerAssaf Gordon
* tests/df/df-output.sh: Allow for multiple spaces in the header line of 'df', resulting from alignment with disk sizes >= 10TB.
2015-05-19tests: fix non POSIX constructs causing failures with dashPádraig Brady
* tests/cp/no-ctx.sh: Scope of `var=val func` is inconsistent across shells, so avoid that construct with functions. * tests/df/no-mtab-status.sh: Likewise. * tests/tail-2/inotify-race.sh: `read` needs an argument. * tests/tail-2/inotify-race2.sh: Likewise.
2015-05-17build: fix 'dist' and 'syntax-check' targets in VPATH buildPádraig Brady
* cfg.mk: Various syntax-check adjustments so that it's not assumed the $builddir is the base distribution directory. * Makefile.am: Likewise for the 'dist' target.
2015-05-17build: avoid issues with case insensitive file systemsPádraig Brady
* cfg.mk (sc_case_insensitive_file_names): A new syntax-check rule. * tests/tail-2/descriptor-vs-rename.sh: Rename from tests/tail-2/f-vs-rename.sh * tests/local.mk: Reference the renamed test. Reported by Jim Meyering.
2015-05-14tests: fix check for local file system in inotify-rotate-resources.shBernhard Voelker
* tests/tail-2/inotify-rotate-resources.sh: s/(is_local_dir)/\1_/