summaryrefslogtreecommitdiff
path: root/src/ls.c
Commit message (Collapse)AuthorAgeFilesLines
* ls: --color: honor separate sequences for extension casesPádraig Brady2023-03-131-5/+61
| | | | | | | | | | | | | | | | | | | Following on from commit v8.29-45-g24053fbd8 which unconditionally used case insensitive extension matching, support selective case sensitive matching when there are separate extension cases defined with different display sequences. * src/dircolors.hin: Document how file name suffixes are matched. Note this is displayed with `dircolors --print-database` which the texi info recommends to use for details. * src/ls.c (parse_ls_color): Postprocess the list to mark entries for case sensitive matching, and also adjust so that unmatchable entries are more quickly ignored. (get_color_indicator): Use exact matching rather than case insensitive matching if so marked. * tests/ls/color-ext.sh: Add test cases. * NEWS: Mention the change in behavior. Addresses https://bugs.gnu.org/33123
* maint: update all copyright year number rangesPádraig Brady2023-01-011-1/+1
| | | | | | | | | | Update to latest gnulib with new copyright year. Run "make update-copyright" and then... * tests/init.sh: Sync with gnulib to pick up copyright year. * bootstrap: Manually update copyright year, until we fully sync with gnulib at a later stage. * tests/sample-test: Adjust to use the single most recent year.
* maint: prefer static_assert to verifyPaul Eggert2022-09-151-3/+3
| | | | | | | | | | * bootstrap.conf: Add assert-h. * gl/lib/randperm.c: Do not include verify.h. * gl/lib/randperm.c, src/basenc.c, src/dd.c, src/digest.c: * src/dircolors.c, src/expr.c, src/factor.c, src/ls.c, src/numfmt.c: * src/od.c, src/seq.c, src/shred.c, src/sort.c, src/stat.c: Prefer C23’s static_assert to nonstandard verify. * gl/modules/randperm (Depends-on): Add assert-h.
* ls: support explicit --time=modification selectionPádraig Brady2022-08-131-1/+4
| | | | | | | | * src/ls.c [time_args]: Add support for explicit 'mtime' or 'modification' arguments to --time. * tests/misc/ls-time.sh: Add explicit --time=mtime usage. * doc/coreutils.texi (ls invocation): Describe --time=mtime. * NEWS: Mention the new feature.
* doc: ls: clarify description of timestampsPádraig Brady2022-08-121-2/+2
| | | | | | | | | * src/ls.c (usage): Don't mention "modification" in the description of ctime (-c), as it's confusing with mtime. Mention "metadata" when discussing "change" time to disambiguate from data change time. * doc/coreutils.texi (ls invocation): State that --time=creation falls back to using mtime where not available.
* maint: simplify comparisonsPaul Eggert2022-05-171-1/+1
| | | | | | | | | | * src/comm.c (compare_files): * src/join.c (keycmp): * src/ls.c (off_cmp): * src/ptx.c (compare_words, compare_occurs): * src/set-fields.c (compare_ranges): Prefer ((a > b) - (a < b)) to variants like (a < b ? -1 : a > b) as it’s typically faster these days.
* ls: avoid expensive capability lookup by defaultPádraig Brady2022-04-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Lookup of file-based capabilities adds 30% overhead to the common case of ls --color usage. Since the use of file capabilities is very rare, it doesn't make sense to pay this cost in the common case. It's better to use getcap to inspect capabilities, and the following run shows only 8 files using capabilities on my fedora 35 distro (14 years after the feature was introduced to the linux kernel). $ getcap -r / /usr/bin/arping = cap_net_raw+p /usr/bin/clockdiff = cap_net_raw+p /usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep /usr/bin/gnome-shell = cap_sys_nice+ep /usr/bin/newgidmap = cap_setgid+ep /usr/bin/newuidmap = cap_setuid+ep /usr/sbin/mtr-packet = cap_net_raw+ep /usr/sbin/suexec = cap_setgid,cap_setuid+ep * src/dircolors.hin: Set "CAPABILITY" to "00", to indicate unused. * src/ls.c: Set the default C_CAP color to not colored. * NEWS: Mention the change in behavior.
* ls: avoid triggering automountsRohan Sable2022-03-071-1/+1
| | | | | | | | | | | | | statx() has different defaults wrt automounting compared to stat() or lstat(), so explicitly set the AT_NO_AUTOMOUNT flag to suppress that behavior, and avoid unintended operations or potential errors. * src/ls.c (do_statx): Pass AT_NO_AUTOMOUNT to avoid this behavior. * NEWS: Mention the change in behavior. Fixes https://bugs.gnu.org/54286 Signed-off-by: Rohan Sable <rsable@redhat.com>
* sort: fix several version-sort problemsPaul Eggert2022-02-121-7/+9
| | | | | | | | | | | | | | | | | | | | | This also affects ls -v in some corner cases. Problems reported by Michael Debertol <https://bugs.gnu.org/49239>. While looking into this, I spotted some more areas where the code and documentation did not agree, or where the documentation was unclear. In some cases I changed the code; in others the documentation. I hope things are nailed down better now. * doc/sort-version.texi: Distinguish more carefully between characters and bytes. Say that non-identical strings can compare equal, since they now can. Improve readability in various ways. Make it clearer that a suffix can be the entire string. * src/ls.c (cmp_version): Fall back on strcmp if filevercmp reports equality, since filevercmp is no longer a total order. * src/sort.c (keycompare): Use filenvercmp, to treat NULs correctly. * tests/misc/ls-misc.pl (v_files): Adjust test to match new behavior. * tests/misc/sort-version.sh: Add tests for stability, and for sorting with NUL bytes.
* doc: ls: reference dircolors(1) from --helpPádraig Brady2022-02-121-1/+1
| | | | | | * src/ls.c (usage): s/dircolors/dircolors(1)/. * man/ls.x [SEE ALSO]: Reference dircolors(1). Addresses https://bugs.gnu.org/53946
* doc: ls: improve --help formattingPádraig Brady2022-02-121-23/+68
| | | | | | | | * src/ls.c (usage): Use blank lines to group multi-line option descriptions, rather than indenting. This results in more consistent alignment of descriptions, and also avoids erroneous new lines in generated in man pages. Addresses https://bugs.gnu.org/53946
* maint: update all copyright year number rangesPádraig Brady2022-01-021-1/+1
| | | | | | | | | Run "make update-copyright" and then... * gnulib: Update to latest with copyright year adjusted. * tests/init.sh: Sync with gnulib to pick up copyright year. * bootstrap: Likewise. * tests/sample-test: Adjust to use the single most recent year.
* ls: improve doc for =WHENPaul Eggert2021-12-241-9/+7
| | | | * src/ls.c (usage): Improve clarity of =WHEN args (Bug#52782).
* doc: colorize -> colorPaul Eggert2021-12-241-2/+2
| | | | | | | Living so close to Hollywood I know that "colorize" means adding color to something that was already monochrome, whereas "color" means to give color to something. Coreutils apps color text instead of colorizing it.
* maint: syntax-check requires "char const *", not "const char *"Jim Meyering2021-12-201-2/+2
| | | | | | | | * gl/lib/mbsalign.c (mbs_align_pad): Adjust. * src/chroot.c (is_root): Adjust. * src/digest.c (main): Adjust. * src/relpath.c (buffer_or_output) Adjust. * src/ls.c (print_name_with_quoting, get_color_indicator): Adjust.
* maint: use GNU style for spacingPaul Eggert2021-12-181-3/+3
|
* maint: prefer MAYBE_UNUSEDPaul Eggert2021-11-181-1/+1
| | | | | | | Prefer MAYBE_UNUSED to _GL_UNUSED, since the C2x syntax will be [[maybe_unused]] at the start of the declaration, and we want to look forward to that. All uses of _GL_UNUSED either changed to MAYBE_UNUSED, or (when not needed) removed.
* maint: prefer attribute.h in .c filesPaul Eggert2021-10-311-8/+12
| | | | | | | | | | | | | | | | | | | | | | | | This will help us make the transition to C2x, where some attributes must come at the start of function decls. Leave the attributes alone in .h files for now, as the Gnulib tradition is to not expose attribute.h to users. * bootstrap.conf (gnulib_modules): Add ‘attribute’. * gl/lib/randperm.c, src/make-prime-list.c, src/system.h: Include attribute.h. * gl/lib/strnumcmp.c (strnumcmp): Remove _GL_ATTRIBUTE_PURE here, as this belongs in the .h file. * gl/lib/strnumcmp.h (strnumcmp): Add _GL_ATTRIBUTE_PURE here. * src/sort.c (human_numcompare, numcompare): Now ATTRIBUTE_PURE; discovered due to strnumcmp.h change. * gl/lib/randperm.c, src/copy.c, src/dd.c, src/df.c, src/digest.c: * src/env.c, src/expr.c, src/factor.c, src/ls.c: * src/make-prime-list.c, src/numfmt.c, src/od.c, src/pathchk.c: * src/pinky.c, src/pr.c, src/ptx.c, src/realpath.c, src/relpath.c: * src/seq.c, src/sort.c, src/stat.c, src/stty.c, src/system.h: * src/tr.c, src/uniq.c, src/wc.c: In .c files, crefer ATTRIBUTE_CONST to _GL_ATTRIBUTE_CONST, and similarly for ATTRIBUTE_FORMAT and ATTRIBUTE_PURE. * src/system.h (FALLTHROUGH): Remove; attribute.h defines it.
* ls: port to OpenBSDPaul Eggert2021-10-021-2/+2
| | | | | Problem reported by Brian Callahan (Bug#50972). * src/ls.c (decode_switches): Don’t assume __GNUC_PREREQ.
* maint: avoid syntax-check failures in recent ls changesPádraig Brady2021-07-281-8/+9
| | | | * src/ls.c: Fix ifdef indenting and long line.
* doc: modernize usage of “disk” and “core”Paul Eggert2021-07-281-1/+1
| | | | | | | | | In documentation and comments, don’t assume that secondary storage devices are disk devices. Similarly, don’t assume that main memory uses magnetic cores, which became obsolete in the 1970s. * src/du.c (usage): * src/ls.c (usage): * src/shred.c (usage): Reword to avoid “disk” in usage messages.
* doc: improve ls documentationPaul Eggert2021-07-281-8/+7
| | | | | | | | * doc/coreutils.texi (ls invocation): Document implementation more closely. Be more consistent about style. Omit some needless words. * src/ls.c (usage): Don’t overdocument -f, as the details were wrong. Omit -1 advice as it’s a bit obsolete now that we have --zero and is a bit much for --usage output anyway.
* ls: rename --null to --zero (Bug#49716)Paul Eggert2021-07-271-28/+29
| | | | | | | | | | | | | | | | | | * NEWS, doc/coreutils.texi (General output formatting): * src/ls.c (usage): Document this. * src/ls.c (ZERO_OPTION): Rename from NULL_OPTION. All uses changed. (long_options): Rename --null to --zero. (dired_dump_obstack, main, print_dir): Use '\n' instead of eolbyte where eolbyte must equal '\n'. (decode_switches): Decode --zero instead of --null. --zero also implies -1, -N, --color=none, --show-control-chars. Use easier-to-decipher code to set ‘format’ and ‘dired’. Reject attempts to combine --dired and --zero. * tests/local.mk: Adjust to test script renaming. * tests/ls/zero-option.sh: Rename from tests/ls/null-option.sh, and test --zero instead of --null.
* ls: compute defaults more lazilyPaul Eggert2021-07-271-195/+200
| | | | | | | | | | | | | | | | | | | | | | * src/ls.c (enum time_type, enum sort_type, enum indicator_style) (enum Dereference_symlink, ignore_mode): Put ‘= 0’ after default values, since the code relies on static storage defaulting to zero. (enum sort_type): Reorder so that -1 can be used to represent unset. (main): Test print_with_color after parse_ls_color may have reset it. (decode_line_length): Return the line length instead of setting static storage. All uses changed. Treat line lengths exceeding PTRDIFF_MAX as infinite, to avoid pointer-subtraction glitches. (stdout_isatty): New function, to avoid calling isatty twice. (decode_switches): Calculate defaults more lazily, to avoid using syscalls or getenv during startup unless the results are more likely to be needed. Use -1 to indicate options that haven’t been set on the command line yet. Move print_with_color test from here to ‘main’. Suppress bogus GCC warning. (getenv_quoting_style): Return the quoting style instead of setting static storage. (init_column_info): New arg MAX_COLS, to avoid recalculating it. Caller changed.
* ls: add --null option (Bug#49716)Paul Eggert2021-07-261-14/+25
| | | | | | | | | | | | | | * NEWS, doc/coreutils.texi (General output formatting): * src/ls.c (usage): Document this. * src/ls.c (NULL_OPTION): New constant. (long_options): Add --null. (eolbyte): New static var. (dired_dump_obstack, main, print_dir, print_current_files) (print_many_per_line, print_horizontal, print_with_separator): Output eolbyte instead of '\n'. (decode_switches): Decode --null. * tests/ls/null-option.sh: New file. * tests/local.mk (all_tests): Add it.
* ls: port to wider off_t, uid_t, gid_tPaul Eggert2021-07-261-10/+10
| | | | | | | | | | | | | * src/ls.c (dired_pos): Now off_t, not size_t, since it counts output file offsets. (dired_dump_obstack): This obstack's file offsets are now off_t, not size_t. (format_user_or_group, format_user_or_group_width): ID arg is now uintmax_t, not unsigned long, since uid_t and gid_t values might exceed ULONG_MAX. (format_user_or_group_width): Use snprintf with NULL instead of sprintf with a discarded buffer. This avoids a stack buffer, and so should be safer.
* ls: demacroizePaul Eggert2021-07-261-135/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prefer functions or constants to macros where either will do. That’s cleaner, and nowadays there’s no performance reason to prefer macros. All uses changed. * src/ls.c (INITIAL_TABLE_SIZE, MIN_COLUMN_WIDTH): Now constants instead of macros. (file_or_link_mode): New function, replacing the old macro FILE_OR_LINK_MODE. (dired_outbyte): New function, replacing the old macro DIRED_PUTCHAR. (dired_outbuf): New function, replacing the old macro DIRED_FPUTS. (dired_outstring): New function, replacing the old macro DIRED_FPUTS_LITERAL. (dired_indent): New function, replacing the old macro DIRED_INDENT. (push_current_dired_pos): New function, replacing the old macro PUSH_CURRENT_DIRED_POS. (assert_matching_dev_ino): New function, replacing the old macro ASSERT_MATCHING_DEV_INO. (do_stat, do_lstat, stat_for_mode, stat_for_ino, fstat_for_ino) (signal_init, signal_restore, cmp_ctime, cmp_mtime, cmp_atime) (cmp_btime, cmp_size, cmp_name, cmp_extension) (fileinfo_name_width, cmp_width, cmp_version): No longer inline; compilers can deduce this well enough nowadays. (main): Protect unused assert with ‘if (false)’ rather than commenting it out, so that the compiler checks the code. (print_dir): Output the space and newline in the same buffer as the human-readable number they surround. (dirfirst_check): New function, replacing the old macro DIRFIRST_CHECK. Simplify by using subtraction. (off_cmp): New function, replacing the old macro longdiff. (print_long_format): No need to null-terminate the string now. (format_user_or_group): Let printf count the bytes.
* ls: simplify sprintf usagePaul Eggert2021-07-261-24/+14
| | | | | | * src/ls.c (format_user_or_group_width, print_long_format): Use return value from sprintf instead of calling strlen on the resulting buffer, or inferring the length some other way.
* maint: while (1) → while (true)Paul Eggert2021-06-261-2/+2
|
* maint: use "char const *" rather than "const char *"Pádraig Brady2021-04-111-26/+26
| | | | | | * cfg.mk (sc_prohibit-const-char): Add a new syntax-check to enforce this style. * *.[ch]: sed -i 's/const char \*/char const */g'
* ls: cache name width determinationPádraig Brady2021-04-111-4/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is especially important now for --sort=width, as that can greatly increase how often this expensive quote_name_width() function is called per file. This also helps the default invocation of ls, or specifically the --format={across,vertical} cases (when --width is not set to 0), to avoid two calls to this function per file. Note the only case where we later compute the width, is for --format=commas. That's only done once though, so we leave the computation close to use to maximize hardware caching. * src/ls.c (struct fileinfo): Add a WIDTH member to cache the screen width of the file name. (update_current_files_info): Set the WIDTH members for cases they're needed multiple times. Note we do this explicitly here, rather than caching at use, so that the fileinfo structures can remain const in the sorting and presentation functions. (sort_files): Call the new update_current_files_info() in this initialization function. (fileinfo_name_width): Renamed from fileinfo_width, and adjusted to return the cached value if available.
* ls: add --sort=width option to sort by file name widthCarl Edquist2021-04-111-3/+25
| | | | | | | | | | | | | | | | | | This helps identify the outliers for long filenames, and also produces a more compact display of columns when listing a directory with many entries of various widths. * src/ls.c (sort_type, sort_types, sort_width): New sort_width sort type. (sort_args): Add "width" sort arg. (cmp_width, fileinfo_width): New sort function and helper for file name width. (quote_name_width): Add function prototype declaration. (usage): Document --sort=width option. * doc/coreutils.texi: Document --sort=width option. * tests/ls/sort-width-option.sh: New test for --sort=width option. * tests/local.mk: Reference new test. * NEWS: Mention the new feature.
* maint: update all copyright year number rangesPádraig Brady2021-01-011-1/+1
| | | | | | | | | Run "make update-copyright" and then... * gnulib: Update to latest with copyright year adjusted. * tests/init.sh: Sync with gnulib to pick up copyright year. * bootstrap: Likewise. * tests/sample-test: Adjust to use the single most recent year.
* ls: fix crash printing SELinux context for unstatable filesPádraig Brady2020-11-111-0/+3
| | | | | | | | | | | | | This crash was identified by Cyber Independent Testing Lab: https://cyber-itl.org/2020/10/28/citl-7000-defects.html and was introduced with commit v6.9.90-11-g4245876e2 * src/ls.c (gobble_file): Ensure scontext is initialized in the case where files are not statable. * tests/ls/selinux-segfault.sh: Renamed from proc-selinux-segfault.sh, and added test case for broken symlinks. * tests/local.mk: Adjust for the renamed test. * NEWS: Mention the bug fix.
* build: update gnulib submodule to latestPaul Eggert2020-10-191-1/+1
| | | | | | * gl/lib/randperm.c, src/cp-hash.c, src/ls.c, src/sort.c, src/tail.c: Change all instaces of hash_delete to hash_remove to accommodate change to Gnulib API.
* ls: allow --classify to be ignored for non tty outputJason Kim2020-04-271-4/+18
| | | | | | | | | | | | | Have the `ls` `--classify` option take an optional argument for when to classify ("always", "auto", "never"), just like the optional argument for `--color`. When the optional argument is not specified, default to "always" for backwards compatibility. * src/ls.c (usage): Update help text. (decode_switches): Support an optional argument for --classify. * tests/ls/classify.sh: Add a new test. * tests/local.mk: Reference the new test. * NEWS: Mention the new feature.
* ls: restore 8.31 behavior on removed directoriesPaul Eggert2020-03-071-22/+0
| | | | | | | | * NEWS: Mention this. * src/ls.c: Do not include <sys/sycall.h> (print_dir): Don't worry about whether the directory is removed. * tests/ls/removed-directory.sh: Adjust to match new (i.e., old) behavior.
* ls: issue error message on removed directoryColin Watson2020-02-271-0/+22
| | | | | | | | | | | | | | | | If the current directory has been removed, then "ls" confusingly produced no output and no error message, indistinguishable from running on an empty directory. * src/ls.c (print_dir): Report ENOENT on GNU/Linux if readdir finds no directory entries at all, not even "." or "..", and a recheck with the getdents syscall returns ENOENT. We recheck with getdents() as POSIX states that "The directory entries for dot and dot-dot are optional". * tests/ls/removed-directory.sh: New file. * tests/local.mk (all_tests): Add new test. * NEWS: Mention the change in behavior. Reported by Owen Thomas.
* ls: support --time=creation to show/sort birth timePádraig Brady2020-02-031-13/+72
| | | | | | | | | | | | | | * src/ls.c (usage): Reorganize help for --time, and add description for --time=birth. (do_statx): Store btime in mtime if available. (get_stat_btime): A new function to read the creation time from the appropriate stat structure member. (cmp_btime): A new function to compare birth time. (print_long_format): Output '?' when birth time unavailable. * doc/coreutils.texi: Document --time={birth,creation}. * tests/local.mk: Reference the new test. * tests/ls/birthtime.sh: Add a new test. * NEWS: Mention the new feature.
* maint: adjust to split out xstrtol-error gnulib modulePádraig Brady2020-01-011-0/+1
| | | | | | | | | | * bootstrap.conf: Depend on the new module split from xstrtol. * src/df.c: Include "xstrtol-error.h" for xstrtol_fatal. * src/du.c: Likewise. * src/ls.c: Likewise. * src/od.c: Likewise. * src/pr.c: Likewise. * src/sort.c: Likewise.
* maint: update all copyright year number rangesPádraig Brady2020-01-011-1/+1
| | | | | | | | | Run "make update-copyright" and then... * gnulib: Update to latest with copyright year adjusted. * tests/init.sh: Sync with gnulib to pick up copyright year. * bootstrap: Likewise. * tests/sample-test: Adjust to use the single most recent year.
* all: improve parsing of numeric argumentsPaul Eggert2019-10-221-11/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This addresses a longstanding "update all callers" FIXME in lib/xstrtol.c, by having programs check that numbers do not have unknown suffixes. The problem was also reported for 'shuf' by my student Maggie Huang while reimplementing a shuf subset in Python as an exercise in UCLA Computer Science 35L: https://web.cs.ucla.edu/classes/fall19/cs35L/assign/assign3.html This patch also improves the portability of the code to unusual platforms where ULONG_MAX < SIZE_MAX. * NEWS: Mention user-visible changes. * src/chgrp.c (parse_group): * src/chroot.c (parse_additional_groups): * src/du.c (main): * src/install.c (get_ids): * src/join.c (string_to_join_field): * src/ls.c (decode_switches): * src/md5sum.c (split_3): * src/shuf.c (main): * src/sort.c (specify_nthreads): * src/uniq.c (size_opt, main): Use uintmax_t instead of unsigned long, for portability to oddball platforms where unsigned long is not wide enough. * src/du.c (main): * src/expr.c (mpz_init_set_str) [!HAVE_GMP]: * src/install.c (get_ids): * src/ls.c (decode_switches): * src/mknod.c (main): * src/ptx.c (main): * src/shuf.c (main): * src/sort.c (specify_nmerge, specify_nthreads): Reject numbers with suffixes. * src/md5sum.c (split_3): Simplify.
* ls: use statx instead of stat when availableJeff Layton2019-10-091-7/+138
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | statx allows ls to indicate interest in only certain inode metadata. This is potentially a win on networked/clustered/distributed file systems. In cases where we'd have to do a full, heavyweight stat() call we can now do a much lighter statx() call. As a real-world example, consider a file system like CephFS where one client is actively writing to a file and another client does an ls --color in the same directory. --color means that we need to fetch the mode of the file. Doing that with a stat() call means that we have to fetch the size and mtime in addition to the mode. The MDS in that situation will have to revoke caps in order to ensure that it has up-to-date values to report, which disrupts the writer. This has a measurable affect on performance. I ran a fio sequential write test on one cephfs client and had a second client do "ls --color" in a tight loop on the directory that held the file: Baseline -- no activity on the second client: WRITE: bw=76.7MiB/s (80.4MB/s), 76.7MiB/s-76.7MiB/s (80.4MB/s-80.4MB/s), io=4600MiB (4824MB), run=60016-60016msec Without this patch series, we see a noticable performance hit: WRITE: bw=70.4MiB/s (73.9MB/s), 70.4MiB/s-70.4MiB/s (73.9MB/s-73.9MB/s), io=4228MiB (4433MB), run=60012-60012msec With this patch series, we gain most of that ground back: WRITE: bw=75.9MiB/s (79.6MB/s), 75.9MiB/s-75.9MiB/s (79.6MB/s-79.6MB/s), io=4555MiB (4776MB), run=60019-60019msec * src/stat.c: move statx to stat struct conversion to new header... * src/statx.h: ...here. * src/ls.c: Add wrapper functions for stat/lstat/fstat calls, and add variants for when we are only interested in specific info. Add statx-enabled functions and set the request mask based on the output format and what values are needed. * NEWS: Mention the Improvement.
* ls: better align month abbreviations containing digitsDaming Yang2019-02-181-1/+3
| | | | | * src/ls.c (abmon_init): Align numeric abbreviations right. * NEWS: Mention the improvement.
* ls: with --group-directories-first, also group symlinked dirsPádraig Brady2019-01-121-20/+20
| | | | | | | | | | | | | | | | * src/ls.c (is_linked_directory): A new function to also consider symlinked directories. (main): Rename check_symlink_color to check_symlink_mode, and enable that with --group-directories-first. (DIRFIRST_CHECK): Adjust to use is_linked_directory, rather than just is_directory. (gobble_file): Simplify to always update f->linkmode if the stat() succeeds. * tests/ls/group-dirs.sh: A new test. * tests/local.mk: Reference the new test. * NEWS: Mention the change in behavior. Suggested by Amin Bandali in https://lists.gnu.org/r/coreutils/2018-12/msg00017.html
* maint: update all copyright year number rangesAssaf Gordon2019-01-011-1/+1
| | | | | | | | | Run "make update-copyright" and then... * gnulib: Update to latest with copyright year adjusted. * tests/init.sh: Sync with gnulib to pick up copyright year. * bootstrap: Likewise. * tests/sample-test: Adjust to use the single most recent year.
* ls: ignore case when coloring file extensionsKaxandra Labat2018-06-201-2/+3
| | | | | | | | * src/ls.c (get_color_indicator): s/STREQ_LEN/c_strncasecmp/ * src/dircolors.hin: Remove a now redundant entry. * tests/ls/color-ext.sh: Add a new test. * tests/local.mk: Reference the new test. * NEWS: Mention the change in behavior.
* ls: -A now overrides -aPaul Eggert2018-03-271-2/+1
| | | | | | | | Problem reported by Karl Berry (Bug#30963). * NEWS: Mention this. * src/ls.c (decode_switches): Implement this. * tests/ls/a-option.sh: New file. * tests/local.mk (all_tests): Add it.
* ls: increase the allowed abmon width from 5 to 12Pádraig Brady2018-03-161-2/+5
| | | | | | | | | | | This will impact relatively few languages, and will make Arabic or Catalan etc. output unambiguous abbreviated month names. * src/ls.c (MAX_MON_WIDTH): Increase from 5 to 12. * NEWS: Mention the bug fix. * tests/ls/abmon-align.sh: Augment to check for ambiguous output. Fixes https://bugs.gnu.org/30814
* maint: update all copyright year number rangesPádraig Brady2018-01-011-1/+1
| | | | | | | | | Run "make update-copyright" and then... * gnulib: Update to latest with copyright year adjusted. * tests/init.sh: Sync with gnulib to pick up copyright year. * bootstrap: Likewise. * tests/sample-test: Adjust to use the single most recent year.