Tcl Source Code

Hex Artifact Content
Login

Artifact 8840d4b3138789b749307c303157043650f77d92469ba6b38bc18d59341cb639:

Attachment "parseargs.diff" to ticket [beecfca5fd] added by emiliano 2025-04-21 13:12: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 6e 64 65 78 4f 62 6a 2e 63 0a 3d 3d 3d  clIndexObj.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 3d 3d 0a  ===============.
0060: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 49  --- generic/tclI
0070: 6e 64 65 78 4f 62 6a 2e 63 0a 2b 2b 2b 20 67 65  ndexObj.c.+++ ge
0080: 6e 65 72 69 63 2f 74 63 6c 49 6e 64 65 78 4f 62  neric/tclIndexOb
0090: 6a 2e 63 0a 40 40 20 2d 31 30 38 38 2c 31 31 20  j.c.@@ -1088,11 
00a0: 2b 31 30 38 38 2c 31 32 20 40 40 0a 20 09 20 20  +1088,12 @@. .  
00b0: 20 20 20 2a 20 70 72 65 66 65 72 73 20 61 6e 20     * prefers an 
00c0: 65 72 72 6f 72 20 74 6f 20 62 65 20 72 65 67 69  error to be regi
00d0: 73 74 65 72 65 64 2e 0a 20 09 20 20 20 20 20 2a  stered.. .     *
00e0: 2f 0a 20 0a 20 09 20 20 20 20 69 66 20 28 72 65  /. . .    if (re
00f0: 6d 4f 62 6a 76 20 3d 3d 20 4e 55 4c 4c 29 20 7b  mObjv == NULL) {
0100: 0a 20 09 09 54 63 6c 5f 53 65 74 4f 62 6a 52 65  . ..Tcl_SetObjRe
0110: 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 54 63 6c  sult(interp, Tcl
0120: 5f 4f 62 6a 50 72 69 6e 74 66 28 0a 2d 09 09 09  _ObjPrintf(.-...
0130: 22 75 6e 72 65 63 6f 67 6e 69 7a 65 64 20 61 72  "unrecognized ar
0140: 67 75 6d 65 6e 74 20 5c 22 25 73 5c 22 22 2c 20  gument \"%s\"", 
0150: 73 74 72 29 29 3b 0a 2b 09 09 09 22 75 6e 72 65  str));.+..."unre
0160: 63 6f 67 6e 69 7a 65 64 20 61 72 67 75 6d 65 6e  cognized argumen
0170: 74 20 5c 22 25 73 5c 22 5c 6e 22 2c 20 73 74 72  t \"%s\"\n", str
0180: 29 29 3b 0a 2b 09 09 50 72 69 6e 74 55 73 61 67  ));.+..PrintUsag
0190: 65 28 69 6e 74 65 72 70 2c 20 61 72 67 54 61 62  e(interp, argTab
01a0: 6c 65 29 3b 0a 20 09 09 67 6f 74 6f 20 65 72 72  le);. ..goto err
01b0: 6f 72 3b 0a 20 09 20 20 20 20 7d 0a 20 0a 20 09  or;. .    }. . .
01c0: 20 20 20 20 64 73 74 49 6e 64 65 78 2b 2b 3b 09      dstIndex++;.
01d0: 09 2f 2a 20 54 68 69 73 20 61 72 67 75 6d 65 6e  ./* This argumen
01e0: 74 20 69 73 20 6e 6f 77 20 68 61 6e 64 6c 65 64  t is now handled
01f0: 20 2a 2f 0a 20 09 20 20 20 20 6c 65 66 74 6f 76   */. .    leftov
0200: 65 72 73 5b 6e 72 65 6d 2b 2b 5d 20 3d 20 63 75  ers[nrem++] = cu
0210: 72 41 72 67 3b 0a 40 40 20 2d 31 32 39 33 2c 31  rArg;.@@ -1293,1
0220: 31 20 2b 31 32 39 34 2c 31 32 20 40 40 0a 20 0a  1 +1294,12 @@. .
0230: 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20       /*.      * 
0240: 4e 6f 77 20 61 64 64 20 74 68 65 20 6f 70 74 69  Now add the opti
0250: 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20  on information, 
0260: 77 69 74 68 20 70 72 65 74 74 79 2d 70 72 69 6e  with pretty-prin
0270: 74 69 6e 67 2e 0a 20 20 20 20 20 20 2a 2f 0a 20  ting..      */. 
0280: 0a 2d 20 20 20 20 6d 73 67 20 3d 20 54 63 6c 5f  .-    msg = Tcl_
0290: 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 43 6f  NewStringObj("Co
02a0: 6d 6d 61 6e 64 2d 73 70 65 63 69 66 69 63 20 6f  mmand-specific o
02b0: 70 74 69 6f 6e 73 3a 22 2c 20 54 43 4c 5f 49 4e  ptions:", TCL_IN
02c0: 44 45 58 5f 4e 4f 4e 45 29 3b 0a 2b 20 20 20 20  DEX_NONE);.+    
02d0: 6d 73 67 20 3d 20 54 63 6c 5f 47 65 74 4f 62 6a  msg = Tcl_GetObj
02e0: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a  Result(interp);.
02f0: 2b 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 54  +    Tcl_AppendT
0300: 6f 4f 62 6a 28 6d 73 67 2c 20 22 43 6f 6d 6d 61  oObj(msg, "Comma
0310: 6e 64 2d 73 70 65 63 69 66 69 63 20 6f 70 74 69  nd-specific opti
0320: 6f 6e 73 3a 22 2c 20 54 43 4c 5f 49 4e 44 45 58  ons:", TCL_INDEX
0330: 5f 4e 4f 4e 45 29 3b 0a 20 20 20 20 20 66 6f 72  _NONE);.     for
0340: 20 28 69 6e 66 6f 50 74 72 20 3d 20 61 72 67 54   (infoPtr = argT
0350: 61 62 6c 65 3b 20 69 6e 66 6f 50 74 72 2d 3e 74  able; infoPtr->t
0360: 79 70 65 20 21 3d 20 54 43 4c 5f 41 52 47 56 5f  ype != TCL_ARGV_
0370: 45 4e 44 3b 20 69 6e 66 6f 50 74 72 2b 2b 29 20  END; infoPtr++) 
0380: 7b 0a 20 09 69 66 20 28 28 69 6e 66 6f 50 74 72  {. .if ((infoPtr
0390: 2d 3e 74 79 70 65 20 3d 3d 20 54 43 4c 5f 41 52  ->type == TCL_AR
03a0: 47 56 5f 48 45 4c 50 29 20 26 26 20 28 69 6e 66  GV_HELP) && (inf
03b0: 6f 50 74 72 2d 3e 6b 65 79 53 74 72 20 3d 3d 20  oPtr->keyStr == 
03c0: 4e 55 4c 4c 29 29 20 7b 0a 20 09 20 20 20 20 54  NULL)) {. .    T
03d0: 63 6c 5f 41 70 70 65 6e 64 50 72 69 6e 74 66 54  cl_AppendPrintfT
03e0: 6f 4f 62 6a 28 6d 73 67 2c 20 22 5c 6e 25 73 22  oObj(msg, "\n%s"
03f0: 2c 20 69 6e 66 6f 50 74 72 2d 3e 68 65 6c 70 53  , infoPtr->helpS
0400: 74 72 29 3b 0a 20 09 20 20 20 20 63 6f 6e 74 69  tr);. .    conti
0410: 6e 75 65 3b 0a 20 09 7d 0a 40 40 20 2d 31 33 33  nue;. .}.@@ -133
0420: 32 2c 31 31 20 2b 31 33 33 34 2c 31 30 20 40 40  2,11 +1334,10 @@
0430: 0a 20 09 7d 0a 20 09 64 65 66 61 75 6c 74 3a 0a  . .}. .default:.
0440: 20 09 20 20 20 20 62 72 65 61 6b 3b 0a 20 09 7d   .    break;. .}
0450: 0a 20 20 20 20 20 7d 0a 2d 20 20 20 20 54 63 6c  .     }.-    Tcl
0460: 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e  _SetObjResult(in
0470: 74 65 72 70 2c 20 6d 73 67 29 3b 0a 20 7d 0a 20  terp, msg);. }. 
0480: 0c 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d  .. /*.  *-------
0490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
04a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
04b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
04c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
04d0: 20 20 2a 0a 0a                                     *..