
1: /* Return the canonical absolute name of a given file. 2: Copyright (C) 1996-2007 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; see the file COPYING. 16: If not, write to the Free Software Foundation, 17: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ 18: 19: #ifndef CANONICALIZE_H_ 20: # define CANONICALIZE_H_ 21: 22: # if GNULIB_CANONICALIZE 23: enum canonicalize_mode_t 24: { 25: /* All components must exist. */ 26: CAN_EXISTING = 0, 27: 28: /* All components excluding last one must exist. */ 29: CAN_ALL_BUT_LAST = 1, 30: 31: /* No requirements on components existence. */ 32: CAN_MISSING = 2 33: }; 34: typedef enum canonicalize_mode_t canonicalize_mode_t; 35: 36: /* Return a malloc'd string containing the canonical absolute name of 37: the named file. This acts like canonicalize_file_name, except that 38: whether components must exist depends on the canonicalize_mode_t 39: argument. */ 40: char *canonicalize_filename_mode (const char *, canonicalize_mode_t); 41: # endif 42: 43: # if HAVE_DECL_CANONICALIZE_FILE_NAME 44: # include <stdlib.h> 45: # else 46: /* Return a malloc'd string containing the canonical absolute name of 47: the named file. If any file name component does not exist or is a 48: symlink to a nonexistent file, return NULL. A canonical name does 49: not contain any `.', `..' components nor any repeated file name 50: separators ('/') or symlinks. */ 51: char *canonicalize_file_name (const char *); 52: # endif 53: 54: #endif /* !CANONICALIZE_H_ */