1/*
2 * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
3 *
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.  Oracle designates this
9 * particular file as subject to the "Classpath" exception as provided
10 * by Oracle in the LICENSE file that accompanied this code.
11 *
12 * This code is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 * version 2 for more details (a copy is included in the LICENSE file that
16 * accompanied this code).
17 *
18 * You should have received a copy of the GNU General Public License version
19 * 2 along with this work; if not, write to the Free Software Foundation,
20 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21 *
22 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
23 * or visit www.oracle.com if you need additional information or have any
24 * questions.
25 *
26 */
27
28@@END_COPYRIGHT@@
29
30#include <stdio.h>
31#include <errno.h>
32#include <unistd.h>
33#include <fcntl.h>
34#include <sys/stat.h>
35
36/* On Solaris, "sun" is defined as a macro. Undefine to make package
37   declaration valid */
38#undef sun
39
40/* To be able to name the Java constants the same as the C constants without
41   having the preprocessor rewrite those identifiers, add PREFIX_ to all
42   identifiers matching a C constant. The PREFIX_ is filtered out in the
43   makefile. */
44
45@@START_HERE@@
46
47package sun.nio.fs;
48class UnixConstants {
49    private UnixConstants() { }
50    static final int PREFIX_O_RDONLY = O_RDONLY;
51    static final int PREFIX_O_WRONLY = O_WRONLY;
52    static final int PREFIX_O_RDWR = O_RDWR;
53    static final int PREFIX_O_APPEND = O_APPEND;
54    static final int PREFIX_O_CREAT = O_CREAT;
55    static final int PREFIX_O_EXCL = O_EXCL;
56    static final int PREFIX_O_TRUNC = O_TRUNC;
57    static final int PREFIX_O_SYNC = O_SYNC;
58
59#ifndef O_DSYNC
60    // At least FreeBSD doesn't define O_DSYNC
61    static final int PREFIX_O_DSYNC = O_SYNC;
62#else
63    static final int PREFIX_O_DSYNC = O_DSYNC;
64#endif
65
66#ifdef O_NOFOLLOW
67    static final int PREFIX_O_NOFOLLOW = O_NOFOLLOW;
68#else
69    // not supported (dummy values will not be used at runtime).
70    static final int PREFIX_O_NOFOLLOW = 00;
71#endif
72
73
74    static final int PREFIX_S_IAMB =
75        (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP|S_IROTH|S_IWOTH|S_IXOTH);
76    static final int PREFIX_S_IRUSR = S_IRUSR;
77    static final int PREFIX_S_IWUSR = S_IWUSR;
78    static final int PREFIX_S_IXUSR = S_IXUSR;
79    static final int PREFIX_S_IRGRP = S_IRGRP;
80    static final int PREFIX_S_IWGRP = S_IWGRP;
81    static final int PREFIX_S_IXGRP = S_IXGRP;
82    static final int PREFIX_S_IROTH = S_IROTH;
83    static final int PREFIX_S_IWOTH = S_IWOTH;
84    static final int PREFIX_S_IXOTH = S_IXOTH;
85
86    static final int PREFIX_S_IFMT = S_IFMT;
87    static final int PREFIX_S_IFREG = S_IFREG;
88    static final int PREFIX_S_IFDIR = S_IFDIR;
89    static final int PREFIX_S_IFLNK = S_IFLNK;
90    static final int PREFIX_S_IFCHR = S_IFCHR;
91    static final int PREFIX_S_IFBLK = S_IFBLK;
92    static final int PREFIX_S_IFIFO = S_IFIFO;
93    static final int PREFIX_R_OK = R_OK;
94    static final int PREFIX_W_OK = W_OK;
95    static final int PREFIX_X_OK = X_OK;
96    static final int PREFIX_F_OK = F_OK;
97    static final int PREFIX_ENOENT = ENOENT;
98    static final int PREFIX_ENXIO = ENXIO;
99    static final int PREFIX_EACCES = EACCES;
100    static final int PREFIX_EEXIST = EEXIST;
101    static final int PREFIX_ENOTDIR = ENOTDIR;
102    static final int PREFIX_EINVAL = EINVAL;
103    static final int PREFIX_EXDEV = EXDEV;
104    static final int PREFIX_EISDIR = EISDIR;
105    static final int PREFIX_ENOTEMPTY = ENOTEMPTY;
106    static final int PREFIX_ENOSPC = ENOSPC;
107    static final int PREFIX_EAGAIN = EAGAIN;
108    static final int PREFIX_ENOSYS = ENOSYS;
109    static final int PREFIX_ELOOP = ELOOP;
110    static final int PREFIX_EROFS = EROFS;
111
112#ifndef ENODATA
113    // Only used in Linux java source, provide any value so it compiles
114    static final int PREFIX_ENODATA = ELAST;
115#else
116    static final int PREFIX_ENODATA = ENODATA;
117#endif
118
119    static final int PREFIX_ERANGE = ERANGE;
120    static final int PREFIX_EMFILE = EMFILE;
121
122    // flags used with openat/unlinkat/etc.
123#if defined(AT_SYMLINK_NOFOLLOW) && defined(AT_REMOVEDIR)
124    static final int PREFIX_AT_SYMLINK_NOFOLLOW = AT_SYMLINK_NOFOLLOW;
125    static final int PREFIX_AT_REMOVEDIR = AT_REMOVEDIR;
126#else
127    // not supported (dummy values will not be used at runtime).
128    static final int PREFIX_AT_SYMLINK_NOFOLLOW = 00;
129    static final int PREFIX_AT_REMOVEDIR = 00;
130#endif
131
132}
133