BRL-CAD
strsep.c
Go to the documentation of this file.
1 /*
2  * S T R S E P . C
3  *
4  * Copyright (c) 1990, 1993
5  * The Regents of the University of California. All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * * Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  * * Neither the name of the University nor the names of its contributors
16  * may be used to endorse or promote products derived from this software
17  * without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29  * SUCH DAMAGE.
30  */
31 
32 #include "common.h"
33 
34 /* quell warnings */
35 #if defined(HAVE_WUNUSED_CONST_VARIABLE)
36 # if HAVE_GCC_DIAG_PRAGMAS
37 # pragma GCC diagnostic push /* begin ignoring warnings */
38 # pragma GCC diagnostic ignored "-Wunused-const-variable"
39 # elif HAVE_CLANG_DIAG_PRAGMAS
40 # pragma clang diagnostic push /* begin ignoring warnings */
41 # pragma clang diagnostic ignored "-Wunused-const-variable"
42 # endif
43 #endif
44 
45 /* quell empty-compilation unit warnings */
46 static const int unused = 0;
47 
48 #if defined(HAVE_WUNUSED_CONST_VARIABLE)
49 # if HAVE_GCC_DIAG_PRAGMAS
50 # pragma GCC diagnostic pop /* end ignoring warnings */
51 # elif HAVE_CLANG_DIAG_PRAGMAS
52 # pragma clang diagnostic pop /* end ignoring warnings */
53 # endif
54 #endif
55 
56 /*
57  * This BSD version of strsep() is made available to systems that
58  * don't have their own.
59  */
60 #ifndef HAVE_STRSEP
61 #include "sysv.h"
62 #include <stdlib.h>
63 
64 /*
65  * Get next token from string *stringp, where tokens are nonempty
66  * strings separated by characters from delim.
67  *
68  * Writes NULLs into the string at *stringp to end tokens.
69  * delim need not remain constant from call to call.
70  * On return, *stringp points past the last NUL written (if there might
71  * be further tokens), or is NULL (if there are definitely no more tokens).
72  *
73  * If *stringp is NULL, strsep returns NULL.
74  */
75 char *
76 strsep(register char **stringp, register const char *delim)
77 {
78  register char *s;
79  register const char *spanp;
80  register int c, sc;
81  char *tok;
82 
83  if ((s = *stringp) == NULL)
84  return NULL;
85  for (tok = s;;) {
86  c = *s++;
87  spanp = delim;
88  do {
89  if ((sc = *spanp++) == c) {
90  if (c == 0)
91  s = NULL;
92  else
93  s[-1] = 0;
94  *stringp = s;
95  return tok;
96  }
97  } while (sc != 0);
98  }
99  /* NOTREACHED */
100 }
101 
102 #endif
103 
104 /*
105  * Local Variables:
106  * mode: C
107  * tab-width: 8
108  * indent-tabs-mode: t
109  * c-file-style: "stroustrup"
110  * End:
111  * ex: shiftwidth=4 tabstop=8
112  */
if lu s
Definition: nmg_mod.c:3860
Header file for the BRL-CAD common definitions.
char * strsep(register char **stringp, register const char *delim)
Definition: strsep.c:76