diff options
Diffstat (limited to 'irc/c_conf.c')
-rw-r--r-- | irc/c_conf.c | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/irc/c_conf.c b/irc/c_conf.c new file mode 100644 index 0000000..ee980f2 --- /dev/null +++ b/irc/c_conf.c @@ -0,0 +1,95 @@ +/************************************************************************ + * IRC - Internet Relay Chat, irc/c_conf.c + * Copyright (C) 1990 Jarkko Oikarinen and + * University of Oulu, Computing Center + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef lint +static char rcsid[] = "@(#)$Id: c_conf.c,v 1.3 1999/02/21 00:33:45 kalt Exp $"; +#endif + +#include "os.h" +#include "c_defines.h" +#define C_CONF_C +#include "c_externs.h" +#undef C_CONF_C + +initconf(host, passwd, myname, port) +char *host, *passwd, *myname; +int *port; +{ + FILE *fd; + char line[256], *tmp; + + if ((fd = fopen(IRCDCONF_PATH, "r")) == NULL) + return /* (-1) */ ; + while (fgets(line,255,fd)) { + if (line[0] == '#' || line[0] == '\n' || + line[0] == ' ' || line[0] == '\t') + continue; + switch (*getfield(line)) + { + case 'C': /* Server where I should try to connect */ + case 'c': /* in case of link failures */ + case 'I': /* Just plain normal irc client trying */ + case 'i': /* to connect me */ + case 'N': /* Server where I should NOT try to */ + case 'n': /* connect in case of link failures */ + /* but which tries to connect ME */ + case 'O': /* Operator. Line should contain at least */ + case 'o': /* password and host where connection is */ + /* allowed from */ + case 'M': /* Me. Host field is name used for this host */ + case 'm': /* and port number is the number of the port */ + case 'a': + case 'A': + case 'k': + case 'K': + case 'q': + case 'Q': + case 'l': + case 'L': + case 'y': + case 'Y': + case 'h': + case 'H': + case 'p': + case 'P': + break; + case 'U': /* Uphost, ie. host where client reading */ + case 'u': /* this should connect. */ + if (!(tmp = getfield(NULL))) + break; + strncpyzt(host, tmp, HOSTLEN); + if (!(tmp = getfield(NULL))) + break; + strncpyzt(passwd, tmp, PASSWDLEN); + if (!(tmp = getfield(NULL))) + break; + strncpyzt(myname, tmp, HOSTLEN); + if (!(tmp = getfield(NULL))) + break; + if ((*port = atoi(tmp)) == 0) + debug(DEBUG_ERROR, + "Error in config file, bad port field"); + break; + default: +/* debug(DEBUG_ERROR, "Error in config file: %s", line); */ + break; + } + } +} |