Skip to content

date: strftime flags propagate into composite specifiers (%-D, %-F, …) #11657

@sylvestre

Description

@sylvestre

Summary

GNU date treats composite strftime specifiers (%D, %F, %T, %r, %R, %c, %x, %X) as atomic: flags like - apply to the whole expansion, not to inner sub-fields. uutils lets the - flag propagate into the inner %m, producing 6/15/24 instead of 06/15/24.

Found by a fuzz_date run.

Reproduction

$ LC_ALL=C TZ=UTC /usr/bin/date -d '2024-06-15' '+%-D'
06/15/24

$ LC_ALL=C TZ=UTC target/debug/coreutils date -d '2024-06-15' '+%-D'
6/15/24

Test

#[test]
fn test_date_strftime_flag_on_composite() {
    new_ucmd!()
        .env("LC_ALL", "C")
        .env("TZ", "UTC")
        .arg("-d")
        .arg("2024-06-15")
        .arg("+%-D")
        .succeeds()
        .stdout_is("06/15/24\n");
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions