annotate lib/openat-priv.h @ 9258:bee5960c276a

Rename search_.h to search.in.h.
author Bruno Haible <bruno@clisp.org>
date Tue, 02 Oct 2007 00:24:48 +0200
parents 4d22e9da1fe7
children bbbbbf4cd1c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7389
0f8d70c02f29 [lib/ChangeLog]
Paul Eggert <eggert@cs.ucla.edu>
parents: 7151
diff changeset
1 /* Internals for openat-like functions.
0f8d70c02f29 [lib/ChangeLog]
Paul Eggert <eggert@cs.ucla.edu>
parents: 7151
diff changeset
2
0f8d70c02f29 [lib/ChangeLog]
Paul Eggert <eggert@cs.ucla.edu>
parents: 7151
diff changeset
3 Copyright (C) 2005, 2006 Free Software Foundation, Inc.
6527
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
4
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
5 This program is free software; you can redistribute it and/or modify
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
7 the Free Software Foundation; either version 2, or (at your option)
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
8 any later version.
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
9
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
13 GNU General Public License for more details.
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
14
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
16 along with this program; if not, write to the Free Software Foundation,
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
18
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
19 /* written by Jim Meyering */
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
20
7151
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
21 #include <errno.h>
7389
0f8d70c02f29 [lib/ChangeLog]
Paul Eggert <eggert@cs.ucla.edu>
parents: 7151
diff changeset
22 #include <stdlib.h>
6527
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
23
7389
0f8d70c02f29 [lib/ChangeLog]
Paul Eggert <eggert@cs.ucla.edu>
parents: 7151
diff changeset
24 #define OPENAT_BUFFER_SIZE 512
0f8d70c02f29 [lib/ChangeLog]
Paul Eggert <eggert@cs.ucla.edu>
parents: 7151
diff changeset
25 char *openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file);
6527
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
26
7151
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
27 /* Some systems don't have ENOSYS. */
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
28 #ifndef ENOSYS
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
29 # ifdef ENOTSUP
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
30 # define ENOSYS ENOTSUP
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
31 # else
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
32 /* Some systems don't have ENOTSUP either. */
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
33 # define ENOSYS EINVAL
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
34 # endif
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
35 #endif
43e3888c56c4 Update from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6527
diff changeset
36
7537
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
37 /* Some systems don't have EOPNOTSUPP. */
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
38 #ifndef EOPNOTSUPP
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
39 # ifdef ENOTSUP
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
40 # define EOPNOTSUPP ENOTSUP
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
41 # else
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
42 /* Some systems don't have ENOTSUP either. */
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
43 # define EOPNOTSUPP EINVAL
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
44 # endif
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
45 #endif
4d22e9da1fe7 * lib/openat-priv.h (EOPNOTSUPP): Provide fallback definition.
Jim Meyering <jim@meyering.net>
parents: 7389
diff changeset
46
6527
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
47 /* Trying to access a BUILD_PROC_NAME file will fail on systems without
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
48 /proc support, and even on systems *with* ProcFS support. Return
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
49 nonzero if the failure may be legitimate, e.g., because /proc is not
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
50 readable, or the particular .../fd/N directory is not present. */
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
51 #define EXPECTED_ERRNO(Errno) \
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
52 ((Errno) == ENOTDIR || (Errno) == ENOENT \
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
53 || (Errno) == EPERM || (Errno) == EACCES \
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
54 || (Errno) == ENOSYS /* Solaris 8 */ \
6b31c8787689 Sync from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents:
diff changeset
55 || (Errno) == EOPNOTSUPP /* FreeBSD */)