prepare_meanings.c
author viric@llimona
Sat, 01 Sep 2007 23:52:38 +0200
changeset 22 0b923f95df16
child 23 97feccfc5215
permissions -rw-r--r--
Added 'signifoj' kreadon
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     1
#include <stdio.h>
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     2
#include <stdlib.h>
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     3
#include "dictre.h"
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     4
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     5
#define NELEM(x) (sizeof(x)/sizeof(x[0]))
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     6
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     7
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     8
const char *dictionarynames[] = { "bokarjovrueo", "slovnyk_ru-en" };
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
     9
static struct Dict dictionaries[5/*MAX DICT*/];
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    10
static int ndictionaries;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    11
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    12
static void init_dictionaries()
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    13
{
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    14
    ndictionaries = 0;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    15
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    16
    init_dictionary(&dictionaries[0], "bokarjovrueo");
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    17
    dictionaries[0].trim_last_newlines = 1;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    18
    ndictionaries++;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    19
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    20
    init_dictionary(&dictionaries[1], "slovnyk_ru-en");
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    21
    dictionaries[1].trim_first_line = 1;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    22
    dictionaries[1].trim_last_newlines = 1;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    23
    ndictionaries++;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    24
}
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    25
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    26
static void close_dictionaries()
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    27
{
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    28
    int i;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    29
    for(i=0; i<ndictionaries; ++i)
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    30
        end_dictionary(&dictionaries[i]);
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    31
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    32
    ndictionaries=0;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    33
}
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    34
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    35
void dump_word(const char *word)
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    36
{
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    37
    int i;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    38
    char def[MAXDEF];
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    39
    int word_header_dumped = 0;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    40
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    41
    if (strncmp(word, "00database", sizeof("00database"-1)) == 0)
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    42
        return;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    43
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    44
    for (i=0; i < ndictionaries; ++i)
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    45
    {
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    46
        char *found;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    47
        find_def(&dictionaries[i], word, def);
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    48
        if (def[0])
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    49
        {
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    50
            if(!word_header_dumped)
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    51
            {
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    52
                printf(":%s:", word);
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    53
                word_header_dumped = 1;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    54
            }
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    55
            printf("[%s]\n%s\n\n", dictionarynames[i], def);
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    56
        }
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    57
    }
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    58
}
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    59
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    60
void dump_words()
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    61
{
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    62
    FILE *fwords;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    63
    char word[MAXWORD];
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    64
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    65
    fwords = fopen("words.txt", "r");
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    66
    if (fwords == 0)
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    67
    {
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    68
        printf("Cannot open words.txt\n");
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    69
        exit(-1);
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    70
    }
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    71
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    72
    do
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    73
    {
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    74
        char *res;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    75
        res = fgets(word, MAXWORD, fwords);
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    76
        if (res == 0)
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    77
            break;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    78
        word[strlen(word) - 1] = 0; /* Remove \n in the line */
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    79
        dump_word(word);
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    80
    } while(1);
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    81
}
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    82
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    83
int main()
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    84
{
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    85
    init_dictionaries();
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    86
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    87
    dump_words();
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    88
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    89
    close_dictionaries();
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    90
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    91
    return 0;
0b923f95df16 Added 'signifoj' kreadon
viric@llimona
parents:
diff changeset
    92
}