xorriso  1.5.4.pl02
About: GNU xorriso creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions. It is suitable for incremental data backup and for production of bootable ISO 9660 images. GNU xorriso is a statical compilation of the libraries libburn, libisofs, libisoburn, and libjte.
  Fossies Dox: xorriso-1.5.4.pl02.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

hfsplus_classes_ts_test.c
Go to the documentation of this file.
1 /*
2 cc -g -o demo/classes libisofs/hfsplus_classes_ts_test.c
3 */
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdio.h>
7 
8 #ifdef HAVE_CONFIG_H
9 #include "../config.h"
10 #endif
11 
12 #include "hfsplus.h"
13 
14 /* Based on Unicode 3.2.0. */
15 
16 static uint16_t page03[256] = {
17  [0x00] = 0x230,
18  [0x01] = 0x230,
19  [0x02] = 0x230,
20  [0x03] = 0x230,
21  [0x04] = 0x230,
22  [0x05] = 0x230,
23  [0x06] = 0x230,
24  [0x07] = 0x230,
25  [0x08] = 0x230,
26  [0x09] = 0x230,
27  [0x0a] = 0x230,
28  [0x0b] = 0x230,
29  [0x0c] = 0x230,
30  [0x0d] = 0x230,
31  [0x0e] = 0x230,
32  [0x0f] = 0x230,
33  [0x10] = 0x230,
34  [0x11] = 0x230,
35  [0x12] = 0x230,
36  [0x13] = 0x230,
37  [0x14] = 0x230,
38  [0x15] = 0x232,
39  [0x16] = 0x220,
40  [0x17] = 0x220,
41  [0x18] = 0x220,
42  [0x19] = 0x220,
43  [0x1a] = 0x232,
44  [0x1b] = 0x216,
45  [0x1c] = 0x220,
46  [0x1d] = 0x220,
47  [0x1e] = 0x220,
48  [0x1f] = 0x220,
49  [0x20] = 0x220,
50  [0x21] = 0x202,
51  [0x22] = 0x202,
52  [0x23] = 0x220,
53  [0x24] = 0x220,
54  [0x25] = 0x220,
55  [0x26] = 0x220,
56  [0x27] = 0x202,
57  [0x28] = 0x202,
58  [0x29] = 0x220,
59  [0x2a] = 0x220,
60  [0x2b] = 0x220,
61  [0x2c] = 0x220,
62  [0x2d] = 0x220,
63  [0x2e] = 0x220,
64  [0x2f] = 0x220,
65  [0x30] = 0x220,
66  [0x31] = 0x220,
67  [0x32] = 0x220,
68  [0x33] = 0x220,
69  [0x34] = 0x1,
70  [0x35] = 0x1,
71  [0x36] = 0x1,
72  [0x37] = 0x1,
73  [0x38] = 0x1,
74  [0x39] = 0x220,
75  [0x3a] = 0x220,
76  [0x3b] = 0x220,
77  [0x3c] = 0x220,
78  [0x3d] = 0x230,
79  [0x3e] = 0x230,
80  [0x3f] = 0x230,
81  [0x40] = 0x230,
82  [0x41] = 0x230,
83  [0x42] = 0x230,
84  [0x43] = 0x230,
85  [0x44] = 0x230,
86  [0x45] = 0x240,
87  [0x46] = 0x230,
88  [0x47] = 0x220,
89  [0x48] = 0x220,
90  [0x49] = 0x220,
91  [0x4a] = 0x230,
92  [0x4b] = 0x230,
93  [0x4c] = 0x230,
94  [0x4d] = 0x220,
95  [0x4e] = 0x220,
96  [0x60] = 0x234,
97  [0x61] = 0x234,
98  [0x62] = 0x233,
99  [0x63] = 0x230,
100  [0x64] = 0x230,
101  [0x65] = 0x230,
102  [0x66] = 0x230,
103  [0x67] = 0x230,
104  [0x68] = 0x230,
105  [0x69] = 0x230,
106  [0x6a] = 0x230,
107  [0x6b] = 0x230,
108  [0x6c] = 0x230,
109  [0x6d] = 0x230,
110  [0x6e] = 0x230,
111  [0x6f] = 0x230,
112 };
113 
114 static uint16_t page04[256] = {
115  [0x83] = 0x230,
116  [0x84] = 0x230,
117  [0x85] = 0x230,
118  [0x86] = 0x230,
119 };
120 
121 static uint16_t page05[256] = {
122  [0x91] = 0x220,
123  [0x92] = 0x230,
124  [0x93] = 0x230,
125  [0x94] = 0x230,
126  [0x95] = 0x230,
127  [0x96] = 0x220,
128  [0x97] = 0x230,
129  [0x98] = 0x230,
130  [0x99] = 0x230,
131  [0x9a] = 0x222,
132  [0x9b] = 0x220,
133  [0x9c] = 0x230,
134  [0x9d] = 0x230,
135  [0x9e] = 0x230,
136  [0x9f] = 0x230,
137  [0xa0] = 0x230,
138  [0xa1] = 0x230,
139  [0xa3] = 0x220,
140  [0xa4] = 0x220,
141  [0xa5] = 0x220,
142  [0xa6] = 0x220,
143  [0xa7] = 0x220,
144  [0xa8] = 0x230,
145  [0xa9] = 0x230,
146  [0xaa] = 0x220,
147  [0xab] = 0x230,
148  [0xac] = 0x230,
149  [0xad] = 0x222,
150  [0xae] = 0x228,
151  [0xaf] = 0x230,
152  [0xb0] = 0x10,
153  [0xb1] = 0x11,
154  [0xb2] = 0x12,
155  [0xb3] = 0x13,
156  [0xb4] = 0x14,
157  [0xb5] = 0x15,
158  [0xb6] = 0x16,
159  [0xb7] = 0x17,
160  [0xb8] = 0x18,
161  [0xb9] = 0x19,
162  [0xbb] = 0x20,
163  [0xbc] = 0x21,
164  [0xbd] = 0x22,
165  [0xbf] = 0x23,
166  [0xc1] = 0x24,
167  [0xc2] = 0x25,
168  [0xc4] = 0x230,
169 };
170 
171 static uint16_t page06[256] = {
172  [0x4b] = 0x27,
173  [0x4c] = 0x28,
174  [0x4d] = 0x29,
175  [0x4e] = 0x30,
176  [0x4f] = 0x31,
177  [0x50] = 0x32,
178  [0x51] = 0x33,
179  [0x52] = 0x34,
180  [0x53] = 0x230,
181  [0x54] = 0x230,
182  [0x55] = 0x220,
183  [0x70] = 0x35,
184  [0xd6] = 0x230,
185  [0xd7] = 0x230,
186  [0xd8] = 0x230,
187  [0xd9] = 0x230,
188  [0xda] = 0x230,
189  [0xdb] = 0x230,
190  [0xdc] = 0x230,
191  [0xdf] = 0x230,
192  [0xe0] = 0x230,
193  [0xe1] = 0x230,
194  [0xe2] = 0x230,
195  [0xe3] = 0x220,
196  [0xe4] = 0x230,
197  [0xe7] = 0x230,
198  [0xe8] = 0x230,
199  [0xea] = 0x220,
200  [0xeb] = 0x230,
201  [0xec] = 0x230,
202  [0xed] = 0x220,
203 };
204 
205 static uint16_t page07[256] = {
206  [0x11] = 0x36,
207  [0x30] = 0x230,
208  [0x31] = 0x220,
209  [0x32] = 0x230,
210  [0x33] = 0x230,
211  [0x34] = 0x220,
212  [0x35] = 0x230,
213  [0x36] = 0x230,
214  [0x37] = 0x220,
215  [0x38] = 0x220,
216  [0x39] = 0x220,
217  [0x3a] = 0x230,
218  [0x3b] = 0x220,
219  [0x3c] = 0x220,
220  [0x3d] = 0x230,
221  [0x3e] = 0x220,
222  [0x3f] = 0x230,
223  [0x40] = 0x230,
224  [0x41] = 0x230,
225  [0x42] = 0x220,
226  [0x43] = 0x230,
227  [0x44] = 0x220,
228  [0x45] = 0x230,
229  [0x46] = 0x220,
230  [0x47] = 0x230,
231  [0x48] = 0x220,
232  [0x49] = 0x230,
233  [0x4a] = 0x230,
234 };
235 
236 static uint16_t page09[256] = {
237  [0x3c] = 0x7,
238  [0x4d] = 0x9,
239  [0x51] = 0x230,
240  [0x52] = 0x220,
241  [0x53] = 0x230,
242  [0x54] = 0x230,
243  [0xbc] = 0x7,
244  [0xcd] = 0x9,
245 };
246 
247 static uint16_t page0a[256] = {
248  [0x3c] = 0x7,
249  [0x4d] = 0x9,
250  [0xbc] = 0x7,
251  [0xcd] = 0x9,
252 };
253 
254 static uint16_t page0b[256] = {
255  [0x3c] = 0x7,
256  [0x4d] = 0x9,
257  [0xcd] = 0x9,
258 };
259 
260 static uint16_t page0c[256] = {
261  [0x4d] = 0x9,
262  [0x55] = 0x84,
263  [0x56] = 0x91,
264  [0xcd] = 0x9,
265 };
266 
267 static uint16_t page0d[256] = {
268  [0x4d] = 0x9,
269  [0xca] = 0x9,
270 };
271 
272 static uint16_t page0e[256] = {
273  [0x38] = 0x103,
274  [0x39] = 0x103,
275  [0x3a] = 0x9,
276  [0x48] = 0x107,
277  [0x49] = 0x107,
278  [0x4a] = 0x107,
279  [0x4b] = 0x107,
280  [0xb8] = 0x118,
281  [0xb9] = 0x118,
282  [0xc8] = 0x122,
283  [0xc9] = 0x122,
284  [0xca] = 0x122,
285  [0xcb] = 0x122,
286 };
287 
288 static uint16_t page0f[256] = {
289  [0x18] = 0x220,
290  [0x19] = 0x220,
291  [0x35] = 0x220,
292  [0x37] = 0x220,
293  [0x39] = 0x216,
294  [0x71] = 0x129,
295  [0x72] = 0x130,
296  [0x74] = 0x132,
297  [0x7a] = 0x130,
298  [0x7b] = 0x130,
299  [0x7c] = 0x130,
300  [0x7d] = 0x130,
301  [0x80] = 0x130,
302  [0x82] = 0x230,
303  [0x83] = 0x230,
304  [0x84] = 0x9,
305  [0x86] = 0x230,
306  [0x87] = 0x230,
307  [0xc6] = 0x220,
308 };
309 
310 static uint16_t page10[256] = {
311  [0x37] = 0x7,
312  [0x39] = 0x9,
313 };
314 
315 static uint16_t page17[256] = {
316  [0x14] = 0x9,
317  [0x34] = 0x9,
318  [0xd2] = 0x9,
319 };
320 
321 static uint16_t page18[256] = {
322  [0xa9] = 0x228,
323 };
324 
325 static uint16_t page20[256] = {
326  [0xd0] = 0x230,
327  [0xd1] = 0x230,
328  [0xd2] = 0x1,
329  [0xd3] = 0x1,
330  [0xd4] = 0x230,
331  [0xd5] = 0x230,
332  [0xd6] = 0x230,
333  [0xd7] = 0x230,
334  [0xd8] = 0x1,
335  [0xd9] = 0x1,
336  [0xda] = 0x1,
337  [0xdb] = 0x230,
338  [0xdc] = 0x230,
339  [0xe1] = 0x230,
340  [0xe5] = 0x1,
341  [0xe6] = 0x1,
342  [0xe7] = 0x230,
343  [0xe8] = 0x220,
344  [0xe9] = 0x230,
345  [0xea] = 0x1,
346 };
347 
348 static uint16_t page30[256] = {
349  [0x2a] = 0x218,
350  [0x2b] = 0x228,
351  [0x2c] = 0x232,
352  [0x2d] = 0x222,
353  [0x2e] = 0x224,
354  [0x2f] = 0x224,
355  [0x99] = 0x8,
356  [0x9a] = 0x8,
357 };
358 
359 static uint16_t pagefb[256] = {
360  [0x1e] = 0x26,
361 };
362 
363 static uint16_t pagefe[256] = {
364  [0x20] = 0x230,
365  [0x21] = 0x230,
366  [0x22] = 0x230,
367  [0x23] = 0x230,
368 };
369 
370 const uint16_t *hfsplus_class_pages_old[256] = {
371  [0x03] = page03,
372  [0x04] = page04,
373  [0x05] = page05,
374  [0x06] = page06,
375  [0x07] = page07,
376  [0x09] = page09,
377  [0x0a] = page0a,
378  [0x0b] = page0b,
379  [0x0c] = page0c,
380  [0x0d] = page0d,
381  [0x0e] = page0e,
382  [0x0f] = page0f,
383  [0x10] = page10,
384  [0x17] = page17,
385  [0x18] = page18,
386  [0x20] = page20,
387  [0x30] = page30,
388  [0xfb] = pagefb,
389  [0xfe] = pagefe,
390 };
391 
392 
393 /* ====================================== ts ============================= */
394 
395 /* This encodes a matrix of page and character, with 16-bit words as elements.
396  Initially the matrix is filled with zeros.
397  1: The first element is the page number.
398  If it is equal or lower than the previous one, then the matrix is done.
399  2: The next element is the character number
400  If it is equal or lower than the previous one, the page is done. Goto 1.
401  3: The next element is the byte value. Goto 2.
402 */
403 /* Based on Unicode 3.2.0. */
404 
405 static uint16_t class_page_data[] = {
406 
407  /* page 03 */
408  0x03,
409  0x00, 0x230,
410  0x01, 0x230,
411  0x02, 0x230,
412  0x03, 0x230,
413  0x04, 0x230,
414  0x05, 0x230,
415  0x06, 0x230,
416  0x07, 0x230,
417  0x08, 0x230,
418  0x09, 0x230,
419  0x0a, 0x230,
420  0x0b, 0x230,
421  0x0c, 0x230,
422  0x0d, 0x230,
423  0x0e, 0x230,
424  0x0f, 0x230,
425  0x10, 0x230,
426  0x11, 0x230,
427  0x12, 0x230,
428  0x13, 0x230,
429  0x14, 0x230,
430  0x15, 0x232,
431  0x16, 0x220,
432  0x17, 0x220,
433  0x18, 0x220,
434  0x19, 0x220,
435  0x1a, 0x232,
436  0x1b, 0x216,
437  0x1c, 0x220,
438  0x1d, 0x220,
439  0x1e, 0x220,
440  0x1f, 0x220,
441  0x20, 0x220,
442  0x21, 0x202,
443  0x22, 0x202,
444  0x23, 0x220,
445  0x24, 0x220,
446  0x25, 0x220,
447  0x26, 0x220,
448  0x27, 0x202,
449  0x28, 0x202,
450  0x29, 0x220,
451  0x2a, 0x220,
452  0x2b, 0x220,
453  0x2c, 0x220,
454  0x2d, 0x220,
455  0x2e, 0x220,
456  0x2f, 0x220,
457  0x30, 0x220,
458  0x31, 0x220,
459  0x32, 0x220,
460  0x33, 0x220,
461  0x34, 0x1,
462  0x35, 0x1,
463  0x36, 0x1,
464  0x37, 0x1,
465  0x38, 0x1,
466  0x39, 0x220,
467  0x3a, 0x220,
468  0x3b, 0x220,
469  0x3c, 0x220,
470  0x3d, 0x230,
471  0x3e, 0x230,
472  0x3f, 0x230,
473  0x40, 0x230,
474  0x41, 0x230,
475  0x42, 0x230,
476  0x43, 0x230,
477  0x44, 0x230,
478  0x45, 0x240,
479  0x46, 0x230,
480  0x47, 0x220,
481  0x48, 0x220,
482  0x49, 0x220,
483  0x4a, 0x230,
484  0x4b, 0x230,
485  0x4c, 0x230,
486  0x4d, 0x220,
487  0x4e, 0x220,
488  0x60, 0x234,
489  0x61, 0x234,
490  0x62, 0x233,
491  0x63, 0x230,
492  0x64, 0x230,
493  0x65, 0x230,
494  0x66, 0x230,
495  0x67, 0x230,
496  0x68, 0x230,
497  0x69, 0x230,
498  0x6a, 0x230,
499  0x6b, 0x230,
500  0x6c, 0x230,
501  0x6d, 0x230,
502  0x6e, 0x230,
503  0x6f, 0x230,
504  0x00,
505 
506  /* page04 */
507  0x04,
508  0x83, 0x230,
509  0x84, 0x230,
510  0x85, 0x230,
511  0x86, 0x230,
512  0x00,
513 
514  /* page05 */
515  0x05,
516  0x91, 0x220,
517  0x92, 0x230,
518  0x93, 0x230,
519  0x94, 0x230,
520  0x95, 0x230,
521  0x96, 0x220,
522  0x97, 0x230,
523  0x98, 0x230,
524  0x99, 0x230,
525  0x9a, 0x222,
526  0x9b, 0x220,
527  0x9c, 0x230,
528  0x9d, 0x230,
529  0x9e, 0x230,
530  0x9f, 0x230,
531  0xa0, 0x230,
532  0xa1, 0x230,
533  0xa3, 0x220,
534  0xa4, 0x220,
535  0xa5, 0x220,
536  0xa6, 0x220,
537  0xa7, 0x220,
538  0xa8, 0x230,
539  0xa9, 0x230,
540  0xaa, 0x220,
541  0xab, 0x230,
542  0xac, 0x230,
543  0xad, 0x222,
544  0xae, 0x228,
545  0xaf, 0x230,
546  0xb0, 0x10,
547  0xb1, 0x11,
548  0xb2, 0x12,
549  0xb3, 0x13,
550  0xb4, 0x14,
551  0xb5, 0x15,
552  0xb6, 0x16,
553  0xb7, 0x17,
554  0xb8, 0x18,
555  0xb9, 0x19,
556  0xbb, 0x20,
557  0xbc, 0x21,
558  0xbd, 0x22,
559  0xbf, 0x23,
560  0xc1, 0x24,
561  0xc2, 0x25,
562  0xc4, 0x230,
563  0x00,
564 
565  /* page06 */
566  0x06,
567  0x4b, 0x27,
568  0x4c, 0x28,
569  0x4d, 0x29,
570  0x4e, 0x30,
571  0x4f, 0x31,
572  0x50, 0x32,
573  0x51, 0x33,
574  0x52, 0x34,
575  0x53, 0x230,
576  0x54, 0x230,
577  0x55, 0x220,
578  0x70, 0x35,
579  0xd6, 0x230,
580  0xd7, 0x230,
581  0xd8, 0x230,
582  0xd9, 0x230,
583  0xda, 0x230,
584  0xdb, 0x230,
585  0xdc, 0x230,
586  0xdf, 0x230,
587  0xe0, 0x230,
588  0xe1, 0x230,
589  0xe2, 0x230,
590  0xe3, 0x220,
591  0xe4, 0x230,
592  0xe7, 0x230,
593  0xe8, 0x230,
594  0xea, 0x220,
595  0xeb, 0x230,
596  0xec, 0x230,
597  0xed, 0x220,
598  0x00,
599 
600  /* page07 */
601  0x07,
602  0x11, 0x36,
603  0x30, 0x230,
604  0x31, 0x220,
605  0x32, 0x230,
606  0x33, 0x230,
607  0x34, 0x220,
608  0x35, 0x230,
609  0x36, 0x230,
610  0x37, 0x220,
611  0x38, 0x220,
612  0x39, 0x220,
613  0x3a, 0x230,
614  0x3b, 0x220,
615  0x3c, 0x220,
616  0x3d, 0x230,
617  0x3e, 0x220,
618  0x3f, 0x230,
619  0x40, 0x230,
620  0x41, 0x230,
621  0x42, 0x220,
622  0x43, 0x230,
623  0x44, 0x220,
624  0x45, 0x230,
625  0x46, 0x220,
626  0x47, 0x230,
627  0x48, 0x220,
628  0x49, 0x230,
629  0x4a, 0x230,
630  0x00,
631 
632  /* page09 */
633  0x09,
634  0x3c, 0x7,
635  0x4d, 0x9,
636  0x51, 0x230,
637  0x52, 0x220,
638  0x53, 0x230,
639  0x54, 0x230,
640  0xbc, 0x7,
641  0xcd, 0x9,
642  0x00,
643 
644  /* page0a */
645  0x0a,
646  0x3c, 0x7,
647  0x4d, 0x9,
648  0xbc, 0x7,
649  0xcd, 0x9,
650  0x00,
651 
652  /* page0b */
653  0x0b,
654  0x3c, 0x7,
655  0x4d, 0x9,
656  0xcd, 0x9,
657  0x00,
658 
659  /* page0c */
660  0x0c,
661  0x4d, 0x9,
662  0x55, 0x84,
663  0x56, 0x91,
664  0xcd, 0x9,
665  0x00,
666 
667  /* page0d */
668  0x0d,
669  0x4d, 0x9,
670  0xca, 0x9,
671  0x00,
672 
673  /* page0e */
674  0x0e,
675  0x38, 0x103,
676  0x39, 0x103,
677  0x3a, 0x9,
678  0x48, 0x107,
679  0x49, 0x107,
680  0x4a, 0x107,
681  0x4b, 0x107,
682  0xb8, 0x118,
683  0xb9, 0x118,
684  0xc8, 0x122,
685  0xc9, 0x122,
686  0xca, 0x122,
687  0xcb, 0x122,
688  0x00,
689 
690  /* page0f */
691  0x0f,
692  0x18, 0x220,
693  0x19, 0x220,
694  0x35, 0x220,
695  0x37, 0x220,
696  0x39, 0x216,
697  0x71, 0x129,
698  0x72, 0x130,
699  0x74, 0x132,
700  0x7a, 0x130,
701  0x7b, 0x130,
702  0x7c, 0x130,
703  0x7d, 0x130,
704  0x80, 0x130,
705  0x82, 0x230,
706  0x83, 0x230,
707  0x84, 0x9,
708  0x86, 0x230,
709  0x87, 0x230,
710  0xc6, 0x220,
711  0x00,
712 
713  /* page10 */
714  0x10,
715  0x37, 0x7,
716  0x39, 0x9,
717  0x00,
718 
719  /* page17 */
720  0x17,
721  0x14, 0x9,
722  0x34, 0x9,
723  0xd2, 0x9,
724  0x00,
725 
726  /* page18 */
727  0x18,
728  0xa9, 0x228,
729  0x00,
730 
731  /* page20 */
732  0x20,
733  0xd0, 0x230,
734  0xd1, 0x230,
735  0xd2, 0x1,
736  0xd3, 0x1,
737  0xd4, 0x230,
738  0xd5, 0x230,
739  0xd6, 0x230,
740  0xd7, 0x230,
741  0xd8, 0x1,
742  0xd9, 0x1,
743  0xda, 0x1,
744  0xdb, 0x230,
745  0xdc, 0x230,
746  0xe1, 0x230,
747  0xe5, 0x1,
748  0xe6, 0x1,
749  0xe7, 0x230,
750  0xe8, 0x220,
751  0xe9, 0x230,
752  0xea, 0x1,
753  0x00,
754 
755  /* page30 */
756  0x30,
757  0x2a, 0x218,
758  0x2b, 0x228,
759  0x2c, 0x232,
760  0x2d, 0x222,
761  0x2e, 0x224,
762  0x2f, 0x224,
763  0x99, 0x8,
764  0x9a, 0x8,
765  0x00,
766 
767  /* pagefb */
768  0xfb,
769  0x1e, 0x26,
770  0x00,
771 
772  /* pagefe */
773  0xfe,
774  0x20, 0x230,
775  0x21, 0x230,
776  0x22, 0x230,
777  0x23, 0x230,
778 };
779 
780 uint16_t *hfsplus_class_pages[256];
781 
782 static uint16_t class_pages[19][256];
783 
785 {
786  int page_idx = -1, char_idx, i;
787  uint16_t *rpt, *page_pt;
788  int page_count = 0;
789 
790  memset(class_pages, 0, 19 * 256);
791  for (i = 0; i < 256; i++)
792  hfsplus_class_pages[i] = NULL;
793 
794  rpt = (uint16_t *) class_page_data;
795  page_pt = (uint16_t *) class_pages;
796  while (1) {
797  if (*rpt <= page_idx)
798  break;
799 
800  /* <<< only for development */
801  page_count++;
802  if (page_count > 19) {
803  fprintf(stderr, "FATAL: More than 19 pages encountered\n");
804  exit(1);
805  }
806 
807  page_idx = *(rpt++);
808  char_idx = -1;
809  while (1) {
810  if(*rpt <= char_idx)
811  break;
812  char_idx = *(rpt++);
813  page_pt[char_idx] = *(rpt++);
814  }
815  rpt++;
816  hfsplus_class_pages[page_idx] = class_pages[page_count - 1];
817  page_pt += 256;
818  }
819 
820  /* <<< only for development */
821  rpt++;
822  printf("Items read: %d\n", (int) (rpt - class_page_data));
823  if (page_count != 19) {
824  fprintf(stderr, "FATAL: Less than 19 pages encountered: %d\n",
825  page_count);
826  exit(1);
827  }
828 }
829 
830 
832 {
833  int i, j;
834 
835  for (i = 0; i < 256; i++) {
836  if (hfsplus_class_pages_old[i] == NULL) {
837  if (hfsplus_class_pages[i] == NULL)
838  continue;
839  fprintf(stderr, "DIFF : i= %d , ts != NULL\n", i);
840  return 0;
841  } else if (hfsplus_class_pages[i] == NULL) {
842  fprintf(stderr, "DIFF : i= %d , ts == NULL\n", i);
843  return 0;
844  }
845  for (j = 0; j < 256; j++)
846  if (hfsplus_class_pages_old[i][j] !=
847  hfsplus_class_pages[i][j]) {
848  fprintf(stderr, "DIFF : i= %d , j= %d : %4.4x !+ %4.4x\n",
849  i, j, hfsplus_class_pages[i][j],
850  hfsplus_class_pages[i][j]);
851  return 0;
852  }
853  }
854  return 1;
855 }
856 
858 {
859 
861 
862  /* <<< intentional deviations */
863  /* hfsplus_class_pages[3][1] = 0xffff; */
864  /* hfsplus_class_pages_old[3] = NULL; */
865 
867 
868  exit(0);
869 }
870 
871 
static uint16_t page18[256]
uint16_t * hfsplus_class_pages[256]
static uint16_t page30[256]
static uint16_t page0d[256]
void make_hfsplus_class_pages()
static uint16_t class_pages[19][256]
const uint16_t * hfsplus_class_pages_old[256]
static uint16_t page0a[256]
static uint16_t page0f[256]
static uint16_t page09[256]
static uint16_t page0c[256]
static uint16_t pagefb[256]
static uint16_t class_page_data[]
static uint16_t page05[256]
static uint16_t page17[256]
static uint16_t page10[256]
static uint16_t page07[256]
static uint16_t page04[256]
static uint16_t pagefe[256]
static uint16_t page0b[256]
static uint16_t page06[256]
static int compare_class_pages()
static uint16_t page0e[256]
static uint16_t page03[256]
static uint16_t page20[256]