Tcl Source Code

Hex Artifact Content
Login

Artifact 7b4158cbb9cd52c5fe87709182967e1b73549db2:

Attachment "3151675.patch" to ticket [3151675fff] added by nijtmans 2011-01-06 17:46:54.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
0010: 63 6c 49 4f 43 6d 64 2e 63 0a 3d 3d 3d 3d 3d 3d  clIOCmd.c.======
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
0060: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
0070: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63  /tcl/tcl/generic
0080: 2f 74 63 6c 49 4f 43 6d 64 2e 63 2c 76 0a 72 65  /tclIOCmd.c,v.re
0090: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
00a0: 6e 20 31 2e 37 31 0a 64 69 66 66 20 2d 75 20 2d  n 1.71.diff -u -
00b0: 72 31 2e 37 31 20 74 63 6c 49 4f 43 6d 64 2e 63  r1.71 tclIOCmd.c
00c0: 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c  .--- generic/tcl
00d0: 49 4f 43 6d 64 2e 63 09 31 30 20 44 65 63 20 32  IOCmd.c.10 Dec 2
00e0: 30 31 30 20 31 33 3a 30 38 3a 35 34 20 2d 30 30  010 13:08:54 -00
00f0: 30 30 09 31 2e 37 31 0a 2b 2b 2b 20 67 65 6e 65  00.1.71.+++ gene
0100: 72 69 63 2f 74 63 6c 49 4f 43 6d 64 2e 63 09 36  ric/tclIOCmd.c.6
0110: 20 4a 61 6e 20 32 30 31 31 20 31 30 3a 34 31 3a   Jan 2011 10:41:
0120: 32 38 20 2d 30 30 30 30 0a 40 40 20 2d 31 33 35  28 -0000.@@ -135
0130: 2c 33 32 20 2b 31 33 35 2c 32 33 20 40 40 0a 20  ,32 +135,23 @@. 
0140: 09 62 72 65 61 6b 3b 0a 20 0a 20 20 20 20 20 63  .break;. .     c
0150: 61 73 65 20 34 3a 20 2f 2a 20 5b 70 75 74 73 20  ase 4: /* [puts 
0160: 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 63 68 61 6e  -nonewline $chan
0170: 20 24 78 5d 20 6f 72 20 5b 70 75 74 73 20 24 63   $x] or [puts $c
0180: 68 61 6e 20 24 78 20 6e 6f 6e 65 77 6c 69 6e 65  han $x nonewline
0190: 5d 20 2a 2f 0a 2b 09 6e 65 77 6c 69 6e 65 20 3d  ] */.+.newline =
01a0: 20 30 3b 0a 20 09 69 66 20 28 73 74 72 63 6d 70   0;. .if (strcmp
01b0: 28 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f 62  (TclGetString(ob
01c0: 6a 76 5b 31 5d 29 2c 20 22 2d 6e 6f 6e 65 77 6c  jv[1]), "-nonewl
01d0: 69 6e 65 22 29 20 3d 3d 20 30 29 20 7b 0a 20 09  ine") == 0) {. .
01e0: 20 20 20 20 63 68 61 6e 4f 62 6a 50 74 72 20 3d      chanObjPtr =
01f0: 20 6f 62 6a 76 5b 32 5d 3b 0a 20 09 20 20 20 20   objv[2];. .    
0200: 73 74 72 69 6e 67 20 3d 20 6f 62 6a 76 5b 33 5d  string = objv[3]
0210: 3b 0a 2d 09 7d 20 65 6c 73 65 20 7b 0a 2b 09 20  ;.-.} else {.+. 
0220: 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 20 65 6c     break;.+.} el
0230: 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 54 63  se if (strcmp(Tc
0240: 6c 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b  lGetString(objv[
0250: 32 5d 29 2c 20 22 6e 6f 6e 65 77 6c 69 6e 65 22  2]), "nonewline"
0260: 29 20 3d 3d 20 30 29 20 7b 0a 20 09 20 20 20 20  ) == 0) {. .    
0270: 2f 2a 0a 20 09 20 20 20 20 20 2a 20 54 68 65 20  /*. .     * The 
0280: 63 6f 64 65 20 62 65 6c 6f 77 20 70 72 6f 76 69  code below provi
0290: 64 65 73 20 62 61 63 6b 77 61 72 64 73 20 63 6f  des backwards co
02a0: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
02b0: 20 61 6e 20 6f 6c 64 0a 20 09 20 20 20 20 20 2a   an old. .     *
02c0: 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 63 6f 6d   form of the com
02d0: 6d 61 6e 64 20 74 68 61 74 20 69 73 20 6e 6f 20  mand that is no 
02e0: 6c 6f 6e 67 65 72 20 72 65 63 6f 6d 6d 65 6e 64  longer recommend
02f0: 65 64 20 6f 72 0a 20 09 20 20 20 20 20 2a 20 64  ed or. .     * d
0300: 6f 63 75 6d 65 6e 74 65 64 2e 0a 20 09 20 20 20  ocumented.. .   
0310: 20 20 2a 2f 0a 20 0a 2d 09 20 20 20 20 63 6f 6e    */. .-.    con
0320: 73 74 20 63 68 61 72 20 2a 61 72 67 3b 0a 2d 09  st char *arg;.-.
0330: 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 3b 0a      int length;.
0340: 2d 0a 2d 09 20 20 20 20 61 72 67 20 3d 20 54 63  -.-.    arg = Tc
0350: 6c 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62  lGetStringFromOb
0360: 6a 28 6f 62 6a 76 5b 33 5d 2c 20 26 6c 65 6e 67  j(objv[3], &leng
0370: 74 68 29 3b 0a 2d 09 20 20 20 20 69 66 20 28 28  th);.-.    if ((
0380: 6c 65 6e 67 74 68 20 21 3d 20 39 29 0a 2d 09 09  length != 9).-..
0390: 20 20 20 20 7c 7c 20 28 73 74 72 6e 63 6d 70 28      || (strncmp(
03a0: 61 72 67 2c 20 22 6e 6f 6e 65 77 6c 69 6e 65 22  arg, "nonewline"
03b0: 2c 20 28 73 69 7a 65 5f 74 29 20 6c 65 6e 67 74  , (size_t) lengt
03c0: 68 29 20 21 3d 20 30 29 29 20 7b 0a 2d 09 09 54  h) != 0)) {.-..T
03d0: 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28  cl_AppendResult(
03e0: 69 6e 74 65 72 70 2c 20 22 62 61 64 20 61 72 67  interp, "bad arg
03f0: 75 6d 65 6e 74 20 5c 22 22 2c 20 61 72 67 2c 0a  ument \"", arg,.
0400: 2d 09 09 09 22 5c 22 3a 20 73 68 6f 75 6c 64 20  -..."\": should 
0410: 62 65 20 5c 22 6e 6f 6e 65 77 6c 69 6e 65 5c 22  be \"nonewline\"
0420: 22 2c 20 4e 55 4c 4c 29 3b 0a 2d 09 09 72 65 74  ", NULL);.-..ret
0430: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2d  urn TCL_ERROR;.-
0440: 09 20 20 20 20 7d 0a 20 09 20 20 20 20 63 68 61  .    }. .    cha
0450: 6e 4f 62 6a 50 74 72 20 3d 20 6f 62 6a 76 5b 31  nObjPtr = objv[1
0460: 5d 3b 0a 20 09 20 20 20 20 73 74 72 69 6e 67 20  ];. .    string 
0470: 3d 20 6f 62 6a 76 5b 32 5d 3b 0a 2b 09 20 20 20  = objv[2];.+.   
0480: 20 62 72 65 61 6b 3b 0a 20 09 7d 0a 2d 09 6e 65   break;. .}.-.ne
0490: 77 6c 69 6e 65 20 3d 20 30 3b 0a 2d 09 62 72 65  wline = 0;.-.bre
04a0: 61 6b 3b 0a 2d 0a 2b 09 2f 2a 20 46 61 6c 6c 20  ak;.-.+./* Fall 
04b0: 74 68 72 6f 75 67 68 20 2a 2f 0a 20 20 20 20 20  through */.     
04c0: 64 65 66 61 75 6c 74 3a 0a 20 09 2f 2a 20 5b 70  default:. ./* [p
04d0: 75 74 73 5d 20 6f 72 20 5b 70 75 74 73 20 73 6f  uts] or [puts so
04e0: 6d 65 20 62 61 64 20 6e 75 6d 62 65 72 20 6f 66  me bad number of
04f0: 20 61 72 67 75 6d 65 6e 74 73 2e 2e 2e 5d 20 2a   arguments...] *
0500: 2f 0a 20 09 54 63 6c 5f 57 72 6f 6e 67 4e 75 6d  /. .Tcl_WrongNum
0510: 41 72 67 73 28 69 6e 74 65 72 70 2c 20 31 2c 20  Args(interp, 1, 
0520: 6f 62 6a 76 2c 20 22 3f 2d 6e 6f 6e 65 77 6c 69  objv, "?-nonewli
0530: 6e 65 3f 20 3f 63 68 61 6e 6e 65 6c 49 64 3f 20  ne? ?channelId? 
0540: 73 74 72 69 6e 67 22 29 3b 0a 40 40 20 2d 34 33  string");.@@ -43
0550: 34 2c 31 39 20 2b 34 32 35 2c 31 32 20 40 40 0a  4,19 +425,12 @@.
0560: 20 0a 20 20 20 20 20 74 6f 52 65 61 64 20 3d 20   .     toRead = 
0570: 2d 31 3b 0a 20 20 20 20 20 69 66 20 28 69 20 3c  -1;.     if (i <
0580: 20 6f 62 6a 63 29 20 7b 0a 2d 09 63 6f 6e 73 74   objc) {.-.const
0590: 20 63 68 61 72 20 2a 61 72 67 3b 0a 2d 0a 2d 09   char *arg;.-.-.
05a0: 61 72 67 20 3d 20 54 63 6c 47 65 74 53 74 72 69  arg = TclGetStri
05b0: 6e 67 28 6f 62 6a 76 5b 69 5d 29 3b 0a 2d 09 69  ng(objv[i]);.-.i
05c0: 66 20 28 69 73 64 69 67 69 74 28 55 43 48 41 52  f (isdigit(UCHAR
05d0: 28 61 72 67 5b 30 5d 29 29 29 20 7b 20 2f 2a 20  (arg[0]))) { /* 
05e0: 49 4e 54 4c 3a 20 64 69 67 69 74 20 2a 2f 0a 2d  INTL: digit */.-
05f0: 09 20 20 20 20 69 66 20 28 54 63 6c 47 65 74 49  .    if (TclGetI
0600: 6e 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70  ntFromObj(interp
0610: 2c 20 6f 62 6a 76 5b 69 5d 2c 20 26 74 6f 52 65  , objv[i], &toRe
0620: 61 64 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b  ad) != TCL_OK) {
0630: 0a 2d 09 09 72 65 74 75 72 6e 20 54 43 4c 5f 45  .-..return TCL_E
0640: 52 52 4f 52 3b 0a 2d 09 20 20 20 20 7d 0a 2d 09  RROR;.-.    }.-.
0650: 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d  } else if (strcm
0660: 70 28 61 72 67 2c 20 22 6e 6f 6e 65 77 6c 69 6e  p(arg, "nonewlin
0670: 65 22 29 20 3d 3d 20 30 29 20 7b 0a 2b 09 69 66  e") == 0) {.+.if
0680: 20 28 73 74 72 63 6d 70 28 54 63 6c 47 65 74 53   (strcmp(TclGetS
0690: 74 72 69 6e 67 28 6f 62 6a 76 5b 69 5d 29 2c 20  tring(objv[i]), 
06a0: 22 6e 6f 6e 65 77 6c 69 6e 65 22 29 20 3d 3d 20  "nonewline") == 
06b0: 30 29 20 7b 0a 20 09 20 20 20 20 6e 65 77 6c 69  0) {. .    newli
06c0: 6e 65 20 3d 20 31 3b 0a 2d 09 7d 20 65 6c 73 65  ne = 1;.-.} else
06d0: 20 7b 0a 2d 09 20 20 20 20 54 63 6c 5f 41 70 70   {.-.    Tcl_App
06e0: 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70  endResult(interp
06f0: 2c 20 22 62 61 64 20 61 72 67 75 6d 65 6e 74 20  , "bad argument 
0700: 5c 22 22 2c 20 61 72 67 2c 0a 2d 09 09 20 20 20  \"", arg,.-..   
0710: 20 22 5c 22 3a 20 73 68 6f 75 6c 64 20 62 65 20   "\": should be 
0720: 5c 22 6e 6f 6e 65 77 6c 69 6e 65 5c 22 22 2c 20  \"nonewline\"", 
0730: 4e 55 4c 4c 29 3b 0a 2b 09 7d 20 65 6c 73 65 20  NULL);.+.} else 
0740: 69 66 20 28 54 63 6c 47 65 74 49 6e 74 46 72 6f  if (TclGetIntFro
0750: 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a  mObj(interp, obj
0760: 76 5b 69 5d 2c 20 26 74 6f 52 65 61 64 29 20 21  v[i], &toRead) !
0770: 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 20 20  = TCL_OK) {. .  
0780: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52    return TCL_ERR
0790: 4f 52 3b 0a 2b 09 7d 20 65 6c 73 65 20 69 66 20  OR;.+.} else if 
07a0: 28 74 6f 52 65 61 64 20 3c 20 30 29 20 7b 0a 2b  (toRead < 0) {.+
07b0: 09 20 20 20 20 67 6f 74 6f 20 61 72 67 65 72 72  .    goto argerr
07c0: 6f 72 3b 0a 20 09 7d 0a 20 20 20 20 20 7d 0a 20  or;. .}.     }. 
07d0: 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 63 68  .Index: tests/ch
07e0: 61 6e 69 6f 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d  anio.test.======
07f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0800: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0810: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0820: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
0830: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
0840: 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 63  /tcl/tcl/tests/c
0850: 68 61 6e 69 6f 2e 74 65 73 74 2c 76 0a 72 65 74  hanio.test,v.ret
0860: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e  rieving revision
0870: 20 31 2e 32 36 0a 64 69 66 66 20 2d 75 20 2d 72   1.26.diff -u -r
0880: 31 2e 32 36 20 63 68 61 6e 69 6f 2e 74 65 73 74  1.26 chanio.test
0890: 0a 2d 2d 2d 20 74 65 73 74 73 2f 63 68 61 6e 69  .--- tests/chani
08a0: 6f 2e 74 65 73 74 09 32 34 20 4e 6f 76 20 32 30  o.test.24 Nov 20
08b0: 31 30 20 31 31 3a 35 36 3a 35 37 20 2d 30 30 30  10 11:56:57 -000
08c0: 30 09 31 2e 32 36 0a 2b 2b 2b 20 74 65 73 74 73  0.1.26.+++ tests
08d0: 2f 63 68 61 6e 69 6f 2e 74 65 73 74 09 36 20 4a  /chanio.test.6 J
08e0: 61 6e 20 32 30 31 31 20 31 30 3a 34 31 3a 32 39  an 2011 10:41:29
08f0: 20 2d 30 30 30 30 0a 40 40 20 2d 33 39 33 32 2c   -0000.@@ -3932,
0900: 37 20 2b 33 39 33 32 2c 37 20 40 40 0a 20 20 20  7 +3932,7 @@.   
0910: 20 20 63 68 61 6e 20 72 65 61 64 20 24 66 20 2d    chan read $f -
0920: 31 0a 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  1. } -returnCode
0930: 73 20 65 72 72 6f 72 20 2d 63 6c 65 61 6e 75 70  s error -cleanup
0940: 20 7b 0a 20 20 20 20 20 63 68 61 6e 20 63 6c 6f   {.     chan clo
0950: 73 65 20 24 66 0a 2d 7d 20 2d 72 65 73 75 6c 74  se $f.-} -result
0960: 20 7b 62 61 64 20 61 72 67 75 6d 65 6e 74 20 22   {bad argument "
0970: 2d 31 22 3a 20 73 68 6f 75 6c 64 20 62 65 20 22  -1": should be "
0980: 6e 6f 6e 65 77 6c 69 6e 65 22 7d 0a 2b 7d 20 2d  nonewline"}.+} -
0990: 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20  result {wrong # 
09a0: 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20  args: should be 
09b0: 22 63 68 61 6e 20 72 65 61 64 20 63 68 61 6e 6e  "chan read chann
09c0: 65 6c 49 64 20 3f 6e 75 6d 43 68 61 72 73 3f 22  elId ?numChars?"
09d0: 20 6f 72 20 22 63 68 61 6e 20 72 65 61 64 20 3f   or "chan read ?
09e0: 2d 6e 6f 6e 65 77 6c 69 6e 65 3f 20 63 68 61 6e  -nonewline? chan
09f0: 6e 65 6c 49 64 22 7d 0a 20 74 65 73 74 20 63 68  nelId"}. test ch
0a00: 61 6e 2d 69 6f 2d 33 32 2e 34 20 7b 54 63 6c 5f  an-io-32.4 {Tcl_
0a10: 52 65 61 64 2c 20 70 6f 73 69 74 69 76 65 20 62  Read, positive b
0a20: 79 74 65 20 63 6f 75 6e 74 7d 20 2d 62 6f 64 79  yte count} -body
0a30: 20 7b 0a 20 20 20 20 20 73 65 74 20 66 20 5b 6f   {.     set f [o
0a40: 70 65 6e 20 24 70 61 74 68 28 6c 6f 6e 67 66 69  pen $path(longfi
0a50: 6c 65 29 20 72 5d 0a 20 20 20 20 20 73 74 72 69  le) r].     stri
0a60: 6e 67 20 6c 65 6e 67 74 68 20 5b 63 68 61 6e 20  ng length [chan 
0a70: 72 65 61 64 20 24 66 20 31 30 32 34 5d 0a 49 6e  read $f 1024].In
0a80: 64 65 78 3a 20 74 65 73 74 73 2f 69 6f 2e 74 65  dex: tests/io.te
0a90: 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  st.=============
0aa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ab0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ac0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ad0: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a  ======.RCS file:
0ae0: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
0af0: 6c 2f 74 65 73 74 73 2f 69 6f 2e 74 65 73 74 2c  l/tests/io.test,
0b00: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
0b10: 69 73 69 6f 6e 20 31 2e 39 37 0a 64 69 66 66 20  ision 1.97.diff 
0b20: 2d 75 20 2d 72 31 2e 39 37 20 69 6f 2e 74 65 73  -u -r1.97 io.tes
0b30: 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 69 6f 2e 74  t.--- tests/io.t
0b40: 65 73 74 09 31 30 20 44 65 63 20 32 30 31 30 20  est.10 Dec 2010 
0b50: 31 37 3a 30 30 3a 31 32 20 2d 30 30 30 30 09 31  17:00:12 -0000.1
0b60: 2e 39 37 0a 2b 2b 2b 20 74 65 73 74 73 2f 69 6f  .97.+++ tests/io
0b70: 2e 74 65 73 74 09 36 20 4a 61 6e 20 32 30 31 31  .test.6 Jan 2011
0b80: 20 31 30 3a 34 31 3a 32 39 20 2d 30 30 30 30 0a   10:41:29 -0000.
0b90: 40 40 20 2d 33 38 35 38 2c 37 20 2b 33 38 35 38  @@ -3858,7 +3858
0ba0: 2c 37 20 40 40 0a 20 20 20 20 20 73 65 74 20 6c  ,7 @@.     set l
0bb0: 20 5b 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 72   [list [catch {r
0bc0: 65 61 64 20 24 66 20 2d 31 7d 20 6d 73 67 5d 20  ead $f -1} msg] 
0bd0: 24 6d 73 67 5d 0a 20 20 20 20 20 63 6c 6f 73 65  $msg].     close
0be0: 20 24 66 0a 20 20 20 20 20 73 65 74 20 6c 0a 2d   $f.     set l.-
0bf0: 7d 20 7b 31 20 7b 62 61 64 20 61 72 67 75 6d 65  } {1 {bad argume
0c00: 6e 74 20 22 2d 31 22 3a 20 73 68 6f 75 6c 64 20  nt "-1": should 
0c10: 62 65 20 22 6e 6f 6e 65 77 6c 69 6e 65 22 7d 7d  be "nonewline"}}
0c20: 0a 2b 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20  .+} {1 {wrong # 
0c30: 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20  args: should be 
0c40: 22 72 65 61 64 20 63 68 61 6e 6e 65 6c 49 64 20  "read channelId 
0c50: 3f 6e 75 6d 43 68 61 72 73 3f 22 20 6f 72 20 22  ?numChars?" or "
0c60: 72 65 61 64 20 3f 2d 6e 6f 6e 65 77 6c 69 6e 65  read ?-nonewline
0c70: 3f 20 63 68 61 6e 6e 65 6c 49 64 22 7d 7d 0a 20  ? channelId"}}. 
0c80: 74 65 73 74 20 69 6f 2d 33 32 2e 34 20 7b 54 63  test io-32.4 {Tc
0c90: 6c 5f 52 65 61 64 2c 20 70 6f 73 69 74 69 76 65  l_Read, positive
0ca0: 20 62 79 74 65 20 63 6f 75 6e 74 7d 20 7b 0a 20   byte count} {. 
0cb0: 20 20 20 20 73 65 74 20 66 20 5b 6f 70 65 6e 20      set f [open 
0cc0: 24 70 61 74 68 28 6c 6f 6e 67 66 69 6c 65 29 20  $path(longfile) 
0cd0: 72 5d 0a 20 20 20 20 20 73 65 74 20 78 20 5b 72  r].     set x [r
0ce0: 65 61 64 20 24 66 20 31 30 32 34 5d 0a 49 6e 64  ead $f 1024].Ind
0cf0: 65 78 3a 20 74 65 73 74 73 2f 69 6f 43 6d 64 2e  ex: tests/ioCmd.
0d00: 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  test.===========
0d10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0d20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0d30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0d40: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
0d50: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
0d60: 74 63 6c 2f 74 65 73 74 73 2f 69 6f 43 6d 64 2e  tcl/tests/ioCmd.
0d70: 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e  test,v.retrievin
0d80: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 33 0a  g revision 1.53.
0d90: 64 69 66 66 20 2d 75 20 2d 72 31 2e 35 33 20 69  diff -u -r1.53 i
0da0: 6f 43 6d 64 2e 74 65 73 74 0a 2d 2d 2d 20 74 65  oCmd.test.--- te
0db0: 73 74 73 2f 69 6f 43 6d 64 2e 74 65 73 74 09 33  sts/ioCmd.test.3
0dc0: 20 41 75 67 20 32 30 31 30 20 32 30 3a 30 36 3a   Aug 2010 20:06:
0dd0: 34 37 20 2d 30 30 30 30 09 31 2e 35 33 0a 2b 2b  47 -0000.1.53.++
0de0: 2b 20 74 65 73 74 73 2f 69 6f 43 6d 64 2e 74 65  + tests/ioCmd.te
0df0: 73 74 09 36 20 4a 61 6e 20 32 30 31 31 20 31 30  st.6 Jan 2011 10
0e00: 3a 34 31 3a 32 39 20 2d 30 30 30 30 0a 40 40 20  :41:29 -0000.@@ 
0e10: 2d 33 35 2c 37 20 2b 33 35 2c 37 20 40 40 0a 20  -35,7 +35,7 @@. 
0e20: 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72  } {1 {wrong # ar
0e30: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 70  gs: should be "p
0e40: 75 74 73 20 3f 2d 6e 6f 6e 65 77 6c 69 6e 65 3f  uts ?-nonewline?
0e50: 20 3f 63 68 61 6e 6e 65 6c 49 64 3f 20 73 74 72   ?channelId? str
0e60: 69 6e 67 22 7d 7d 0a 20 74 65 73 74 20 69 6f 63  ing"}}. test ioc
0e70: 6d 64 2d 31 2e 33 20 7b 70 75 74 73 20 63 6f 6d  md-1.3 {puts com
0e80: 6d 61 6e 64 7d 20 7b 0a 20 20 20 20 6c 69 73 74  mand} {.    list
0e90: 20 5b 63 61 74 63 68 20 7b 70 75 74 73 20 66 72   [catch {puts fr
0ea0: 6f 62 6f 7a 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20  oboz -nonewline 
0eb0: 6b 61 62 6c 6f 6f 69 65 7d 20 6d 73 67 5d 20 24  kablooie} msg] $
0ec0: 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 61  msg.-} {1 {bad a
0ed0: 72 67 75 6d 65 6e 74 20 22 6b 61 62 6c 6f 6f 69  rgument "kablooi
0ee0: 65 22 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 6e  e": should be "n
0ef0: 6f 6e 65 77 6c 69 6e 65 22 7d 7d 0a 2b 7d 20 7b  onewline"}}.+} {
0f00: 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  1 {wrong # args:
0f10: 20 73 68 6f 75 6c 64 20 62 65 20 22 70 75 74 73   should be "puts
0f20: 20 3f 2d 6e 6f 6e 65 77 6c 69 6e 65 3f 20 3f 63   ?-nonewline? ?c
0f30: 68 61 6e 6e 65 6c 49 64 3f 20 73 74 72 69 6e 67  hannelId? string
0f40: 22 7d 7d 0a 20 74 65 73 74 20 69 6f 63 6d 64 2d  "}}. test iocmd-
0f50: 31 2e 34 20 7b 70 75 74 73 20 63 6f 6d 6d 61 6e  1.4 {puts comman
0f60: 64 7d 20 7b 0a 20 20 20 20 6c 69 73 74 20 5b 63  d} {.    list [c
0f70: 61 74 63 68 20 7b 70 75 74 73 20 66 72 6f 62 6f  atch {puts frobo
0f80: 7a 20 68 65 6c 6c 6f 7d 20 6d 73 67 5d 20 24 6d  z hello} msg] $m
0f90: 73 67 0a 20 7d 20 7b 31 20 7b 63 61 6e 20 6e 6f  sg. } {1 {can no
0fa0: 74 20 66 69 6e 64 20 63 68 61 6e 6e 65 6c 20 6e  t find channel n
0fb0: 61 6d 65 64 20 22 66 72 6f 62 6f 7a 22 7d 7d 0a  amed "froboz"}}.
0fc0: 40 40 20 2d 31 33 38 2c 37 20 2b 31 33 38 2c 37  @@ -138,7 +138,7
0fd0: 20 40 40 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67   @@. } {1 {wrong
0fe0: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
0ff0: 62 65 20 22 72 65 61 64 20 63 68 61 6e 6e 65 6c  be "read channel
1000: 49 64 20 3f 6e 75 6d 43 68 61 72 73 3f 22 20 6f  Id ?numChars?" o
1010: 72 20 22 72 65 61 64 20 3f 2d 6e 6f 6e 65 77 6c  r "read ?-nonewl
1020: 69 6e 65 3f 20 63 68 61 6e 6e 65 6c 49 64 22 7d  ine? channelId"}
1030: 20 7b 54 43 4c 20 57 52 4f 4e 47 41 52 47 53 7d   {TCL WRONGARGS}
1040: 7d 0a 20 74 65 73 74 20 69 6f 63 6d 64 2d 34 2e  }. test iocmd-4.
1050: 39 20 7b 72 65 61 64 20 63 6f 6d 6d 61 6e 64 7d  9 {read command}
1060: 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61   {.     list [ca
1070: 74 63 68 20 7b 72 65 61 64 20 73 74 64 69 6e 20  tch {read stdin 
1080: 66 6f 6f 7d 20 6d 73 67 5d 20 24 6d 73 67 20 24  foo} msg] $msg $
1090: 3a 3a 65 72 72 6f 72 43 6f 64 65 0a 2d 7d 20 7b  ::errorCode.-} {
10a0: 31 20 7b 62 61 64 20 61 72 67 75 6d 65 6e 74 20  1 {bad argument 
10b0: 22 66 6f 6f 22 3a 20 73 68 6f 75 6c 64 20 62 65  "foo": should be
10c0: 20 22 6e 6f 6e 65 77 6c 69 6e 65 22 7d 20 4e 4f   "nonewline"} NO
10d0: 4e 45 7d 0a 2b 7d 20 7b 31 20 7b 65 78 70 65 63  NE}.+} {1 {expec
10e0: 74 65 64 20 69 6e 74 65 67 65 72 20 62 75 74 20  ted integer but 
10f0: 67 6f 74 20 22 66 6f 6f 22 7d 20 7b 54 43 4c 20  got "foo"} {TCL 
1100: 56 41 4c 55 45 20 4e 55 4d 42 45 52 7d 7d 0a 20  VALUE NUMBER}}. 
1110: 74 65 73 74 20 69 6f 63 6d 64 2d 34 2e 31 30 20  test iocmd-4.10 
1120: 7b 72 65 61 64 20 63 6f 6d 6d 61 6e 64 7d 20 7b  {read command} {
1130: 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  .     list [catc
1140: 68 20 7b 72 65 61 64 20 66 69 6c 65 31 30 37 7d  h {read file107}
1150: 20 6d 73 67 5d 20 24 6d 73 67 20 24 3a 3a 65 72   msg] $msg $::er
1160: 72 6f 72 43 6f 64 65 0a 20 7d 20 7b 31 20 7b 63  rorCode. } {1 {c
1170: 61 6e 20 6e 6f 74 20 66 69 6e 64 20 63 68 61 6e  an not find chan
1180: 6e 65 6c 20 6e 61 6d 65 64 20 22 66 69 6c 65 31  nel named "file1
1190: 30 37 22 7d 20 7b 54 43 4c 20 4c 4f 4f 4b 55 50  07"} {TCL LOOKUP
11a0: 20 43 48 41 4e 4e 45 4c 20 66 69 6c 65 31 30 37   CHANNEL file107
11b0: 7d 7d 0a                                         }}.