Tcl Source Code

Hex Artifact Content
Login

Artifact 8b2c99c16517b67db88d65d3de6e4ee4404c3abaa6917141737750774f98e70e:

Attachment "0001-unix-Fix-encoding-system-in-ISO-8859-1-locales.patch" to ticket [5fca83d78c] added by bhaible 2024-07-01 18:35:40. (unpublished)
0000: 46 72 6f 6d 20 30 38 35 32 62 35 37 38 39 37 61  From 0852b57897a
0010: 35 34 36 37 61 66 34 66 34 62 37 30 36 38 38 66  5467af4f4b70688f
0020: 61 32 63 61 63 63 61 63 36 32 39 36 66 20 4d 6f  a2caccac6296f Mo
0030: 6e 20 53 65 70 20 31 37 20 30 30 3a 30 30 3a 30  n Sep 17 00:00:0
0040: 30 20 32 30 30 31 0a 46 72 6f 6d 3a 20 42 72 75  0 2001.From: Bru
0050: 6e 6f 20 48 61 69 62 6c 65 20 3c 62 72 75 6e 6f  no Haible <bruno
0060: 40 63 6c 69 73 70 2e 6f 72 67 3e 0a 44 61 74 65  @clisp.org>.Date
0070: 3a 20 4d 6f 6e 2c 20 31 20 4a 75 6c 20 32 30 32  : Mon, 1 Jul 202
0080: 34 20 32 30 3a 32 36 3a 35 30 20 2b 30 32 30 30  4 20:26:50 +0200
0090: 0a 53 75 62 6a 65 63 74 3a 20 5b 50 41 54 43 48  .Subject: [PATCH
00a0: 5d 20 75 6e 69 78 3a 20 46 69 78 20 5b 65 6e 63  ] unix: Fix [enc
00b0: 6f 64 69 6e 67 20 73 79 73 74 65 6d 5d 20 69 6e  oding system] in
00c0: 20 49 53 4f 2d 38 38 35 39 2d 31 20 6c 6f 63 61   ISO-8859-1 loca
00d0: 6c 65 73 0a 0a 2a 20 75 6e 69 78 2f 74 63 6c 55  les..* unix/tclU
00e0: 6e 69 78 49 6e 69 74 2e 63 20 28 53 65 61 72 63  nixInit.c (Searc
00f0: 68 4b 6e 6f 77 6e 45 6e 63 6f 64 69 6e 67 73 29  hKnownEncodings)
0100: 3a 20 46 69 78 20 6c 6f 67 69 63 20 62 75 67 20  : Fix logic bug 
0110: 69 6e 20 62 69 6e 61 72 79 20 73 65 61 72 63 68  in binary search
0120: 2e 0a 2d 2d 2d 0a 20 75 6e 69 78 2f 74 63 6c 55  ..---. unix/tclU
0130: 6e 69 78 49 6e 69 74 2e 63 20 7c 20 36 20 2b 2b  nixInit.c | 6 ++
0140: 2b 2b 2b 2d 0a 20 31 20 66 69 6c 65 20 63 68 61  +++-. 1 file cha
0150: 6e 67 65 64 2c 20 35 20 69 6e 73 65 72 74 69 6f  nged, 5 insertio
0160: 6e 73 28 2b 29 2c 20 31 20 64 65 6c 65 74 69 6f  ns(+), 1 deletio
0170: 6e 28 2d 29 0a 0a 64 69 66 66 20 2d 2d 67 69 74  n(-)..diff --git
0180: 20 61 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 78 49   a/unix/tclUnixI
0190: 6e 69 74 2e 63 20 62 2f 75 6e 69 78 2f 74 63 6c  nit.c b/unix/tcl
01a0: 55 6e 69 78 49 6e 69 74 2e 63 0a 69 6e 64 65 78  UnixInit.c.index
01b0: 20 36 33 31 36 37 63 36 63 36 38 2e 2e 39 66 31   63167c6c68..9f1
01c0: 39 30 37 35 36 38 32 20 31 30 30 36 34 34 0a 2d  9075682 100644.-
01d0: 2d 2d 20 61 2f 75 6e 69 78 2f 74 63 6c 55 6e 69  -- a/unix/tclUni
01e0: 78 49 6e 69 74 2e 63 0a 2b 2b 2b 20 62 2f 75 6e  xInit.c.+++ b/un
01f0: 69 78 2f 74 63 6c 55 6e 69 78 49 6e 69 74 2e 63  ix/tclUnixInit.c
0200: 0a 40 40 20 2d 35 39 37 2c 31 37 20 2b 35 39 37  .@@ -597,17 +597
0210: 2c 32 31 20 40 40 20 53 65 61 72 63 68 4b 6e 6f  ,21 @@ SearchKno
0220: 77 6e 45 6e 63 6f 64 69 6e 67 73 28 0a 20 20 20  wnEncodings(.   
0230: 20 20 69 6e 74 20 6c 65 66 74 20 3d 20 30 3b 0a    int left = 0;.
0240: 20 20 20 20 20 69 6e 74 20 72 69 67 68 74 20 3d       int right =
0250: 20 73 69 7a 65 6f 66 28 6c 6f 63 61 6c 65 54 61   sizeof(localeTa
0260: 62 6c 65 29 2f 73 69 7a 65 6f 66 28 4c 6f 63 61  ble)/sizeof(Loca
0270: 6c 65 54 61 62 6c 65 29 3b 0a 20 0a 2b 20 20 20  leTable);. .+   
0280: 20 2f 2a 20 48 65 72 65 2c 20 73 65 61 72 63 68   /* Here, search
0290: 20 66 6f 72 20 69 20 69 6e 20 74 68 65 20 69 6e   for i in the in
02a0: 74 65 72 76 61 6c 20 6c 65 66 74 20 3c 3d 20 69  terval left <= i
02b0: 20 3c 20 72 69 67 68 74 2e 20 2a 2f 0a 20 20 20   < right. */.   
02c0: 20 20 77 68 69 6c 65 20 28 6c 65 66 74 20 3c 20    while (left < 
02d0: 72 69 67 68 74 29 20 7b 0a 20 09 69 6e 74 20 74  right) {. .int t
02e0: 65 73 74 20 3d 20 28 6c 65 66 74 20 2b 20 72 69  est = (left + ri
02f0: 67 68 74 29 2f 32 3b 0a 20 09 69 6e 74 20 63 6f  ght)/2;. .int co
0300: 64 65 20 3d 20 73 74 72 63 6d 70 28 6c 6f 63 61  de = strcmp(loca
0310: 6c 65 54 61 62 6c 65 5b 74 65 73 74 5d 2e 6c 61  leTable[test].la
0320: 6e 67 2c 20 65 6e 63 6f 64 69 6e 67 29 3b 0a 20  ng, encoding);. 
0330: 0a 20 09 69 66 20 28 63 6f 64 65 20 3d 3d 20 30  . .if (code == 0
0340: 29 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 46 6f 75  ) {.+.    /* Fou
0350: 6e 64 20 69 74 20 61 74 20 69 20 3d 3d 20 74 65  nd it at i == te
0360: 73 74 2e 20 20 2a 2f 0a 20 09 20 20 20 20 72 65  st.  */. .    re
0370: 74 75 72 6e 20 6c 6f 63 61 6c 65 54 61 62 6c 65  turn localeTable
0380: 5b 74 65 73 74 5d 2e 65 6e 63 6f 64 69 6e 67 3b  [test].encoding;
0390: 0a 20 09 7d 0a 20 09 69 66 20 28 63 6f 64 65 20  . .}. .if (code 
03a0: 3c 20 30 29 20 7b 0a 2b 09 20 20 20 20 2f 2a 20  < 0) {.+.    /* 
03b0: 52 65 73 74 72 69 63 74 20 74 68 65 20 73 65 61  Restrict the sea
03c0: 72 63 68 20 74 6f 20 74 68 65 20 69 6e 74 65 72  rch to the inter
03d0: 76 61 6c 20 74 65 73 74 20 3c 20 69 20 3c 20 72  val test < i < r
03e0: 69 67 68 74 2e 20 2a 2f 0a 20 09 20 20 20 20 6c  ight. */. .    l
03f0: 65 66 74 20 3d 20 74 65 73 74 2b 31 3b 0a 20 09  eft = test+1;. .
0400: 7d 20 65 6c 73 65 20 7b 0a 2d 09 20 20 20 20 72  } else {.-.    r
0410: 69 67 68 74 20 3d 20 74 65 73 74 2d 31 3b 0a 2b  ight = test-1;.+
0420: 09 20 20 20 20 2f 2a 20 52 65 73 74 72 69 63 74  .    /* Restrict
0430: 20 74 68 65 20 73 65 61 72 63 68 20 74 6f 20 74   the search to t
0440: 68 65 20 69 6e 74 65 72 76 61 6c 20 6c 65 66 74  he interval left
0450: 20 3c 3d 20 69 20 3c 20 74 65 73 74 2e 20 2a 2f   <= i < test. */
0460: 0a 2b 09 20 20 20 20 72 69 67 68 74 20 3d 20 74  .+.    right = t
0470: 65 73 74 3b 0a 20 09 7d 0a 20 20 20 20 20 7d 0a  est;. .}.     }.
0480: 20 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c       return NULL
0490: 3b 0a 2d 2d 20 0a 32 2e 33 34 2e 31 0a 0a        ;.-- .2.34.1..