Deleted Added
full compact
util.c (17980) util.c (18829)
1/*
2 * Copyright (c) 1995 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
3 * Copyright (c) 1989, 1993
4 * The Regents of the University of California. All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * James A. Woods.
8 *

--- 20 unchanged lines hidden (view full) ---

29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 * SUCH DAMAGE.
36 *
1/*
2 * Copyright (c) 1995 Wolfram Schneider <wosch@FreeBSD.org>. Berlin.
3 * Copyright (c) 1989, 1993
4 * The Regents of the University of California. All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * James A. Woods.
8 *

--- 20 unchanged lines hidden (view full) ---

29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 * SUCH DAMAGE.
36 *
37 * $Id: util.c,v 1.2 1996/08/29 22:39:41 wosch Exp wosch $
37 * $Id: util.c,v 1.1 1996/08/31 23:14:54 wosch Exp $
38 */
39
40
41#include <stdlib.h>
42#include <string.h>
43#include <err.h>
44#include <sys/param.h>
45#include <stdio.h>

--- 105 unchanged lines hidden (view full) ---

151
152char *
153patprep(name)
154 char *name;
155{
156 register char *endmark, *p, *subp;
157
158 subp = globfree;
38 */
39
40
41#include <stdlib.h>
42#include <string.h>
43#include <err.h>
44#include <sys/param.h>
45#include <stdio.h>

--- 105 unchanged lines hidden (view full) ---

151
152char *
153patprep(name)
154 char *name;
155{
156 register char *endmark, *p, *subp;
157
158 subp = globfree;
159 *subp++ = '\0';
159 *subp++ = '\0'; /* set first element to '\0' */
160 p = name + strlen(name) - 1;
160 p = name + strlen(name) - 1;
161 /* skip trailing metacharacters (and [] ranges) */
161
162 /* skip trailing metacharacters */
162 for (; p >= name; p--)
163 for (; p >= name; p--)
163 if (index("*?", *p) == 0)
164 if (index(LOCATE_REG, *p) == NULL)
164 break;
165 break;
165 if (p < name)
166 p = name;
167 if (*p == ']')
168 for (p--; p >= name; p--)
169 if (*p == '[') {
170 p--;
171 break;
172 }
173 if (p < name)
174 p = name;
175 /*
176 * if pattern has only metacharacters, check every path (force '/'
177 * search)
166
167 /*
168 * check if maybe we are in a character class
169 *
170 * 'foo.[ch]'
171 * |----< p
178 */
172 */
179 if ((p == name) && index("?*[]", *p) != 0)
173 if (p >= name &&
174 (index(p, '[') != NULL || index(p, ']') != NULL)) {
175 for (p = name; *p != '\0'; p++)
176 if (*p == ']' || *p == '[')
177 break;
178 p--;
179
180 /*
181 * cannot find a non-meta character, give up
182 * '*\*[a-z]'
183 * |-------< p
184 */
185 if (p >= name && index(LOCATE_REG, *p) != NULL)
186 p = name - 1;
187 }
188
189 if (p < name)
190 /* only meta chars: "???", force '/' search */
180 *subp++ = '/';
191 *subp++ = '/';
192
181 else {
182 for (endmark = p; p >= name; p--)
193 else {
194 for (endmark = p; p >= name; p--)
183 if (index("]*?", *p) != 0)
195 if (index(LOCATE_REG, *p) != NULL)
184 break;
185 for (++p;
186 (p <= endmark) && subp < (globfree + sizeof(globfree));)
187 *subp++ = *p++;
188 }
189 *subp = '\0';
190 return(--subp);
191}

--- 76 unchanged lines hidden ---
196 break;
197 for (++p;
198 (p <= endmark) && subp < (globfree + sizeof(globfree));)
199 *subp++ = *p++;
200 }
201 *subp = '\0';
202 return(--subp);
203}

--- 76 unchanged lines hidden ---