Tcl Source Code

Hex Artifact Content
Login

Artifact 088c9b935613fd903f5b782af585cbfdffc51c60:

Attachment "test.tcl" to ticket [5bfe3de008] added by andy 2017-08-08 22:08:09.
0000: 23 21 2f 62 69 6e 2f 62 61 73 68 0a 23 20 54 68  #!/bin/bash.# Th
0010: 69 73 20 63 6f 6d 6d 65 6e 74 20 68 69 64 65 73  is comment hides
0020: 20 74 68 65 20 6e 65 78 74 20 6c 69 6e 65 20 66   the next line f
0030: 72 6f 6d 20 74 68 65 20 54 63 6c 20 69 6e 74 65  rom the Tcl inte
0040: 72 70 72 65 74 65 72 2e 5c 0a 65 78 65 63 20 22  rpreter.\.exec "
0050: 24 28 64 69 72 6e 61 6d 65 20 22 24 30 22 29 2f  $(dirname "$0")/
0060: 75 74 69 6c 2f 74 63 6c 6b 69 74 22 20 22 24 30  util/tclkit" "$0
0070: 22 20 22 24 40 22 0a 0a 6c 61 70 70 65 6e 64 20  " "$@"..lappend 
0080: 61 75 74 6f 5f 70 61 74 68 20 6c 69 62 0a 70 61  auto_path lib.pa
0090: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 54 63  ckage require Tc
00a0: 6c 20 38 2e 36 0a 70 61 63 6b 61 67 65 20 72 65  l 8.6.package re
00b0: 71 75 69 72 65 20 74 63 6c 3a 3a 63 68 61 6e 3a  quire tcl::chan:
00c0: 3a 76 61 72 69 61 62 6c 65 0a 70 61 63 6b 61 67  :variable.packag
00d0: 65 20 72 65 71 75 69 72 65 20 76 66 73 0a 0a 76  e require vfs..v
00e0: 66 73 3a 3a 66 69 6c 65 73 79 73 74 65 6d 20 6d  fs::filesystem m
00f0: 6f 75 6e 74 20 2f 74 65 73 74 20 7b 61 70 70 6c  ount /test {appl
0100: 79 20 7b 7b 6f 70 65 72 61 74 69 6f 6e 20 72 6f  y {{operation ro
0110: 6f 74 20 72 65 6c 61 74 69 76 65 20 61 63 74 75  ot relative actu
0120: 61 6c 20 61 72 67 73 7d 20 7b 0a 20 20 20 20 69  al args} {.    i
0130: 66 20 7b 24 72 65 6c 61 74 69 76 65 20 6e 65 20  f {$relative ne 
0140: 22 66 6f 6f 22 7d 20 7b 0a 20 20 20 20 20 20 20  "foo"} {.       
0150: 20 76 66 73 3a 3a 66 69 6c 65 73 79 73 74 65 6d   vfs::filesystem
0160: 20 70 6f 73 69 78 65 72 72 6f 72 20 24 3a 3a 76   posixerror $::v
0170: 66 73 3a 3a 70 6f 73 69 78 28 45 4e 4f 45 4e 54  fs::posix(ENOENT
0180: 29 0a 20 20 20 20 7d 0a 20 20 20 20 73 77 69 74  ).    }.    swit
0190: 63 68 20 24 6f 70 65 72 61 74 69 6f 6e 20 7b 0a  ch $operation {.
01a0: 20 20 20 20 61 63 63 65 73 73 20 7b 0a 20 20 20      access {.   
01b0: 20 20 20 20 20 72 65 74 75 72 6e 20 31 0a 20 20       return 1.  
01c0: 20 20 7d 20 6f 70 65 6e 20 7b 0a 20 20 20 20 20    } open {.     
01d0: 20 20 20 74 63 6c 3a 3a 63 68 61 6e 3a 3a 76 61     tcl::chan::va
01e0: 72 69 61 62 6c 65 20 3a 3a 66 6f 6f 0a 20 20 20  riable ::foo.   
01f0: 20 7d 20 73 74 61 74 20 7b 0a 20 20 20 20 20 20   } stat {.      
0200: 20 20 73 65 74 20 6e 6f 77 20 5b 63 6c 6f 63 6b    set now [clock
0210: 20 73 65 63 6f 6e 64 73 5d 0a 20 20 20 20 20 20   seconds].      
0220: 20 20 73 65 74 20 73 74 61 74 20 7b 6d 6f 64 65    set stat {mode
0230: 20 30 37 37 37 20 64 65 76 20 2d 31 20 69 6e 6f   0777 dev -1 ino
0240: 20 2d 31 20 75 69 64 20 2d 31 20 67 69 64 20 2d   -1 uid -1 gid -
0250: 31 20 6e 6c 69 6e 6b 20 31 20 74 79 70 65 20 66  1 nlink 1 type f
0260: 69 6c 65 7d 0a 20 20 20 20 20 20 20 20 64 69 63  ile}.        dic
0270: 74 20 73 65 74 20 73 74 61 74 20 6e 61 6d 65 20  t set stat name 
0280: 24 72 65 6c 61 74 69 76 65 0a 20 20 20 20 20 20  $relative.      
0290: 20 20 64 69 63 74 20 73 65 74 20 73 74 61 74 20    dict set stat 
02a0: 61 74 69 6d 65 20 24 6e 6f 77 0a 20 20 20 20 20  atime $now.     
02b0: 20 20 20 64 69 63 74 20 73 65 74 20 73 74 61 74     dict set stat
02c0: 20 63 74 69 6d 65 20 24 6e 6f 77 0a 20 20 20 20   ctime $now.    
02d0: 20 20 20 20 64 69 63 74 20 73 65 74 20 73 74 61      dict set sta
02e0: 74 20 6d 74 69 6d 65 20 24 6e 6f 77 0a 20 20 20  t mtime $now.   
02f0: 20 20 20 20 20 64 69 63 74 20 73 65 74 20 73 74       dict set st
0300: 61 74 20 73 69 7a 65 20 5b 73 74 72 69 6e 67 20  at size [string 
0310: 6c 65 6e 67 74 68 20 24 3a 3a 66 6f 6f 5d 0a 20  length $::foo]. 
0320: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 73         return $s
0330: 74 61 74 0a 20 20 20 20 7d 7d 0a 7d 7d 7d 0a 0a  tat.    }}.}}}..
0340: 73 65 74 20 66 6f 6f 20 7b 70 75 74 73 20 68 65  set foo {puts he
0350: 6c 6c 6f 7d 0a 70 75 74 73 20 5b 73 74 72 69 6e  llo}.puts [strin
0360: 67 20 6c 65 6e 67 74 68 20 24 66 6f 6f 5d 0a 73  g length $foo].s
0370: 6f 75 72 63 65 20 2f 74 65 73 74 2f 66 6f 6f 0a  ource /test/foo.
0380: 70 75 74 73 20 5b 73 74 72 69 6e 67 20 6c 65 6e  puts [string len
0390: 67 74 68 20 24 66 6f 6f 5d 0a 0a 23 20 76 69 6d  gth $foo]..# vim
03a0: 3a 20 73 65 74 20 73 74 73 3d 34 20 73 77 3d 34  : set sts=4 sw=4
03b0: 20 74 77 3d 38 30 20 65 74 20 66 74 3d 74 63 6c   tw=80 et ft=tcl
03c0: 3a 0a                                            :.