Hex Artifact Content

Artifact 235aac19130c7c458d3a6a60b08e94d226843114:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 74 63 6c 73 68 0a 0a 70 72 6f 63 20 73 68 61 31  tclsh..proc sha1
0020: 3a 3a 73 68 61 31 20 61 72 67 73 20 7b 0a 09 73  ::sha1 args {..s
0030: 65 74 20 6f 75 74 70 75 74 6d 6f 64 65 20 22 68  et outputmode "h
0040: 65 78 22 0a 0a 09 69 66 20 7b 5b 6c 69 6e 64 65  ex"...if {[linde
0050: 78 20 24 61 72 67 73 20 30 5d 20 3d 3d 20 22 2d  x $args 0] == "-
0060: 68 65 78 22 7d 20 7b 0a 09 09 73 65 74 20 6f 75  hex"} {...set ou
0070: 74 70 75 74 6d 6f 64 65 20 22 68 65 78 22 0a 0a  tputmode "hex"..
0080: 09 09 73 65 74 20 61 72 67 73 20 5b 6c 72 61 6e  ..set args [lran
0090: 67 65 20 24 61 72 67 73 20 31 20 65 6e 64 5d 0a  ge $args 1 end].
00a0: 09 7d 20 65 6c 73 65 69 66 20 7b 5b 6c 69 6e 64  .} elseif {[lind
00b0: 65 78 20 24 61 72 67 73 20 30 5d 20 3d 3d 20 22  ex $args 0] == "
00c0: 2d 62 69 6e 22 7d 20 7b 0a 09 09 73 65 74 20 6f  -bin"} {...set o
00d0: 75 74 70 75 74 6d 6f 64 65 20 22 62 69 6e 61 72  utputmode "binar
00e0: 79 22 0a 0a 09 09 73 65 74 20 61 72 67 73 20 5b  y"....set args [
00f0: 6c 72 61 6e 67 65 20 24 61 72 67 73 20 31 20 65  lrange $args 1 e
0100: 6e 64 5d 0a 09 7d 0a 0a 09 69 66 20 7b 5b 6c 6c  nd]..}...if {[ll
0110: 65 6e 67 74 68 20 24 61 72 67 73 5d 20 3d 3d 20  ength $args] == 
0120: 32 7d 20 7b 0a 09 09 73 65 74 20 6d 6f 64 65 20  2} {...set mode 
0130: 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 20 30 5d  [lindex $args 0]
0140: 0a 09 7d 20 65 6c 73 65 69 66 20 7b 5b 6c 6c 65  ..} elseif {[lle
0150: 6e 67 74 68 20 24 61 72 67 73 5d 20 3d 3d 20 31  ngth $args] == 1
0160: 7d 20 7b 0a 09 09 73 65 74 20 6d 6f 64 65 20 22  } {...set mode "
0170: 2d 73 74 72 69 6e 67 22 0a 09 7d 20 65 6c 73 65  -string"..} else
0180: 20 7b 0a 09 09 72 65 74 75 72 6e 20 2d 63 6f 64   {...return -cod
0190: 65 20 65 72 72 6f 72 20 22 77 72 6f 6e 67 20 23  e error "wrong #
01a0: 20 61 72 67 73 3a 20 73 68 61 31 3a 3a 73 68 61   args: sha1::sha
01b0: 31 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d  1 ?-bin|-hex? ?-
01c0: 63 68 61 6e 6e 65 6c 20 63 68 61 6e 6e 65 6c 7c  channel channel|
01d0: 2d 66 69 6c 65 20 66 69 6c 65 7c 73 74 72 69 6e  -file file|strin
01e0: 67 3f 22 0a 09 7d 0a 0a 09 73 77 69 74 63 68 20  g?"..}...switch 
01f0: 2d 2d 20 24 6d 6f 64 65 20 7b 0a 09 09 22 2d 63  -- $mode {..."-c
0200: 68 61 6e 6e 65 6c 22 20 7b 0a 09 09 09 72 65 74  hannel" {....ret
0210: 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20  urn -code error 
0220: 22 4e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64  "Not implemented
0230: 22 0a 09 09 7d 0a 09 09 22 2d 66 69 6c 65 22 20  "...}..."-file" 
0240: 7b 0a 09 09 09 73 65 74 20 6f 75 74 70 75 74 20  {....set output 
0250: 5b 5f 73 68 61 31 5f 66 69 6c 65 20 5b 6c 69 6e  [_sha1_file [lin
0260: 64 65 78 20 24 61 72 67 73 20 65 6e 64 5d 5d 0a  dex $args end]].
0270: 09 09 7d 0a 09 09 22 2d 73 74 72 69 6e 67 22 20  ..}..."-string" 
0280: 7b 0a 09 09 09 73 65 74 20 6f 75 74 70 75 74 20  {....set output 
0290: 5b 5f 73 68 61 31 5f 73 74 72 69 6e 67 20 5b 6c  [_sha1_string [l
02a0: 69 6e 64 65 78 20 24 61 72 67 73 20 65 6e 64 5d  index $args end]
02b0: 5d 0a 09 09 7d 0a 09 09 64 65 66 61 75 6c 74 20  ]...}...default 
02c0: 7b 0a 09 09 09 72 65 74 75 72 6e 20 2d 63 6f 64  {....return -cod
02d0: 65 20 65 72 72 6f 72 20 22 69 6e 76 61 6c 69 64  e error "invalid
02e0: 20 6d 6f 64 65 3a 20 24 6d 6f 64 65 2c 20 6d 75   mode: $mode, mu
02f0: 73 74 20 62 65 20 6f 6e 65 20 6f 66 20 2d 63 68  st be one of -ch
0300: 61 6e 6e 65 6c 20 6f 72 20 2d 66 69 6c 65 20 28  annel or -file (
0310: 6f 72 20 61 20 70 6c 61 69 6e 20 73 74 72 69 6e  or a plain strin
0320: 67 29 22 0a 09 09 7d 0a 09 7d 0a 0a 09 69 66 20  g)"...}..}...if 
0330: 7b 24 6f 75 74 70 75 74 6d 6f 64 65 20 3d 3d 20  {$outputmode == 
0340: 22 68 65 78 22 7d 20 7b 0a 09 09 62 69 6e 61 72  "hex"} {...binar
0350: 79 20 73 63 61 6e 20 24 6f 75 74 70 75 74 20 48  y scan $output H
0360: 2a 20 6f 75 74 70 75 74 0a 09 7d 0a 0a 09 72 65  * output..}...re
0370: 74 75 72 6e 20 24 6f 75 74 70 75 74 0a 7d 0a     turn $output.}.