New module 'mbsrchr'.
[gnulib.git] / lib / canonicalize.h
index 4c9596f..5c4d3f1 100644 (file)
@@ -1,5 +1,5 @@
 /* Return the canonical absolute name of a given file.
-   Copyright (C) 1996-2004 Free Software Foundation, Inc.
+   Copyright (C) 1996-2007 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
 #ifndef CANONICALIZE_H_
 # define CANONICALIZE_H_
 
+# if GNULIB_CANONICALIZE
 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.  */
@@ -32,9 +33,21 @@ enum canonicalize_mode_t
   };
 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.  */
 char *canonicalize_filename_mode (const char *, canonicalize_mode_t);
+# endif
 
-# if !HAVE_CANONICALIZE_FILE_NAME
+# if HAVE_DECL_CANONICALIZE_FILE_NAME
+#  include <stdlib.h>
+# else
+/* Return a malloc'd string containing the canonical absolute name of
+   the named file.  If any file name component does not exist or is a
+   symlink to a nonexistent file, return NULL.  A canonical name does
+   not contain any `.', `..' components nor any repeated file name
+   separators ('/') or symlinks.  */
 char *canonicalize_file_name (const char *);
 # endif