regfree.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* regfree.c - regular expression handling */
  2. /*
  3. modification history
  4. --------------------
  5. 01e,13apr98,wmd  changed name of regfree to wtxRegFree if HOST.
  6. 01d,30sep96,elp  put in share, adapted to be compiled on target side
  7.  (SPR# 6775).
  8. 01c,10jul96,pad   undefined redefinition of malloc (AIX specific).
  9. 01b,20mar95,p_m   moved #include "host.h" on top of includes list, this is
  10.   necessary on Windows platforms.       
  11.                   changed #include <regex.h> to #include "regex.h".
  12. 01a,10jan95,jcf   created.
  13. */
  14. /*
  15. DESCRIPTION
  16. This library is *not* the original BSD distribution.  Though the changes
  17. were completely cosmetic (file naming, and such), the user of this library
  18. is forewarned.
  19. AUTHOR: Henry Spencer
  20. */
  21. /*-
  22.  * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  23.  * Copyright (c) 1992, 1993, 1994
  24.  * The Regents of the University of California.  All rights reserved.
  25.  *
  26.  * This code is derived from software contributed to Berkeley by
  27.  * Henry Spencer.
  28.  *
  29.  * Redistribution and use in source and binary forms, with or without
  30.  * modification, are permitted provided that the following conditions
  31.  * are met:
  32.  * 1. Redistributions of source code must retain the above copyright
  33.  *    notice, this list of conditions and the following disclaimer.
  34.  * 2. Redistributions in binary form must reproduce the above copyright
  35.  *    notice, this list of conditions and the following disclaimer in the
  36.  *    documentation and/or other materials provided with the distribution.
  37.  * 3. All advertising materials mentioning features or use of this software
  38.  *    must display the following acknowledgement:
  39.  * This product includes software developed by the University of
  40.  * California, Berkeley and its contributors.
  41.  * 4. Neither the name of the University nor the names of its contributors
  42.  *    may be used to endorse or promote products derived from this software
  43.  *    without specific prior written permission.
  44.  *
  45.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  46.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  47.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  48.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  49.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  50.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  51.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  52.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  53.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  54.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  55.  * SUCH DAMAGE.
  56.  *
  57.  * @(#)regfree.c 8.3 (Berkeley) 3/20/94
  58.  */
  59. #if defined(LIBC_SCCS) && !defined(lint)
  60. static char sccsid[] = "@(#)regfree.c 8.3 (Berkeley) 3/20/94";
  61. #endif /* LIBC_SCCS and not lint */
  62. #ifdef HOST
  63. #include "host.h"
  64. #if defined(RS6000_AIX4) || defined (RS6000_AIX3)
  65. #undef malloc
  66. #endif
  67. #include <sys/types.h>
  68. #include <stdio.h>
  69. #include <stdlib.h>
  70. #else
  71. #include "vxWorks.h"
  72. #include "stdio.h"
  73. #include "stdlib.h"
  74. #endif /* HOST */
  75. #include "regex.h"
  76. #include "regex2.h"
  77. /*
  78.  - regfree - free everything
  79.  = extern void regfree(regex_t *);
  80.  */
  81. void
  82. #ifdef HOST
  83. wtxRegFree(preg)
  84. #else
  85. regfree(preg)
  86. #endif /* HOST */
  87. regex_t *preg;
  88. {
  89. register struct re_guts *g;
  90. if (preg->re_magic != MAGIC1) /* oops */
  91. return; /* nice to complain, but hard */
  92. g = preg->re_g;
  93. if (g == NULL || g->magic != MAGIC2) /* oops again */
  94. return;
  95. preg->re_magic = 0; /* mark it invalid */
  96. g->magic = 0; /* mark it invalid */
  97. if (g->strip != NULL)
  98. free((char *)g->strip);
  99. if (g->sets != NULL)
  100. free((char *)g->sets);
  101. if (g->setbits != NULL)
  102. free((char *)g->setbits);
  103. if (g->must != NULL)
  104. free(g->must);
  105. free((char *)g);
  106. }