Skip to content

cksum is woefully under-implemented (and currently failing it's own tests) #188

@JalonSolov

Description

@JalonSolov

cksum tests are failing with

Platform util version: [cksum (coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Q. Frank Xia.
]
/home/runner/work/coreutils/coreutils/coreutils/src/cksum/cksum_test.v:46: fn test_one_file
   > assert res.exit_code == 0
     Left value (len: 3): `139`
    Right value (len: 1): `0`

/home/runner/work/coreutils/coreutils/coreutils/src/cksum/cksum_test.v:53: fn test_several_files
   > assert res.exit_code == 0
     Left value (len: 3): `139`
    Right value (len: 1): `0`

It is also missing quite a bit of implementation details, compared to the GNU version.

Current cksum:

$ v run . --help
cksum (V coreutils) 0.0.1
-----------------------------------------------
Usage: cksum [options] [ARGS]

Description: Print CRC checksum and byte counts of each FILE.

Options:
  -h, --help                display this help and exit
  --version                 output version information and exit

Help us make V Coreutils better, by contributing your suggestions,
ideas and pull requests in https://github.com/vlang/coreutils
$

GNU cksum:

$ cksum --help
Usage: cksum [OPTION]... [FILE]...
Print or verify checksums.
By default use the 32 bit CRC algorithm.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -a, --algorithm=TYPE  select the digest type to use.  See DIGEST below
      --base64          emit base64-encoded digests, not hexadecimal
  -c, --check           read checksums from the FILEs and check them
  -l, --length=BITS     digest length in bits; must not exceed the max size
                          and must be a multiple of 8 for blake2b;
                          must be 224, 256, 384, or 512 for sha2 or sha3
      --raw             emit a raw binary digest, not hexadecimal
      --tag             create a BSD-style checksum (the default)
      --untagged        create a reversed style checksum, without digest type
  -z, --zero            end each output line with NUL, not newline,
                          and disable file name escaping

The following five options are useful only when verifying checksums:
      --ignore-missing  don't fail or report status for missing files
      --quiet           don't print OK for each successfully verified file
      --status          don't output anything, status code shows success
      --strict          exit non-zero for improperly formatted checksum lines
  -w, --warn            warn about improperly formatted checksum lines

      --debug           indicate which implementation used
      --help        display this help and exit
      --version     output version information and exit

DIGEST determines the digest algorithm and default output format:
  sysv      (equivalent to sum -s)
  bsd       (equivalent to sum -r)
  crc       (equivalent to cksum)
  crc32b    (only available through cksum)
  md5       (equivalent to md5sum)
  sha1      (equivalent to sha1sum)
  sha2      (equivalent to sha{224,256,384,512}sum)
  sha3      (only available through cksum)
  blake2b   (equivalent to b2sum)
  sm3       (only available through cksum)

When checking, the input should be a former output of this program,
or equivalent standalone program.

Report bugs to: bug-coreutils@gnu.org
GNU coreutils home page: <https://www.gnu.org/software/coreutils/>
General help using GNU software: <https://www.gnu.org/gethelp/>
Full documentation <https://www.gnu.org/software/coreutils/cksum>
or available locally via: info '(coreutils) cksum invocation'
$

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions