OSSP CVS Repository

ossp - ossp-pkg/rc/rc_config.c 1.2
Not logged in
[Honeypot]  [Browse]  [Directory]  [Home]  [Login
[Reports]  [Search]  [Ticket]  [Timeline
  [Raw

ossp-pkg/rc/rc_config.c 1.2
/*  rc - OSSP Run-command processor
**  Copyright (c) 2002 Cable & Wireless Deutschland GmbH
**  Copyright (c) 2002 The OSSP Project <http://www.ossp.org/>
**  Copyright (c) 2002 Ralf S. Engelschall
**
**  This file is part of OSSP rc, a portable Run-command 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_config.c: Run-command processor ISO C source file
*/

#include <stdio.h>
#include <stdlib.h>

#include "rc.h"
#include "rc_private.h"
#include "rc_const.h"   /* String constants               */
#include "rc_option.h"  /* Option operations rely on popt */
#include "val.h"        /* OSSP val library holds config  */


/***************************************
* configInit(rc_config_t)              *
* Initialize a configuration           *
***************************************/
rc_return_t configInit(rc_config_t **ppConfig)
{
    ex_t Except;

    *ppConfig = malloc(sizeof(rc_config_t));
    if (!*ppConfig)
        return(RC_THROW(RC_ERR_MEM));

    ex_try {
        val_create(&(*ppConfig)->pVal);
    }
    ex_catch(Except) {
        rethrow;
    }

    return(RC_THROW(RC_OK));
}

/************************************************
* configFill(rc_config_t, int, char **)         *
* Fill a configuration                          *
************************************************/
rc_return_t configFill(rc_config_t *pConfig, int argc, char *argv[])
{
    ex_t Except;
    char *pTestopt = NULL;
    const char *pFuncpath = "/sfw/etc/rc.func";

    ex_try {
        val_reg(pConfig->pVal, RC_FNC_NAME, VAL_TYPE_PTR, RC_FNC_DESC, NULL);
        val_set(pConfig->pVal, RC_FNC_NAME, pFuncpath);
        val_get(pConfig->pVal, RC_FNC_NAME, &pTestopt);
        fprintf(stderr, "%s\n", pTestopt);
    }
    ex_catch(Except) {
        rethrow;
    }

    return(RC_THROW(RC_OK));
}

/***************************************
* configDestruct(rc_config_t)          *
* Destruct a configuration             *
***************************************/
rc_return_t configDestruct(rc_config_t *pConfig)
{
    ex_t Except;

    assert(pConfig);
    free(pConfig);

    ex_try {
        val_destroy(pConfig->pVal);
    }
    ex_catch(Except) {
        rethrow;
        return(RC_THROW(RC_ERR_INT));
    }

    return(RC_THROW(RC_OK));
}

CVSTrac 2.0.1