| 12
 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
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 
 | [manpage_begin cksum n 1.1.1]
[copyright {2002, Pat Thoyts}]
[moddesc   {Cyclic Redundancy Checks}]
[titledesc {Calculate a cksum(1) compatible checksum}]
[require Tcl 8.2]
[require cksum [opt 1.1.1]]
[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]
[def "-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
[def "-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.
[def "-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
[section {BUGS, IDEAS, FEEDBACK}]
This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category [emph crc] of the
[uri {http://sourceforge.net/tracker/?group_id=12883} {Tcllib SF Trackers}].
Please also report any ideas for enhancements you may have for either
package and/or documentation.
[keywords cksum checksum crc crc32 {cyclic redundancy check} {data integrity} security]
[manpage_end]
 |