File: cksum.man

package info (click to toggle)
tcllib 1.8-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 13,628 kB
  • ctags: 4,897
  • sloc: tcl: 88,012; sh: 7,856; ansic: 4,174; xml: 1,765; yacc: 753; perl: 84; f90: 84; makefile: 60; python: 33; ruby: 13; php: 11
file content (123 lines) | stat: -rw-r--r-- 3,290 bytes parent folder | download
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]