*** /dev/null Sat Nov 23 01:01:46 2024
--- - Sat Nov 23 01:02:11 2024
***************
*** 0 ****
--- 1,113 ----
+ /* OSSP rc - Run-command processor
+ ** Copyright (c) 2002 Ralf S. Engelschall
+ ** Copyright (c) 2002 Cable & Wireless Deutschland GmbH
+ ** Copyright (c) 2002 The OSSP Project <http://www.ossp.org/>
+ **
+ ** This file is part of OSSP rc, a portable Run-command processor
+ ** which can be found at http://www.ossp.org/pkg/lib/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_opt.c: Run-command processor ISO C source file
+ */
+
+ #include <stdio.h>
+ #include <stdlib.h>
+
+ #include "rc.h"
+ #include "rc_opt.h"
+
+
+ /***************************************
+ * optConstruct(void) *
+ * Construct an option *
+ ***************************************/
+ rc_return_t clioptConstruct(void)
+ {
+ ex_t Except;
+
+ if (s_pInst == NULL) { /* If we don't have one */
+ s_pInst = malloc(sizeof(s_pInst)); /* yet, then allocate */
+ if (!s_pInst) /* a cliopt instance */
+ return(RC_THROW(RC_ERR_MEM));
+ s_pInst->nLocks = 0;
+
+ ex_try {
+ /* Make a cliopt instance */
+ }
+ ex_catch(Except) {
+ rethrow;
+ }
+ }
+ s_pInst->nLocks++; /* FIXME not threadsafe */
+
+ return(RC_THROW(RC_OK));
+ }
+
+ /***************************************
+ * clioptGetXXXX(void) *
+ * Command line option accessors *
+ ***************************************/
+ short clioptGetvers(void)
+ {
+ ex_t Except;
+ short nVer = 0;
+
+ if (s_pInst != NULL) {
+ ex_try {
+
+ }
+ ex_catch(Except) {
+ rethrow;
+ }
+ }
+ else {
+ RC_THROW(RC_ERR_USE);
+ return(NULL);
+ }
+
+ return(nVer);
+ }
+
+ /***************************************
+ * clioptDestruct(void) *
+ * Destruct a command line option *
+ ***************************************/
+ rc_return_t clioptDestruct(void)
+ {
+ ex_t Except;
+
+ if (s_pInst) {
+ if (!(--s_pInst->nLocks)) { /* If nLocks is 0, dealloc */
+ ex_try { /* FIXME, not thread-safe */
+
+ }
+ ex_catch(Except) {
+ rethrow;
+ }
+
+ free(s_pInst); /* Deallocate cliopt and */
+ s_pInst = NULL; /* clear its reference */
+ }
+ }
+ else
+ return(RC_THROW(RC_ERR_USE));
+
+ return(RC_THROW(RC_OK));
+ }
|