head 1.10;
access;
symbols
OSSP_RC_0_7_3:1.10
OSSP_RC_0_7_2:1.10
OSSP_RC_0_7_1:1.9
OSSP_RC_ALPHA_06:1.7
OSSP_RC_EXBROKEN:1.6;
locks; strict;
comment @ * @;
1.10
date 2003.07.08.15.09.50; author mlelstv; state Exp;
branches;
next 1.9;
1.9
date 2003.07.07.13.30.51; author ms; state Exp;
branches;
next 1.8;
1.8
date 2003.07.07.12.55.42; author ms; state Exp;
branches;
next 1.7;
1.7
date 2003.05.26.16.03.57; author ms; state Exp;
branches;
next 1.6;
1.6
date 2003.05.19.19.03.41; author ms; state Exp;
branches;
next 1.5;
1.5
date 2002.06.26.14.11.16; author ms; state Exp;
branches;
next 1.4;
1.4
date 2002.04.24.16.47.07; author ms; state Exp;
branches;
next 1.3;
1.3
date 2002.04.11.16.52.45; author ms; state Exp;
branches;
next 1.2;
1.2
date 2002.04.09.17.06.17; author ms; state Exp;
branches;
next 1.1;
1.1
date 2002.04.09.17.01.29; author ms; state Exp;
branches;
next ;
desc
@@
1.10
log
@flush audit comments and changes
@
text
@/* OSSP rc - Run-Command Processor
** Copyright (c) 2002-2003 Ralf S. Engelschall
** Copyright (c) 2002-2003 Cable & Wireless Deutschland GmbH
** Copyright (c) 2002-2003 The OSSP Project
**
** 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
#include
#include
#include "rc.h"
/* FIXME mlelstv -- why Construct/Destruct vs. New/Delete ? */
/***************************************
* optConstruct(rc_opt_t **) *
* Construct an option *
***************************************/
rc_return_t optConstruct(rc_opt_t **ppOption)
{
assert(*ppOption == NULL); /* Error if constructed already */
*ppOption = malloc(sizeof(**ppOption)); /* Allocate an option instance */
if (!*ppOption)
return(RC_THROW(RC_ERR_MEM));
(*ppOption)->szName = NULL; /* We don't know how much to */
(*ppOption)->szVal = NULL; /* allocate, so do it later */
return(RC_THROW(RC_OK));
}
/***************************************
* optGetXXXX(rc_opt_t *, char **) *
* Option accessors *
***************************************/
rc_return_t optGetname(rc_opt_t *pOption, char **pszName)
{
assert(pOption && pOption->szName);
/* FIXME mlelstv -- why non-shared read ? */
if (!(*pszName = strdup(pOption->szName))) /* Get name from option */
return(RC_THROW(RC_ERR_MEM));
else
return(RC_THROW(RC_OK));
}
rc_return_t optGetval(rc_opt_t *pOption, char **pszVal)
{
assert(pOption && pOption->szVal);
/* FIXME mlelstv -- why non-shared read ? */
if (!(*pszVal = strdup(pOption->szVal))) /* Get value from option */
return(RC_THROW(RC_ERR_MEM));
else
return(RC_THROW(RC_OK));
}
/***************************************
* optSetXXXX(rc_opt_t *, const char *) *
* Option accessors *
***************************************/
rc_return_t optSetname(rc_opt_t *pOption, const char *kszName)
{
if (pOption->szName) /* Guard against leaks */
free(pOption->szName); /* if resetting name */
if (!(pOption->szName = strdup(kszName))) /* Set name of option */
return(RC_THROW(RC_ERR_MEM));
else
return(RC_THROW(RC_OK));
}
rc_return_t optSetval(rc_opt_t *pOption, const char *kszVal)
{
if (pOption->szVal) /* Guard against leaks */
free(pOption->szVal); /* if resetting value */
if (!(pOption->szVal = strdup(kszVal))) /* Set value of option */
return(RC_THROW(RC_ERR_MEM));
else
return(RC_THROW(RC_OK));
}
/***************************************
* optDestruct(rc_opt_t **) *
* Destruct a command line option *
***************************************/
rc_return_t optDestruct(rc_opt_t **ppOption)
{
assert(*ppOption); /* Error if not constructed */
if ((*ppOption)->szName) /* Might not be mallocd yet */
free((*ppOption)->szName);
if ((*ppOption)->szVal) /* Might not be mallocd yet */
free((*ppOption)->szVal);
free(*ppOption); /* Deallocate option and */
*ppOption = NULL; /* clear its reference */
return(RC_THROW(RC_OK));
}
@
1.9
log
@More header corrections and improvements.
@
text
@d36 1
d62 1
d72 1
d109 1
a109 1
ex_t Except;
d111 6
a116 11
assert(*ppOption); /* Error if not constructed */
try {
if ((*ppOption)->szName) /* Might not be mallocd yet */
free((*ppOption)->szName);
if ((*ppOption)->szVal) /* Might not be mallocd yet */
free((*ppOption)->szVal);
free(*ppOption); /* Deallocate option and */
*ppOption = NULL; /* clear its reference */
}
catch(Except)
rethrow;
@
1.8
log
@Correct and update copyrights and source headers.
@
text
@d1 1
a1 1
/* OSSP rc - Run-command processor
d6 1
a6 1
** This file is part of OSSP rc, a portable Run-command processor
d27 1
a27 1
** rc_opt.c: Run-command processor ISO C source file
@
1.7
log
@Preliminary exception handling repairs.
@
text
@d2 3
a4 3
** Copyright (c) 2002 Ralf S. Engelschall
** Copyright (c) 2002 Cable & Wireless Deutschland GmbH
** Copyright (c) 2002 The OSSP Project
@
1.6
log
@Clean up what doesn't exist anymore.
@
text
@d117 1
a117 1
catch(Except) {
a118 1
}
@
1.5
log
@Intermediate committal, lots of additions, compiles and works very limited.
@
text
@a34 1
#include "rc_opt.h"
@
1.4
log
@Command line option configuration and some processor operations.
@
text
@d110 1
a110 1
ex_try {
d118 1
a118 1
ex_catch(Except) {
@
1.3
log
@Flush the toilet.
@
text
@d81 1
a81 1
rc_return_t optSetname(rc_opt_t *pOption, const char *cszName)
d85 1
a85 1
if (!(pOption->szName = strdup(cszName))) /* Set name of option */
d91 1
a91 1
rc_return_t optSetval(rc_opt_t *pOption, const char *cszVal)
d95 1
a95 1
if (!(pOption->szVal = strdup(cszVal))) /* Set value of option */
@
1.2
log
@Remove cut and paste crap.
@
text
@d32 1
d39 40
a78 1
* optGetXXXX(void) *
d81 25
a105 1
short optGetvers(void)
d107 14
a120 1
short nVer = 0;
d122 1
a122 1
return(nVer);
@
1.1
log
@Add new configuration pieces.
@
text
@d38 2
a39 2
* optConstruct(void) *
* Construct an option *
d41 1
a41 1
rc_return_t clioptConstruct(void)
a42 27
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;
a44 13
if (s_pInst != NULL) {
ex_try {
}
ex_catch(Except) {
rethrow;
}
}
else {
RC_THROW(RC_ERR_USE);
return(NULL);
}
a45 27
}
/***************************************
* 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));
@