Skip to content

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

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'
$

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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