source: trunk/essentials/app-arch/tar/lib/openat-priv.h

Last change on this file was 3342, checked in by bird, 18 years ago

tar 1.16.1

File size: 1.8 KB
Line 
1/* Internals for openat-like functions.
2
3 Copyright (C) 2005, 2006 Free Software Foundation, Inc.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
8 any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software Foundation,
17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
18
19/* written by Jim Meyering */
20
21#include <errno.h>
22#include <stdlib.h>
23
24#define OPENAT_BUFFER_SIZE 512
25char *openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file);
26
27/* Some systems don't have ENOSYS. */
28#ifndef ENOSYS
29# ifdef ENOTSUP
30# define ENOSYS ENOTSUP
31# else
32/* Some systems don't have ENOTSUP either. */
33# define ENOSYS EINVAL
34# endif
35#endif
36
37/* Some systems don't have EOPNOTSUPP. */
38#ifndef EOPNOTSUPP
39# ifdef ENOTSUP
40# define EOPNOTSUPP ENOTSUP
41# else
42/* Some systems don't have ENOTSUP either. */
43# define EOPNOTSUPP EINVAL
44# endif
45#endif
46
47/* Trying to access a BUILD_PROC_NAME file will fail on systems without
48 /proc support, and even on systems *with* ProcFS support. Return
49 nonzero if the failure may be legitimate, e.g., because /proc is not
50 readable, or the particular .../fd/N directory is not present. */
51#define EXPECTED_ERRNO(Errno) \
52 ((Errno) == ENOTDIR || (Errno) == ENOENT \
53 || (Errno) == EPERM || (Errno) == EACCES \
54 || (Errno) == ENOSYS /* Solaris 8 */ \
55 || (Errno) == EOPNOTSUPP /* FreeBSD */)
Note: See TracBrowser for help on using the repository browser.