root/maint/gnulib/lib/canonicalize.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /* Return the canonical absolute name of a given file.
   2    Copyright (C) 1996-2007, 2009-2021 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 3 of the License, or
   7    (at your option) 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.  If not, see <https://www.gnu.org/licenses/>.  */
  16 
  17 #ifndef CANONICALIZE_H_
  18 # define CANONICALIZE_H_
  19 
  20 #include <stdlib.h> /* for canonicalize_file_name */
  21 
  22 #define CAN_MODE_MASK (CAN_EXISTING | CAN_ALL_BUT_LAST | CAN_MISSING)
  23 
  24 #ifdef __cplusplus
  25 extern "C" {
  26 #endif
  27 
  28 enum canonicalize_mode_t
  29   {
  30     /* All components must exist.  */
  31     CAN_EXISTING = 0,
  32 
  33     /* All components excluding last one must exist.  */
  34     CAN_ALL_BUT_LAST = 1,
  35 
  36     /* No requirements on components existence.  */
  37     CAN_MISSING = 2,
  38 
  39     /* Don't expand symlinks.  */
  40     CAN_NOLINKS = 4
  41   };
  42 typedef enum canonicalize_mode_t canonicalize_mode_t;
  43 
  44 /* Return the canonical absolute name of file NAME, while treating
  45    missing elements according to CAN_MODE.  A canonical name
  46    does not contain any `.', `..' components nor any repeated file name
  47    separators ('/') or, depending on other CAN_MODE flags, symlinks.
  48    Whether components must exist or not depends on canonicalize mode.
  49    The result is malloc'd.
  50    Upon failure, return NULL with errno set.  */
  51 char *canonicalize_filename_mode (const char *, canonicalize_mode_t)
  52   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE;
  53 
  54 #ifdef __cplusplus
  55 }
  56 #endif
  57 
  58 #endif /* !CANONICALIZE_H_ */

/* [previous][next][first][last][top][bottom][index][help] */