void init_default()
{
int i;
for (i = 0; compile_default[i].option; i++)
compile_default[i].integer = 0;
for (i = 0; dcc_default[i].option; i++)
dcc_default[i].integer = 0;
for (i = 0; server_default[i].option; i++)
server_default[i].integer = 0;
for (i = 0; userlist_default[i].option; i++)
userlist_default[i].integer = 0;
for (i = 0; flood_default[i].option; i++)
flood_default[i].integer = 0;
for (i = 0; various_default[i].option; i++)
various_default[i].integer = 0;
}
char def[] = "#define ";
int load_file(char *filename)
{
FILE *out = NULL;
char buf[200];
int dlen = strlen(def);
char *p, *value, *define;
int i, found = 0;
int init = 0;
if (!(out = fopen(filename, "r")))
return 0;
while(!feof(out))
{
found = 0;
if (!(fgets(buf, 100, out)))
break;
if ((p = strchr(buf, '\n')))
*p = 0;
if ((p = strchr(buf, '\r')))
*p = 0;
if (!buf[0])
continue;
if (!init)
{
init_default();
init++;
}
if (strncmp(buf, def, dlen))
continue;
/* got a #define lets break it down. */
define = buf;
if ((p = strchr(buf, ' ')))
*p++ = 0;
define = p;
if ((p = strchr(define, ' ')))
*p++ = 0;
while (p && strchr(" \t", *p))
p++;
value = p;
if (!value || !define || !*define || !*value)
continue;
for (i = 0; compile_default[i].option; i++)
{
if (!strcmp(compile_default[i].out, define))
{
if (isdigit(*value))
compile_default[i].integer = strtoul(value, NULL, 10);
found++;
break;
}
}
if (found) continue;
for (i = 0; dcc_default[i].option; i++)
{
if (!strcmp(dcc_default[i].out, define))
{
if (isdigit(*value))
dcc_default[i].integer = strtoul(value, NULL, 10);
found++;
break;
}
}
if (found) continue;
for (i = 0; server_default[i].option; i++)
{
if (!strcmp(server_default[i].out, define))
{
if (isdigit(*value))
server_default[i].integer = strtoul(value, NULL, 10);
found++;
break;
}
}
if (found) continue;
for (i = 0; userlist_default[i].option; i++)
{
if (!strcmp(userlist_default[i].out, define))
{
if (isdigit(*value))
userlist_default[i].integer = strtoul(value, NULL, 10);
found++;
break;
}
}
if (found) continue;
for (i = 0; flood_default[i].option; i++)
{
if (!strcmp(flood_default[i].out, define))
{
if (isdigit(*value))
flood_default[i].integer = strtoul(value, NULL, 10);
found++;
break;
}
}
if (found) continue;
for (i = 0; various_default[i].option; i++)
{
if (!strcmp(various_default[i].out, define))
{
if (isdigit(*value))
various_default[i].integer = strtoul(value, NULL, 10);
found++;
break;
}
}
}
fclose(out);
return TRUE;
}
syntax highlighted by Code2HTML, v. 0.9.1