|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 3429 (0xd65)
Types: TextFile
Names: »c_set.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦653021b30⟧ »EurOpenD3/utils/downtime.tar.Z«
└─⟦946c717da⟧
└─⟦this⟧ »c_set.c«
/*
* Copyright (c) 1988 Michael A. Cooper, University of Southern California.
* This program may be used, copied, modified, and redistributed freely
* for noncommercial purposes, so long as this notice remains intact.
*/
#ifndef lint
static char *RCSid = "$Header: c_set.c,v 4.1 88/07/05 15:58:35 mcooper Exp $";
#endif
/*
*------------------------------------------------------------------
*
* $Source: /usr/skat3/src/common/usc/etc/downtime/RCS/c_set.c,v $
* $Revision: 4.1 $
* $Date: 88/07/05 15:58:35 $
* $State: Exp $
*
*------------------------------------------------------------------
*
* Michael A. Cooper
* Research and Development Group
* University Computing Services
* University of Southern California
* (mcooper@oberon.USC.EDU)
*
*------------------------------------------------------------------
*
* $Log: c_set.c,v $
* Revision 4.1 88/07/05 15:58:35 mcooper
* Added copyright notice.
*
* Revision 4.0 88/04/20 15:41:33 mcooper
* Version 4.
*
* Revision 3.3 88/04/19 18:22:54 mcooper
* Variables can now be set to numeric values.
*
* Revision 3.2 88/04/11 19:47:50 mcooper
* Converted all dt_flags to use flag
* bits.
*
* Revision 3.1 88/03/01 15:48:28 mcooper
* Cleaned up header files.
*
* Revision 3.0 87/07/24 14:14:20 mcooper
* Version 3.
*
*------------------------------------------------------------------
*/
#include "defs.h"
#include "parse.h"
keywrd setkeys[] = {
{ "quiet", 0, (int) &quiet },
{ "force", 0, (int) &force },
{ "shortmessage", 0, (int) &shortshutmsg },
{ "kill", 0, (int) &killflg },
{ "fake", 0, (int) &fake },
{ "halt", 0, (int) &halt },
{ "reboot", 0, (int) &reboot },
{ "verbose", 0, (int) &verbose },
};
keytab settab = { (sizeof(setkeys)/sizeof(keywrd)), setkeys };
fdb setfdb = { _CMKEY, 0, NULL, (pdat) &settab, "Variable, ", NULL, NULL };
/*
* set - Set variables to TRUE/FALSE.
*
* RETURN VALUE: Returns `0' upon successful completion.
* Otherwise it returns `-1' upon error.
*/
c_set ()
{
static keywrd tfkeys[] = {
{ "TRUE", 0, 1 },
{ "FALSE", 0, 0 },
};
static keytab tftab = { (sizeof(tfkeys)/sizeof(keywrd)), tfkeys };
static fdb tffdb = { _CMKEY, 0, NULL, (pdat) &(tftab), "Boolean, ",
NULL, NULL };
int x;
pval val, tval;
fdb *used;
char which[BUFSIZ];
int *iptr;
parse(fdbchn(&setfdb, &cfmfdb, NULL), &val, &used);
if (used == &setfdb) {
iptr = (int *) val._pvint;
strcpy(which, atmbuf);
noise("to");
tffdb._cmdef = (*iptr) ? "FALSE" : "TRUE";
numfdb._cmhlp = "Numeric Value";
parse(fdbchn(&tffdb, &numfdb, NULL), &tval, &used);
if (used == &tffdb) {
confirm();
*iptr = tval._pvint;
printf("%s is now %s.\n", which, (*iptr) ? "TRUE" : "FALSE");
} else if (used == &numfdb) {
confirm();
*iptr = tval._pvint;
printf("%s is now %d.\n", which, tval._pvint);
} else {
printf("?You must enter TRUE or FALSE.\n");
return(-1);
}
} else {
for (x = 0; x != (sizeof(setkeys)/sizeof(keywrd)); x++) {
iptr = (int *) setkeys[x]._kwval;
if (!(setkeys[x]._kwflg & KEY_INV))
printf("%s is %s.\n", setkeys[x]._kwkwd,
(*iptr == 1) ? "TRUE" :
(*iptr > 1) ? (char *) itoa(*iptr) : "FALSE");
}
}
return(0);
}