*** /dev/null Sat Nov 23 01:14:19 2024
--- - Sat Nov 23 01:14:26 2024
***************
*** 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 <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_lab.c: Run-command processor ISO C source file
+ */
+
+ #include <string.h> /* For string copy and such data ops */
+ #include <stdlib.h> /* 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));
+ }
+
|