sum(3tcl)

πŸ“¦
version 2.0 Β· 2 versions
, in debian trixie, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– sum β€” bestie edition πŸ’–

ok so real talk, this is the manual for sum from the Tcl crew β€” it's the page about Cyclic Redundancy Checks, and it lives in the 3tcl section. yes we're doing checksums today. it's giving data integrity. periodt. ✨


πŸŽ€ NAME πŸŽ€

sum β€” Calculate a sum(1) compatible checksum. no cap, that's literally the whole name section. πŸ’…


🌸 SYNOPSIS 🌸

package require Tcl 8.5 9

package require sum ?1.1.3?

::crc::sum  ?-bsd  |  -sysv? ?-format fmt? ?-chunksize size? [ -filename
file | -channel chan | string ]

look at all those ?optional? bits bestie, they're basically little outfits the command can wear. πŸ¦‹


✨ DESCRIPTION ✨

okay so. this package gives you a Tcl-only implementation of the sum(1) command, and what it does is calculate a 16 bit checksum value from whatever input data you hand it. 🫢

by default it uses the BSD sum algorithm, but the SysV algorithm is also available if you want to switch it up. two algorithms, one command, main character energy honestly. πŸ‘‘


πŸ‘‘ COMMANDS πŸ‘‘

::crc::sum ?-bsd | -sysv? ?-format fmt? ?-chunksize size? [ -filename
file | -channel chan | string ]

The command takes string data or a file name or a channel and returns a checksum value calculated using the sum(1) algorithm.

the result gets formatted using the format(3tcl) specifier you provide β€” or, if you don't say anything, it defaults to an unsigned integer (%u). πŸ’–


πŸ’… OPTIONS πŸ’…

  • -sysv β€” The SysV algorithm is fairly naive. The byte values are summed and any overflow is discarded. The lowest 16 bits are returned as the checksum. Input with the same content but different ordering will give the same result.
  • -bsd β€” This algorithm is similar to the SysV version but includes a bit rotation step which provides a dependency on the order of the data values.
  • -filename name β€” Return a checksum for the file contents instead of for parameter data.
  • -channel chan β€” Return a checksum for the contents of the specified channel. The channel must be open for reading and should be configured for binary translation. The channel will no be closed on completion.
  • -chunksize size β€” Set the block size used when reading data from either files or channels. This value defaults to 4096.
  • -format string β€” Return the checksum using an alternative format template.
lowkey note that -bsd and -sysv are mutually exclusive, bestie β€” the synopsis says ?-bsd | -sysv?, so pick one. you can't wear both fits at the same time. πŸ™ˆ

🌈 EXAMPLES 🌈

here's the vibe, live and in action:

% crc::sum "Hello, World!"
37287
% crc::sum -format 0x%X "Hello, World!"
0x91A7
% crc::sum -file sum.tcl
13392

ate. no crumbs. πŸ”₯


🌟 AUTHORS 🌟

Pat Thoyts πŸ’œ


πŸ’€ BUGS, IDEAS, FEEDBACK πŸ’€

ngl, this document, and the package it describes, will undoubtedly contain bugs and other problems. that's just how it is. 😭

Please report such in the category crc of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist].

Please also report any ideas for enhancements you may have for either package and/or documentation. we wanna hear them fr fr. 🫢

When proposing code changes, please provide unified diffs, i.e the output of diff -u.

Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.

ok so tldr: attach your stuff, don't paste it inline, and make it a real diff. do that and you're iconic. πŸ’…

πŸ¦‹ SEE ALSO πŸ¦‹

cksum(3tcl), crc32(3tcl), sum(1)


πŸ“ KEYWORDS πŸ“

checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security, sum


⭐ CATEGORY ⭐

Hashes, checksums, and encryption


Copyright (c) 2002, Pat Thoyts <patthoyts@users.sourceforge.net>


and that's the whole page bestie!! πŸŽ€ this was tcllib version 1.1.3, and the page itself is dated 1.1.3 too (yeah, same energy, it's giving consistent πŸ’€). stay checksummed, stay slay. mwah πŸ’–βœ¨πŸ«Ά

πŸ“¦ where this page comes from