1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
[manpage_begin cksum n 1.1.0]
[copyright {2002, Pat Thoyts}]
[moddesc {Cyclic Redundancy Checks}]
[titledesc {Calculate a cksum(1) compatible checksum}]
[require Tcl 8.2]
[require cksum [opt 1.1.0]]
[description]
[para]
This package provides a Tcl implementation of the cksum(1) algorithm
based upon information provided at in the GNU implementation of this
program as part of the GNU Textutils 2.0 package.
[section COMMANDS]
[list_begin definitions]
[call [cmd "::crc::cksum"] \
[opt [arg "-format format"]] \
[opt [arg "-chunksize size"]] \
[lb] [arg "-channel chan"] | \
[arg "-filename file"] | [arg "string" ] [rb]]
The command takes string data or a channel or file name and returns a
checksum value calculated using the [syscmd cksum(1)] algorithm. The
result is formatted using the [arg format](n) specifier provided or as
an unsigned integer (%u) by default.
[list_end]
[section OPTIONS]
[list_begin definitions]
[lst_item "-channel [arg name]"]
Return a checksum for the data read from a channel. The command will
read data from the channel until the [cmd "eof"] is true. If you need
to be able to process events during this calculation see the
[sectref {PROGRAMMING INTERFACE}] section
[lst_item "-filename [arg name]"]
This is a convenience option that opens the specified file, sets the
encoding to binary and then acts as if the [arg -channel] option had
been used. The file is closed on completion.
[lst_item "-format [arg string]"]
Return the checksum using an alternative format template.
[list_end]
[section {PROGRAMMING INTERFACE}]
The cksum package implements the checksum using a context variable to
which additional data can be added at any time. This is expecially
useful in an event based environment such as a Tk application or a web
server package. Data to be checksummed may be handled incrementally
during a [cmd fileevent] handler in discrete chunks. This can improve
the interactive nature of a GUI application and can help to avoid
excessive memory consumption.
[list_begin definitions]
[call [cmd "::crc::CksumInit"]]
Begins a new cksum context. Returns a token ID that must be used for the
remaining functions. An optional seed may be specified if required.
[call [cmd "::crc::CksumUpdate"] [arg "token"] [arg "data"]]
Add data to the checksum identified by token. Calling
[emph {CksumUpdate $token "abcd"}] is equivalent to calling
[emph {CksumUpdate $token "ab"}] followed by
[emph {CksumUpdate $token "cb"}]. See [sectref {EXAMPLES}].
[call [cmd "::crc::CksumFinal"] [arg "token"]]
Returns the checksum value and releases any resources held by this
token. Once this command completes the token will be invalid. The
result is a 32 bit integer value.
[list_end]
[section EXAMPLES]
[para]
[example {
% crc::cksum "Hello, World!"
2609532967
}]
[para]
[example {
% crc::cksum -format 0x%X "Hello, World!"
0x9B8A5027
}]
[para]
[example {
% crc::cksum -file cksum.tcl
1828321145
}]
[para]
[example {
% set tok [crc::CksumInit]
% crc::CksumUpdate $tok "Hello, "
% crc::CksumUpdate $tok "World!"
% crc::CksumFinal $tok
2609532967
}]
[see_also sum(n) crc32(n)]
[section AUTHORS]
Pat Thoyts
[keywords cksum checksum crc crc32 {cyclic redundancy check} {data integrity} security]
[manpage_end]
|