Index: ossp-pkg/rc/Makefile.in RCS File: /v/ossp/cvs/ossp-pkg/rc/Makefile.in,v rcsdiff -q -kk '-r1.31' '-r1.32' -u '/v/ossp/cvs/ossp-pkg/rc/Makefile.in,v' 2>/dev/null --- Makefile.in 2002/08/02 16:38:09 1.31 +++ Makefile.in 2003/05/20 11:45:11 1.32 @@ -59,10 +59,10 @@ TARGET_PROGS = rc TARGET_MANS = rc.1 rc-sample.5 -SRCS = rc.c rc_error.c rc_anal.c rc_script.c rc_sect.c rc_config.c \ +SRCS = rc.c rc_error.c rc_anal.c rc_script.c rc_lab.c rc_sect.c rc_config.c \ rc_cliopt.c rc_proc.c rc_version.c rc_pcre.c rc_util.c -OBJS = rc.o rc_error.o rc_anal.o rc_script.o rc_sect.o rc_config.o \ +OBJS = rc.o rc_error.o rc_anal.o rc_script.o rc_lab.o rc_sect.o rc_config.o \ rc_cliopt.o rc_proc.o rc_version.o rc_pcre.o rc_util.o SUBDIRS = @SUBDIR_EX@ @SUBDIR_POPT@ Index: ossp-pkg/rc/rc_lab.c RCS File: /v/ossp/cvs/ossp-pkg/rc/Attic/rc_lab.c,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/rc/Attic/rc_lab.c,v' | diff -u /dev/null - -L'ossp-pkg/rc/rc_lab.c' 2>/dev/null --- ossp-pkg/rc/rc_lab.c +++ - 2024-05-06 21:25:50.378972890 +0200 @@ -0,0 +1,104 @@ +/* OSSP rc - Run-command processor +** Copyright (c) 2002 Ralf S. Engelschall +** Copyright (c) 2002 Cable & Wireless Deutschland GmbH +** Copyright (c) 2002 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_lab.c: Run-command processor ISO C source file +*/ + +#include /* For string copy and such data ops */ +#include /* For memory ops */ + +#include "rc.h" /* Public Rc interface */ + + +/************************************************ +* labelNew(void) * +* Construct a new label * +************************************************/ +rc_label_t *labelNew(const char *szName) +{ + rc_label_t *pLab = NULL; + + pLab = (rc_label_t *)calloc(1, sizeof(rc_label_t)); + + if (pLab) { + pLab->m_szName = malloc((strlen(szName) + 1) * sizeof(char)); + strcpy(pLab->m_szName, szName); + } + else + RC_THROW(RC_ERR_MEM); + + return(pLab); +} + +/**************************************************** +* labelAppendsec(rc_label_t *, rc_section_t *) * +* Append a section to this label * +****************************************************/ +rc_return_t labelAppendsec(rc_label_t *pLabel, rc_section_t *pInsec) +{ + assert(pLabel); /* Label parameter must be valid */ + + if (pInsec) { + pLabel->m_ppSecvec = realloc(pLabel->m_ppSecvec, sizeof(rc_section_t *)\ + * (pLabel->m_nSecs + 1)); + pLabel->m_ppSecvec[pLabel->m_nSecs++] = pInsec; /* Just copy pointer */ + } + else + TRACE("Problem with labelAppendsec"); +/* return(RC_THROW(RC_ERR_USE));*/ + + return(RC_THROW(RC_OK)); +} + +/************************************************ +* labelDelete(rc_label_t *) * +* Destruct a label * +************************************************/ +rc_return_t labelDelete(rc_label_t *pLab) +{ + int nSecs = pLab->m_nSecs; + + /* Cleanup our junk */ + if (pLab) { + pLab->m_nSecs = 0; /* Blank the section count */ + if (pLab->m_szName) /* Destroy the rc name */ + free(pLab->m_szName); + while (nSecs-- > 0) { /* Destroy the section vector */ + if (pLab->m_ppSecvec[nSecs]) { + sectionDelete(pLab->m_ppSecvec[nSecs]); + pLab->m_ppSecvec[nSecs] = NULL; + } + } + free(pLab->m_ppSecvec); + pLab->m_ppSecvec = NULL; + free(pLab); + } + else /* Dumbass passed an empty label object */ + assert(FALSE); + + return(RC_THROW(RC_OK)); +} +