Metropoli BBS
VIEWER: config.c MODE: TEXT (ASCII)
/*
 * This part was written by Harald Kipp
 *
 * Bug reports should be sent to
 *
 *  harald@os2point.ping.de
 *  harald@haport.sesam.com
 *  Fido: 2:2448/434
 *
 * This module contains routines to read the configuration file.
 *
 */

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <direct.h>

#include <chanlib.h>
#include <lprintf.h>

#include "config.h"

CONFIG cfg;

/************************************************************************/
/*                                                                      */
/*                                                                      */
/************************************************************************/
void init_cfg(void)
{
    char *cp;

    memset(&cfg, 0, sizeof(cfg));
    if((cp = getenv("CHANGIWORKDIR")) != NULL)
        fine_dir(strcpy(cfg.workdir, cp), NULL);
    else
        fine_dir(getcwd(cfg.workdir, sizeof(cfg.workdir)), NULL);
    fine_dir(strcpy(cfg.logfile, "inews.log"), cfg.workdir);
    fine_dir(strcpy(cfg.configfile, "changi.cfg"), cfg.workdir);
    fine_dir(strcpy(cfg.pidfile, "inews.pid"), cfg.workdir);
    cfg.grade = 'd';
}

/************************************************************************/
/*                                                                      */
/*                                                                      */
/************************************************************************/
int validate_cfg(void)
{
    int result = 0;
    char *cp;

    /*
     * Get node and domain from environment
     */
    if(!cfg.mydomain[0]) {
        if((cp = getenv("HOSTNAME")) != NULL)
            strcpy(cfg.mydomain, cp);
    }
    if(!cfg.mynode[0]) {
        if((cp = strchr(cfg.mydomain, '.')) != NULL)
            *cp = '\0';
        strcpy(cfg.mynode, cfg.mydomain);
        if(cp)
            *cp = '.';
    }

    /*
     * Get name of newsserver from environment
     */
    if(!cfg.newsserver[0] && (cp = getenv("NNTPSERVER")) != NULL) {
        strncpy(cfg.newsserver, cp, sizeof(cfg.newsserver));
        if((cp = strchr(cfg.newsserver, '.')) != NULL)
            *cp = '\0';
    }

    if(!cfg.mynode[0])
        lprintf("Missing my node name");
    else if(!cfg.mydomain[0])
        lprintf("Missing my domain name");
    else if(!cfg.newsserver[0])
        lprintf("Missing newsserver name");
    else {
        if (!cfg.rnewscall[0])
            strcpy(cfg.rnewscall, "rnews");
        if(fine_dir(cfg.spooldir, cfg.workdir) == NULL)
            fine_dir(strcpy(cfg.spooldir, "spool"), cfg.workdir);
        result = 1;
    }

    return(result);
}
[ RETURN TO DIRECTORY ]