Removed definition "LIB= rpc". We want libc.a to contain librpc.a, not
[unix-history] / .ref-386BSD-0.1-patchkit / usr / othersrc / public / cvs-1.3 / lib / strippath.c
CommitLineData
0e542ab6
WJ
1/* strippath.c -- remove unnecessary components from a path specifier
2 Copyright (C) 1992 Free Software Foundation, Inc.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
17
18#if defined(STDC_HEADERS) || defined(USG)
19#include <string.h>
20#ifndef index
21#define index strchr
22#endif
23#else
24#include <strings.h>
25#endif
26
27#include <stdio.h>
28
29#if __STDC__
30static void remove_component(char *beginc, char *endc);
31void strip_trailing_slashes(char *path);
32#else
33static void remove_component();
34void strip_trailing_slashes();
35#endif /* __STDC__ */
36
37/* Remove unnecessary components from PATH. */
38
39void
40strip_path (path)
41 char *path;
42{
43 int stripped = 0;
44 char *cp, *slash;
45
46 for (cp = path; (slash = index(cp, '/')) != NULL; cp = slash)
47 {
48 *slash = '\0';
49 if ((!*cp && (cp != path || stripped)) ||
50 strcmp(cp, ".") == 0 || strcmp(cp, "/") == 0)
51 {
52 stripped = 1;
53 remove_component(cp, slash);
54 slash = cp;
55 }
56 else
57 {
58 *slash++ = '/';
59 }
60 }
61 strip_trailing_slashes(path);
62}
63
64/* Remove the component delimited by BEGINC and ENDC from the path */
65
66static void
67remove_component (beginc, endc)
68 char *beginc;
69 char *endc;
70{
71 for (endc++; *endc; endc++)
72 *beginc++ = *endc;
73 *beginc = '\0';
74}