diff options
author | Pádraig Brady <P@draigBrady.com> | 2011-12-29 23:49:53 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2011-12-30 12:43:43 +0000 |
commit | 8bcd0399386f6c3298ee63da74c58f80053d5a42 (patch) | |
tree | 4129f0562bb854b9135b71b02c0972bcc1ee1a10 /lib/canonicalize.h | |
parent | 771de9614b52042c1870625d412263a22708152e (diff) | |
download | gnulib-8bcd0399386f6c3298ee63da74c58f80053d5a42.tar.gz |
canonicalize: add support for not resolving symlinks
This will initially be used by a new coreutils realpath command.
* lib/canonicalize.h: Add the CAN_NOLINKS flag to
indicate we don't want to follow symlinks. Also
provide CAN_MODE_MASK to aid setting these existing
mutually exclusive values.
* lib/canonicalize.c (canonicalize_filename_mode):
Extract the flags from can_mode parameter, which
are currently just used to select between stat()
and lstat(). Also ensure that mutually exclusive
values are flagged immediately as invalid.
* tests/test-canonicalize.c: Verify symlinks are
not followed, and that invalid flag combinations
are diagnosed.
Diffstat (limited to 'lib/canonicalize.h')
-rw-r--r-- | lib/canonicalize.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/canonicalize.h b/lib/canonicalize.h index 04ad79cee7..1887b72a2d 100644 --- a/lib/canonicalize.h +++ b/lib/canonicalize.h @@ -19,6 +19,8 @@ #include <stdlib.h> /* 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,7 +30,10 @@ 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; |