File: towlower.c

package info (click to toggle)
dictd 1.13.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 3,920 kB
  • sloc: ansic: 12,523; sh: 4,406; yacc: 512; makefile: 442; cpp: 277; lex: 256; perl: 175; awk: 12
file content (212 lines) | stat: -rw-r--r-- 10,525 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
#include "dictP.h"

static const wint_t char_from [] = {
    65,    66,    67,    68,    69,    70,    71,
    72,    73,    74,    75,    76,    77,    78,    79,
    80,    81,    82,    83,    84,    85,    86,    87,
    88,    89,    90,   192,   193,   194,   195,   196,
   197,   198,   199,   200,   201,   202,   203,   204,
   205,   206,   207,   208,   209,   210,   211,   212,
   213,   214,   216,   217,   218,   219,   220,   221,
   222,   256,   258,   260,   262,   264,   266,   268,
   270,   272,   274,   276,   278,   280,   282,   284,
   286,   288,   290,   292,   294,   296,   298,   300,
   302,   304,   306,   308,   310,   313,   315,   317,
   319,   321,   323,   325,   327,   330,   332,   334,
   336,   338,   340,   342,   344,   346,   348,   350,
   352,   354,   356,   358,   360,   362,   364,   366,
   368,   370,   372,   374,   376,   377,   379,   381,
   385,   386,   388,   390,   391,   393,   394,   395,
   398,   399,   400,   401,   403,   404,   406,   407,
   408,   412,   413,   415,   416,   418,   420,   422,
   423,   425,   428,   430,   431,   433,   434,   435,
   437,   439,   440,   444,   452,   453,   455,   456,
   458,   459,   461,   463,   465,   467,   469,   471,
   473,   475,   478,   480,   482,   484,   486,   488,
   490,   492,   494,   497,   498,   500,   502,   503,
   504,   506,   508,   510,   512,   514,   516,   518,
   520,   522,   524,   526,   528,   530,   532,   534,
   536,   538,   540,   542,   546,   548,   550,   552,
   554,   556,   558,   560,   562,   902,   904,   905,
   906,   908,   910,   911,   913,   914,   915,   916,
   917,   918,   919,   920,   921,   922,   923,   924,
   925,   926,   927,   928,   929,   931,   932,   933,
   934,   935,   936,   937,   938,   939,   986,   988,
   990,   992,   994,   996,   998,  1000,  1002,  1004,
  1006,  1012,  1024,  1025,  1026,  1027,  1028,  1029,
  1030,  1031,  1032,  1033,  1034,  1035,  1036,  1037,
  1038,  1039,  1040,  1041,  1042,  1043,  1044,  1045,
  1046,  1047,  1048,  1049,  1050,  1051,  1052,  1053,
  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1061,
  1062,  1063,  1064,  1065,  1066,  1067,  1068,  1069,
  1070,  1071,  1120,  1122,  1124,  1126,  1128,  1130,
  1132,  1134,  1136,  1138,  1140,  1142,  1144,  1146,
  1148,  1150,  1152,  1164,  1166,  1168,  1170,  1172,
  1174,  1176,  1178,  1180,  1182,  1184,  1186,  1188,
  1190,  1192,  1194,  1196,  1198,  1200,  1202,  1204,
  1206,  1208,  1210,  1212,  1214,  1217,  1219,  1223,
  1227,  1232,  1234,  1236,  1238,  1240,  1242,  1244,
  1246,  1248,  1250,  1252,  1254,  1256,  1258,  1260,
  1262,  1264,  1266,  1268,  1272,  1329,  1330,  1331,
  1332,  1333,  1334,  1335,  1336,  1337,  1338,  1339,
  1340,  1341,  1342,  1343,  1344,  1345,  1346,  1347,
  1348,  1349,  1350,  1351,  1352,  1353,  1354,  1355,
  1356,  1357,  1358,  1359,  1360,  1361,  1362,  1363,
  1364,  1365,  1366,  7680,  7682,  7684,  7686,  7688,
  7690,  7692,  7694,  7696,  7698,  7700,  7702,  7704,
  7706,  7708,  7710,  7712,  7714,  7716,  7718,  7720,
  7722,  7724,  7726,  7728,  7730,  7732,  7734,  7736,
  7738,  7740,  7742,  7744,  7746,  7748,  7750,  7752,
  7754,  7756,  7758,  7760,  7762,  7764,  7766,  7768,
  7770,  7772,  7774,  7776,  7778,  7780,  7782,  7784,
  7786,  7788,  7790,  7792,  7794,  7796,  7798,  7800,
  7802,  7804,  7806,  7808,  7810,  7812,  7814,  7816,
  7818,  7820,  7822,  7824,  7826,  7828,  7840,  7842,
  7844,  7846,  7848,  7850,  7852,  7854,  7856,  7858,
  7860,  7862,  7864,  7866,  7868,  7870,  7872,  7874,
  7876,  7878,  7880,  7882,  7884,  7886,  7888,  7890,
  7892,  7894,  7896,  7898,  7900,  7902,  7904,  7906,
  7908,  7910,  7912,  7914,  7916,  7918,  7920,  7922,
  7924,  7926,  7928,  7944,  7945,  7946,  7947,  7948,
  7949,  7950,  7951,  7960,  7961,  7962,  7963,  7964,
  7965,  7976,  7977,  7978,  7979,  7980,  7981,  7982,
  7983,  7992,  7993,  7994,  7995,  7996,  7997,  7998,
  7999,  8008,  8009,  8010,  8011,  8012,  8013,  8025,
  8027,  8029,  8031,  8040,  8041,  8042,  8043,  8044,
  8045,  8046,  8047,  8072,  8073,  8074,  8075,  8076,
  8077,  8078,  8079,  8088,  8089,  8090,  8091,  8092,
  8093,  8094,  8095,  8104,  8105,  8106,  8107,  8108,
  8109,  8110,  8111,  8120,  8121,  8122,  8123,  8124,
  8136,  8137,  8138,  8139,  8140,  8152,  8153,  8154,
  8155,  8168,  8169,  8170,  8171,  8172,  8184,  8185,
  8186,  8187,  8188,  8486,  8490,  8491,  8544,  8545,
  8546,  8547,  8548,  8549,  8550,  8551,  8552,  8553,
  8554,  8555,  8556,  8557,  8558,  8559,  9398,  9399,
  9400,  9401,  9402,  9403,  9404,  9405,  9406,  9407,
  9408,  9409,  9410,  9411,  9412,  9413,  9414,  9415,
  9416,  9417,  9418,  9419,  9420,  9421,  9422,  9423,
 65313, 65314, 65315, 65316, 65317, 65318, 65319, 65320,
 65321, 65322, 65323, 65324, 65325, 65326, 65327, 65328,
 65329, 65330, 65331, 65332, 65333, 65334, 65335, 65336,
 65337, 65338,
};

