Browse Source

Revert "cksum: Add POSIX cksum"

This reverts commit 6821095fdc.
master
Jake Wakeling 2 months ago
parent
commit
9d71e6f571
4 changed files with 0 additions and 201 deletions
  1. +0
    -1
      CMakeLists.txt
  2. +0
    -1
      README.md
  3. +0
    -40
      man/cksum.1
  4. +0
    -159
      src/cksum.c

+ 0
- 1
CMakeLists.txt View File

@@ -15,5 +15,4 @@ INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/ext/libokv/include)

LINK_LIBRARIES(libokv.a)

ADD_EXECUTABLE(cksum ${PROJECT_SOURCE_DIR}/src/cksum.c)
ADD_EXECUTABLE(crc32 ${PROJECT_SOURCE_DIR}/src/crc32.c)

+ 0
- 1
README.md View File

@@ -8,7 +8,6 @@ OMKOV cryptutils implements many cryptographic utilities.

| Utility | Description | Standard |
| ---------------- | ---------------------------------------- | -------- |
| cksum | Write file checksums and sizes | POSIX |
| crc32 | Compute the CRC-32 for a file | |

## Build Instructions


+ 0
- 40
man/cksum.1 View File

@@ -1,40 +0,0 @@
.TH CKSUM 1 2020-07-25 "OMKOV cryptutils" "General Commands Manual"
.SH NAME
cksum \(em write file checksums and sizes
.SH SYNOPSYS
\fBcksum\fR [\fIfile\fR...]
.SH DESCRIPTION
Compute and print a CRC for each input file, as well as the file size in bytes.
The CRC used is based on the polynomial used for CRC error checking in the
ISO/IEC 8802-3:1996 Ethernet standard.
.SH OPTIONS
The following options are supported:
.TP
.B --help
Display help information.
.TP
.B --version
Display version information.
.SH OPERANDS
The following operand is supported:
.TP
.I file
A pathname of an input file. If no \fIfile\fR operands are specified, or
\fIfile\fR is a '\fB-\fR', \fIcksum\fR will read from standard input.
.SH EXIT STATUS
The following exit values will be returned:
.TP
\ 0
All files were processed successfully.
.TP
>0
An error occurred.
.SH STANDARDS
The \fIcksum\fR utility is compliant with the IEEE Std 1003.2-1992 ("POSIX.2")
specification.
.SH COPYRIGHT
.nf
Copyright (C) 2020, Jakob Wakeling
All rights reserved.
OMKOV Permissive Licence (https://www.omkov.net/OLPE)
.fi

+ 0
- 159
src/cksum.c View File

@@ -1,159 +0,0 @@
// cksum.c, version 1.0.3
// OMKOV cryptutils implementation of POSIX cksum
// Copyright (C) 2020, Jakob Wakeling
// All rights reserved.

/*
OMKOV Permissive Licence, version 1.0

Copyright (C) 2020, Jakob Wakeling
All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal with
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimers.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimers in the documentation and/or
other materials provided with the distribution.
* Neither the names of the copyright holders, nor the names of its contributors
may be used to endorse or promote products derived from this Software without
specific prior written permission.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT
HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
*/

#include "optget.h"

#include <error.h>

#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>

#define VERSION "1.0.3"

static const uint32_t CRC[] = {
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7,
0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3,
0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef,
0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb,
0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4,
0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08,
0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc,
0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050,
0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1,
0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5,
0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9,
0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd,
0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2,
0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e,
0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a,
0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676,
0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
};

static inline int cksum(const char *file);

static void help(void);
static void version(void);

int main(int ac, char *av[]) { A0 = av[0];
lop_t lops[] = {
{ "help", ARG_NUL, 256 },
{ "version", ARG_NUL, 257 },
{ NULL, 0, 0 }
};
opt_t opt = OPTGET_INIT; opt.str = ""; opt.lops = lops; int o;
while((o = optget(&opt, av, 1)) != -1) switch (o) {
case 256: { help(); return 0; }
case 257: { version(); return 0; }
default: { return 1; }
}
bool warned = false;
if (opt.ind == ac) { cksum(NULL); }
else for (char **p = &av[opt.ind]; *p; ++p) if (cksum(*p)) {
warn("%s: %s", *p, serr()); warned = true;
}
return warned;
}

static inline int cksum(const char *file) {
char stdbuf[BUFSIZ * 16]; FILE *fi;
register size_t fl = 0; register uint32_t crc = 0;
if (!file || (file[0] == '-' && file[1] == 0)) { fi = stdin; }
else if (!(fi = fopen(file, "r"))) { return 1; }
for (size_t c; (c = fread(stdbuf, 1, sizeof (stdbuf), fi)); fl += c) {
for (register size_t i = 0; i != c; ++i) {
crc = (crc << 8) ^ CRC[(crc >> 24) ^ (stdbuf[i] & 0xFF)];
}
}
for (register size_t n = fl; n; n >>= 8) {
crc = (crc << 8) ^ CRC[(crc >> 24) ^ (n & 0xFF)];
} crc = ~crc;
printf("%u %zu", crc, fl);
if (file) { printf(" %s", file); } fputc('\n', stdout);
if (fi != stdin) { fclose(fi); } return 0;
}

static void help(void) {
puts("cksum - write file checksums and sizes\n");
puts("usage: cksum [file...]\n");
puts("options:");
puts(" --help Display help information");
puts(" --version Display version information");
return;
}

static void version() {
puts("OMKOV coreutils cksum, version " VERSION);
puts("Copyright (C) 2020, Jakob Wakeling");
puts("All rights reserved.");
puts("OMKOV Permissive Licence (https://www.omkov.net/OLPE)");
return;
}

Loading…
Cancel
Save