X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fcanonicalize.h;h=5fac11910aae06ff17635ffb082114a271adf9cf;hb=7ef6c64e210ac0979d7e8ac69bc5b5208c2405ab;hp=4c9596f98ff34bff5849d04145f4bdb3168419b3;hpb=267a39bafd249d7eb9c37df06dc6defcf41cb343;p=gnulib.git diff --git a/lib/canonicalize.h b/lib/canonicalize.h index 4c9596f98..5fac11910 100644 --- a/lib/canonicalize.h +++ b/lib/canonicalize.h @@ -1,10 +1,10 @@ /* Return the canonical absolute name of a given file. - Copyright (C) 1996-2004 Free Software Foundation, Inc. + Copyright (C) 1996-2007, 2009-2014 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -12,30 +12,37 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ #ifndef CANONICALIZE_H_ # define CANONICALIZE_H_ +#include /* for canonicalize_file_name */ + +#define CAN_MODE_MASK (CAN_EXISTING | CAN_ALL_BUT_LAST | CAN_MISSING) + enum canonicalize_mode_t { - /* All path components must exist. */ + /* All components must exist. */ CAN_EXISTING = 0, - /* All path components excluding last one must exist. */ + /* All components excluding last one must exist. */ CAN_ALL_BUT_LAST = 1, /* No requirements on components existence. */ - CAN_MISSING = 2 + CAN_MISSING = 2, + + /* Don't expand symlinks. */ + CAN_NOLINKS = 4 }; typedef enum canonicalize_mode_t canonicalize_mode_t; +/* Return the canonical absolute name of file NAME, while treating + missing elements according to CAN_MODE. A canonical name + does not contain any `.', `..' components nor any repeated file name + separators ('/') or, depending on other CAN_MODE flags, symlinks. + Whether components must exist or not depends on canonicalize mode. + The result is malloc'd. */ char *canonicalize_filename_mode (const char *, canonicalize_mode_t); -# if !HAVE_CANONICALIZE_FILE_NAME -char *canonicalize_file_name (const char *); -# endif - #endif /* !CANONICALIZE_H_ */