static wint_t char_to [] = {
    97,    98,    99,   100,   101,   102,   103,
   104,   105,   106,   107,   108,   109,   110,   111,
   112,   113,   114,   115,   116,   117,   118,   119,
   120,   121,   122,   224,   225,   226,   227,   228,
   229,   230,   231,   232,   233,   234,   235,   236,
   237,   238,   239,   240,   241,   242,   243,   244,
   245,   246,   248,   249,   250,   251,   252,   253,
   254,   257,   259,   261,   263,   265,   267,   269,
   271,   273,   275,   277,   279,   281,   283,   285,
   287,   289,   291,   293,   295,   297,   299,   301,
   303,   105,   307,   309,   311,   314,   316,   318,
   320,   322,   324,   326,   328,   331,   333,   335,
   337,   339,   341,   343,   345,   347,   349,   351,
   353,   355,   357,   359,   361,   363,   365,   367,
   369,   371,   373,   375,   255,   378,   380,   382,
   595,   387,   389,   596,   392,   598,   599,   396,
   477,   601,   603,   402,   608,   611,   617,   616,
   409,   623,   626,   629,   417,   419,   421,   640,
   424,   643,   429,   648,   432,   650,   651,   436,
   438,   658,   441,   445,   454,   454,   457,   457,
   460,   460,   462,   464,   466,   468,   470,   472,
   474,   476,   479,   481,   483,   485,   487,   489,
   491,   493,   495,   499,   499,   501,   405,   447,
   505,   507,   509,   511,   513,   515,   517,   519,
   521,   523,   525,   527,   529,   531,   533,   535,
   537,   539,   541,   543,   547,   549,   551,   553,
   555,   557,   559,   561,   563,   940,   941,   942,
   943,   972,   973,   974,   945,   946,   947,   948,
   949,   950,   951,   952,   953,   954,   955,   956,
   957,   958,   959,   960,   961,   963,   964,   965,
   966,   967,   968,   969,   970,   971,   987,   989,
   991,   993,   995,   997,   999,  1001,  1003,  1005,
  1007,   952,  1104,  1105,  1106,  1107,  1108,  1109,
  1110,  1111,  1112,  1113,  1114,  1115,  1116,  1117,
  1118,  1119,  1072,  1073,  1074,  1075,  1076,  1077,
  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,
  1086,  1087,  1088,  1089,  1090,  1091,  1092,  1093,
  1094,  1095,  1096,  1097,  1098,  1099,  1100,  1101,
  1102,  1103,  1121,  1123,  1125,  1127,  1129,  1131,
  1133,  1135,  1137,  1139,  1141,  1143,  1145,  1147,
  1149,  1151,  1153,  1165,  1167,  1169,  1171,  1173,
  1175,  1177,  1179,  1181,  1183,  1185,  1187,  1189,
  1191,  1193,  1195,  1197,  1199,  1201,  1203,  1205,
  1207,  1209,  1211,  1213,  1215,  1218,  1220,  1224,
  1228,  1233,  1235,  1237,  1239,  1241,  1243,  1245,
  1247,  1249,  1251,  1253,  1255,  1257,  1259,  1261,
  1263,  1265,  1267,  1269,  1273,  1377,  1378,  1379,
  1380,  1381,  1382,  1383,  1384,  1385,  1386,  1387,
  1388,  1389,  1390,  1391,  1392,  1393,  1394,  1395,
  1396,  1397,  1398,  1399,  1400,  1401,  1402,  1403,
  1404,  1405,  1406,  1407,  1408,  1409,  1410,  1411,
  1412,  1413,  1414,  7681,  7683,  7685,  7687,  7689,
  7691,  7693,  7695,  7697,  7699,  7701,  7703,  7705,
  7707,  7709,  7711,  7713,  7715,  7717,  7719,  7721,
  7723,  7725,  7727,  7729,  7731,  7733,  7735,  7737,
  7739,  7741,  7743,  7745,  7747,  7749,  7751,  7753,
  7755,  7757,  7759,  7761,  7763,  7765,  7767,  7769,
  7771,  7773,  7775,  7777,  7779,  7781,  7783,  7785,
  7787,  7789,  7791,  7793,  7795,  7797,  7799,  7801,
  7803,  7805,  7807,  7809,  7811,  7813,  7815,  7817,
  7819,  7821,  7823,  7825,  7827,  7829,  7841,  7843,
  7845,  7847,  7849,  7851,  7853,  7855,  7857,  7859,
  7861,  7863,  7865,  7867,  7869,  7871,  7873,  7875,
  7877,  7879,  7881,  7883,  7885,  7887,  7889,  7891,
  7893,  7895,  7897,  7899,  7901,  7903,  7905,  7907,
  7909,  7911,  7913,  7915,  7917,  7919,  7921,  7923,
  7925,  7927,  7929,  7936,  7937,  7938,  7939,  7940,
  7941,  7942,  7943,  7952,  7953,  7954,  7955,  7956,
  7957,  7968,  7969,  7970,  7971,  7972,  7973,  7974,
  7975,  7984,  7985,  7986,  7987,  7988,  7989,  7990,
  7991,  8000,  8001,  8002,  8003,  8004,  8005,  8017,
  8019,  8021,  8023,  8032,  8033,  8034,  8035,  8036,
  8037,  8038,  8039,  8064,  8065,  8066,  8067,  8068,
  8069,  8070,  8071,  8080,  8081,  8082,  8083,  8084,
  8085,  8086,  8087,  8096,  8097,  8098,  8099,  8100,
  8101,  8102,  8103,  8112,  8113,  8048,  8049,  8115,
  8050,  8051,  8052,  8053,  8131,  8144,  8145,  8054,
  8055,  8160,  8161,  8058,  8059,  8165,  8056,  8057,
  8060,  8061,  8179,   969,   107,   229,  8560,  8561,
  8562,  8563,  8564,  8565,  8566,  8567,  8568,  8569,
  8570,  8571,  8572,  8573,  8574,  8575,  9424,  9425,
  9426,  9427,  9428,  9429,  9430,  9431,  9432,  9433,
  9434,  9435,  9436,  9437,  9438,  9439,  9440,  9441,
  9442,  9443,  9444,  9445,  9446,  9447,  9448,  9449,
 65345, 65346, 65347, 65348, 65349, 65350, 65351, 65352,
 65353, 65354, 65355, 65356, 65357, 65358, 65359, 65360,
 65361, 65362, 65363, 65364, 65365, 65366, 65367, 65368,
 65369, 65370,
};

#define ARRAY_SIZE (sizeof (char_from) / sizeof (char_from [0]))

extern wint_t towlower__ (wint_t wc);

wint_t towlower__ (wint_t wc)
{
   const wint_t *l = char_from;
   const wint_t *r = char_from + ARRAY_SIZE;
   const wint_t *s = NULL;

   while (l < r) {
      s = l + ((r - l) >> 1);

      if (*s < wc){
	 l = s + 1;
      }else{
	 r = s;
      }
   }

   if (l == char_from + ARRAY_SIZE)
      return wc;

   if (wc == *l)
      return char_to [l - char_from];
   else
      return wc;
}