Return to boolean.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / sntp / libopts |
1.1 ! misho 1: ! 2: /** ! 3: * \file boolean.c ! 4: * ! 5: * Time-stamp: "2010-07-10 11:02:10 bkorb" ! 6: * ! 7: * Automated Options Paged Usage module. ! 8: * ! 9: * This routine will run run-on options through a pager so the ! 10: * user may examine, print or edit them at their leisure. ! 11: * ! 12: * This file is part of AutoOpts, a companion to AutoGen. ! 13: * AutoOpts is free software. ! 14: * AutoOpts is Copyright (c) 1992-2011 by Bruce Korb - all rights reserved ! 15: * ! 16: * AutoOpts is available under any one of two licenses. The license ! 17: * in use must be one of these two and the choice is under the control ! 18: * of the user of the license. ! 19: * ! 20: * The GNU Lesser General Public License, version 3 or later ! 21: * See the files "COPYING.lgplv3" and "COPYING.gplv3" ! 22: * ! 23: * The Modified Berkeley Software Distribution License ! 24: * See the file "COPYING.mbsd" ! 25: * ! 26: * These files have the following md5sums: ! 27: * ! 28: * 43b91e8ca915626ed3818ffb1b71248b pkg/libopts/COPYING.gplv3 ! 29: * 06a1a2e4760c90ea5e1dad8dfaac4d39 pkg/libopts/COPYING.lgplv3 ! 30: * 66a5cedaf62c4b2637025f049f9b826f pkg/libopts/COPYING.mbsd ! 31: */ ! 32: ! 33: /*=export_func optionBooleanVal ! 34: * private: ! 35: * ! 36: * what: Decipher a boolean value ! 37: * arg: + tOptions* + pOpts + program options descriptor + ! 38: * arg: + tOptDesc* + pOptDesc + the descriptor for this arg + ! 39: * ! 40: * doc: ! 41: * Decipher a true or false value for a boolean valued option argument. ! 42: * The value is true, unless it starts with 'n' or 'f' or "#f" or ! 43: * it is an empty string or it is a number that evaluates to zero. ! 44: =*/ ! 45: void ! 46: optionBooleanVal( tOptions* pOpts, tOptDesc* pOD ) ! 47: { ! 48: char* pz; ! 49: ag_bool res = AG_TRUE; ! 50: ! 51: if ((pOD->fOptState & OPTST_RESET) != 0) ! 52: return; ! 53: ! 54: if (pOD->optArg.argString == NULL) { ! 55: pOD->optArg.argBool = AG_FALSE; ! 56: return; ! 57: } ! 58: ! 59: switch (*(pOD->optArg.argString)) { ! 60: case '0': ! 61: { ! 62: long val = strtol( pOD->optArg.argString, &pz, 0 ); ! 63: if ((val != 0) || (*pz != NUL)) ! 64: break; ! 65: /* FALLTHROUGH */ ! 66: } ! 67: case 'N': ! 68: case 'n': ! 69: case 'F': ! 70: case 'f': ! 71: case NUL: ! 72: res = AG_FALSE; ! 73: break; ! 74: case '#': ! 75: if (pOD->optArg.argString[1] != 'f') ! 76: break; ! 77: res = AG_FALSE; ! 78: } ! 79: ! 80: if (pOD->fOptState & OPTST_ALLOC_ARG) { ! 81: AGFREE(pOD->optArg.argString); ! 82: pOD->fOptState &= ~OPTST_ALLOC_ARG; ! 83: } ! 84: pOD->optArg.argBool = res; ! 85: } ! 86: /* ! 87: * Local Variables: ! 88: * mode: C ! 89: * c-file-style: "stroustrup" ! 90: * indent-tabs-mode: nil ! 91: * End: ! 92: * end of autoopts/boolean.c */