root / config.c
History | View | Annotate | Download (1.94 KB)
1 |
|
---|---|
2 |
#include <stdlib.h> |
3 |
#include <stdio.h> |
4 |
#include <string.h> |
5 |
#include <ctype.h> |
6 |
|
7 |
#define VAR_LEN 30 |
8 |
#define VAL_LEN 30 |
9 |
|
10 |
#define MIN_WAIT_TIME 1.0 |
11 |
|
12 |
#define LABEL "label" |
13 |
#define MODE "mode" |
14 |
|
15 |
#define TRUE 1 |
16 |
#define FALSE 0 |
17 |
|
18 |
int read_conf_file (char *); |
19 |
int is_label (char *); |
20 |
int set_label (char *, char *); |
21 |
|
22 |
int spell_mode = FALSE; // just making it explicit :) |
23 |
|
24 |
int wait_time = 1*1000; // default is one second |
25 |
|
26 |
char label[10][6]; |
27 |
|
28 |
int read_conf_file (char * file_name) |
29 |
{ |
30 |
FILE * fd; |
31 |
char variable[VAR_LEN], value[VAL_LEN];
|
32 |
|
33 |
strcpy (label[0], "ABC"); |
34 |
strcpy (label[1], "DEF"); |
35 |
strcpy (label[2], "GHI"); |
36 |
strcpy (label[3], "JKL"); |
37 |
strcpy (label[4], "MNO"); |
38 |
strcpy (label[5], "PQR"); |
39 |
strcpy (label[6], "STU"); |
40 |
strcpy (label[7], "VWX"); |
41 |
strcpy (label[8], "YZ#"); |
42 |
strcpy (label[9], "123"); |
43 |
|
44 |
if ((fd = fopen (file_name, "r")) == NULL) |
45 |
return -1; |
46 |
|
47 |
while (fscanf (fd, "%s %s", variable, value) != EOF) |
48 |
{ |
49 |
if (is_label (variable)) // check for label |
50 |
if (set_label (variable, value) == -1) // if so, set the variable |
51 |
return -2; // not a valid label definition |
52 |
if (strcasecmp (variable, MODE) == 0) |
53 |
if (strcasecmp (value, "spell") == 0) |
54 |
spell_mode = TRUE; |
55 |
else
|
56 |
{ |
57 |
if (strcasecmp (value, "word") != 0) |
58 |
return -3; // not a valid mode of operation |
59 |
} |
60 |
if (strcasecmp (variable, "time") == 0) |
61 |
wait_time = atof(value) < MIN_WAIT_TIME ? ((int)(MIN_WAIT_TIME * 1000)) : (int) (atof (value) * 1000); |
62 |
} |
63 |
return 1; |
64 |
} |
65 |
|
66 |
int is_label (char * str) |
67 |
{ |
68 |
return (strncasecmp (str, LABEL, strlen(LABEL)) == 0); |
69 |
} |
70 |
|
71 |
int set_label (char * var, char * val) |
72 |
{ |
73 |
int index;
|
74 |
|
75 |
// if (isdigit (var[strlen(LABEL)]) == 0)
|
76 |
// return -1;
|
77 |
|
78 |
index = var[strlen(LABEL)] - '1'; // label[i-1] = val[i] |
79 |
if(index == -1) |
80 |
index =9;
|
81 |
strcpy (label[index], val); |
82 |
// g_print ("the label is %s\t %d\n",label[index],index);
|
83 |
return 1; |
84 |
} |