/* * Parse .conf file interface spec for spo communications. * $Id: getspo.c 1.2 Mon, 24 Mar 1997 12:25:37 -0500 dyfet $ * Copyright (c) 1997 by Tycho Softworks. * For conditions of distribution and reuse see product license. */ #include #include #include #include #include char *mask = NULL; int getspo(CONFIG *cfg) { int spo = -1; char *p; stty_t stty; if(!seek_config(cfg, "interface")) fatal(EX_CONFIG, "spo256: [interface]: missing from speak.conf\n"); while(NULL != read_config(cfg)) { if(NULL != (p = get_config(cfg, "bind"))) { mask = strdup(p); continue; } if(NULL != (p = get_config(cfg, "device"))) { spo = open(p, O_RDWR); if(spo < 0) fatal(EX_UNAVAILABLE, "spo256: %s: cannot access\n", p); stty = getstty(spo); interactive(stty, FALSE); setflowctrl(stty, FC_HARD); continue; } if(NULL != (p = get_config(cfg, "speed"))) { if(spo < 0) fatal(EX_CONFIG, "spo256: set speed for unspecified device\n"); setspeed(stty, atol(p)); continue; } if(NULL != (p = get_config(cfg, "parity"))) { if(spo < 0) fatal(EX_CONFIG, "spo256: set format for unspecified device\n"); if(!stricmp(p, "even")) setformat(stty, "7e1"); if(!stricmp(p, "odd")) setformat(stty, "7o1"); if(!stricmp(p, "none")) setformat(stty, "8n1"); continue; } } putstty(spo, stty, TRUE); return spo; }