Changeset 1770 in MondoRescue for branches/stable/mindi-busybox/libbb/simplify_path.c
- Timestamp:
- Nov 6, 2007, 11:01:53 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/stable/mindi-busybox/libbb/simplify_path.c
r821 r1770 5 5 * Copyright (C) 2001 Manuel Novoa III <mjn3@codepoet.org> 6 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 * 7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 21 8 */ 22 9 23 #include <stdlib.h>24 10 #include "libbb.h" 25 11 … … 29 15 30 16 if (path[0] == '/') 31 start = bb_xstrdup(path);17 start = xstrdup(path); 32 18 else { 33 s = x getcwd(NULL);19 s = xrealloc_getcwd_or_warn(NULL); 34 20 start = concat_path_file(s, path); 35 21 free(s); … … 41 27 if (*s == '/') { /* skip duplicate (or initial) slash */ 42 28 continue; 43 } else if (*s == '.') { 44 if (s[1] == '/' || s[1] == 0) { /* remove extra '.' */ 29 } 30 if (*s == '.') { 31 if (s[1] == '/' || !s[1]) { /* remove extra '.' */ 45 32 continue; 46 } else if ((s[1] == '.') && (s[2] == '/' || s[2] == 0)) { 33 } 34 if ((s[1] == '.') && (s[2] == '/' || !s[2])) { 47 35 ++s; 48 36 if (p > start) { 49 while (*--p != '/'); /* omit previous dir */ 37 while (*--p != '/') /* omit previous dir */ 38 continue; 50 39 } 51 40 continue;
Note:
See TracChangeset
for help on using the changeset viewer.