/* rc - OSSP Runcommand processor ** Copyright (c) 2002 Cable & Wireless Deutschland GmbH ** Copyright (c) 2002 The OSSP Project ** Copyright (c) 2002 Ralf S. Engelschall ** ** This file is part of OSSP rc, a portable Runcommand processor ** which can be found at http://www.ossp.org/pkg/rc/ ** ** Permission to use, copy, modify, and distribute this software for ** any purpose with or without fee is hereby granted, provided that ** the above copyright notice and this permission notice appear in all ** copies. ** ** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ** IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ** USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ** SUCH DAMAGE. ** ** rc.c: Runcommand processor ANSI C source file */ #include #include #include #include void usage(char *szProgname) { fprintf(stdout, "Usage: %s [-v|--verbose] [-h|--help]\n\ [-p|--print] [-e|--eval] [-c|--config]\ [-q|--query] [-r|--raw]\n\ [ ...]", szProgname); } int main(int argc, char *argv[]) { int nOpt = 0; /* holds getopt(3) return value */ int nFile = 0; /* for checking file existence */ int bVerbose = 0; /* v */ int bHelp = 0; /* h */ int bPrint = 0; /* p */ int bEval = 0; /* e */ int bConfig = 0; /* c */ int bQuery = 0; /* q */ int bRaw = 0; /* r */ while ((nOpt = getopt(argc, argv, "vhpecqr:")) != -1) switch (nOpt) { case 'v': bVerbose = TRUE; break; case 'h': bHelp = TRUE; break; case 'p': bPrint = TRUE; break; case 'e': bEval = TRUE; break; case 'c': bConfig = TRUE; break; case 'q': bQuery = TRUE; break; case 'r': bRaw = TRUE; break; case '?': default: usage(*argv); } argc -= optind; argv += optind; /* check existence of file input to the run-command */ if ((nFile = open(optarg, O_RDONLY, 0)) < 0) err(1, "%s", optarg); return 0; /* success */ }