X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fcanonicalize.h;h=41ff311debd23d9115bf9841ad6e9d24237202d4;hb=43593319b31e6b0175b8eec4433bac744959822d;hp=bcf84f6f9bc0d6f2dddcec77259e589741c6c973;hpb=99ad8ac789556142ef090fcaefae36aabef00ca4;p=gnulib.git diff --git a/lib/canonicalize.h b/lib/canonicalize.h index bcf84f6f9..41ff311de 100644 --- a/lib/canonicalize.h +++ b/lib/canonicalize.h @@ -1,5 +1,5 @@ /* Return the canonical absolute name of a given file. - Copyright (C) 1996-2007, 2009 Free Software Foundation, Inc. + Copyright (C) 1996-2007, 2009-2013 Free Software Foundation, Inc. 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 @@ -19,6 +19,8 @@ #include /* for canonicalize_file_name */ +#define CAN_MODE_MASK (CAN_EXISTING | CAN_ALL_BUT_LAST | CAN_MISSING) + enum canonicalize_mode_t { /* All components must exist. */ @@ -28,14 +30,19 @@ enum canonicalize_mode_t 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 a malloc'd string containing the canonical absolute name of - the named file. This acts like canonicalize_file_name, except that - whether components must exist depends on the canonicalize_mode_t - argument. */ +/* 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); #endif /* !CANONICALIZE_H_ */