1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2005 Miika Pekkarinen
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
18 ****************************************************************************/
21 This tool converts the rdf file to the binary data used in the dict plugin.
24 #include <sys/types.h>
30 /* maximum word lenght, has to be the same in dict.c */
35 #define STRUCT_PACKED __attribute__((packed))
38 #pragma pack (push, 2)
48 /* convert offsets here, not on device. */
49 long reverse (long N
) {
51 B
[0] = (N
& 0x000000FF) >> 0;
52 B
[1] = (N
& 0x0000FF00) >> 8;
53 B
[2] = (N
& 0x00FF0000) >> 16;
54 B
[3] = (N
& 0xFF000000) >> 24;
55 return ((B
[0] << 24) | (B
[1] << 16) | (B
[2] << 8) | (B
[3] << 0));
61 FILE *in
, *idx_out
, *desc_out
;
66 in
= fopen("dict.preparsed", "r");
67 idx_out
= fopen("dict.index", "wb");
68 desc_out
= fopen("dict.desc", "wb");
70 if (in
== NULL
|| idx_out
== NULL
|| desc_out
== NULL
)
72 fprintf(stderr
, "Error: Some files couldn't be opened\n");
76 while (fgets(buf
, sizeof buf
, in
) != NULL
)
78 /* It is safe to use strtok here */
79 const char *word
= strtok(buf
, "\t");
80 const char *desc
= strtok(NULL
, "\t");
82 if (word
== NULL
|| desc
== NULL
)
84 fprintf(stderr
, "Parse error!\n");
85 fprintf(stderr
, "word: %s\ndesc: %s\n", word
, desc
);
90 /* We will null-terminate the words */
91 strncpy(w
.word
, word
, WORDLEN
- 1);
92 w
.offset
= reverse(cur_offset
);
93 fwrite(&w
, sizeof(struct word
), 1, idx_out
);
97 int len
= strlen(desc
);
99 fwrite(desc
, len
, 1, desc_out
);
101 desc
= strtok(NULL
, "\t");
106 fwrite("\n", 1, 1, desc_out
);