-
Notifications
You must be signed in to change notification settings - Fork 91
/
LibC.java
202 lines (178 loc) · 8.08 KB
/
LibC.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
/*
**** BEGIN LICENSE BLOCK *****
* Version: EPL 2.0/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Eclipse Public
* License Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.eclipse.org/legal/cpl-v10.html
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* Copyright (C) 2007 Thomas E Enebo <enebo@acm.org>
* Copyright (C) 2007 Charles O Nutter <headius@headius.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the CPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the CPL, the GPL or the LGPL.
***** END LICENSE BLOCK *****/
package jnr.posix;
import jnr.constants.platform.Sysconf;
import jnr.ffi.Pointer;
import jnr.ffi.Variable;
import jnr.ffi.annotations.*;
import jnr.ffi.types.*;
import java.nio.ByteBuffer;
import jnr.constants.platform.Confstr;
import jnr.constants.platform.Pathconf;
import jnr.ffi.byref.IntByReference;
public interface LibC {
int chmod(CharSequence filename, int mode);
int fchmod(int fd, int mode);
int chown(CharSequence filename, int user, int group);
int fchown(int fd, int user, int group);
int fstat(int fd, @Out @Transient FileStat stat);
int fstat64(int fd, @Out @Transient FileStat stat);
String getenv(CharSequence envName);
@IgnoreError int getegid();
int setegid(int egid);
@IgnoreError int geteuid();
int seteuid(int euid);
@IgnoreError int getgid();
String getlogin();
int setgid(int gid);
int getpgid();
int getpgid(int pid);
int setpgid(int pid, int pgid);
int getpgrp();
int setpgrp(int pid, int pgrp);
@IgnoreError int getppid();
@IgnoreError int getpid();
NativePasswd getpwent();
NativePasswd getpwuid(int which);
NativePasswd getpwnam(CharSequence which);
NativeGroup getgrent();
NativeGroup getgrgid(int which);
NativeGroup getgrnam(CharSequence which);
int setpwent();
int endpwent();
int setgrent();
int endgrent();
@IgnoreError int getuid();
int setsid();
int setuid(int uid);
int getrlimit(int resource, @Out RLimit rlim);
int getrlimit(int resource, Pointer rlim);
int setrlimit(int resource, @In RLimit rlim);
int setrlimit(int resource, Pointer rlim);
int kill(int pid, int signal);
int kill(long pid, int signal);
int dup(int fd);
int dup2(int oldFd, int newFd);
int fcntl(int fd, int fnctl, Flock arg);
int fcntl(int fd, int fnctl, Pointer arg);
int fcntl(int fd, int fnctl);
int fcntl(int fd, int fnctl, int arg);
@Deprecated
int fcntl(int fd, int fnctl, int... arg);
int access(CharSequence path, int amode);
int getdtablesize();
public interface LibCSignalHandler {
@Delegate void signal(int sig);
}
@intptr_t long signal(int sig, LibCSignalHandler handler);
int raise(int raise);
int lchmod(CharSequence filename, int mode);
int lchown(CharSequence filename, int user, int group);
int link(CharSequence oldpath, CharSequence newpath);
int lstat(CharSequence path, @Out @Transient FileStat stat);
int lstat64(CharSequence path, @Out @Transient FileStat stat);
int mkdir(CharSequence path, int mode);
int rmdir(CharSequence path);
int stat(CharSequence path, @Out @Transient FileStat stat);
int stat64(CharSequence path, @Out @Transient FileStat stat);
int symlink(CharSequence oldpath, CharSequence newpath);
int readlink(CharSequence oldpath, @Out ByteBuffer buffer, int len);
int readlink(CharSequence path, @Out byte[] buffer, int len);
int readlink(CharSequence path, Pointer bufPtr, int bufsize);
int setenv(CharSequence envName, CharSequence envValue, int overwrite);
@IgnoreError int umask(int mask);
int unsetenv(CharSequence envName);
int utimes(CharSequence path, @In Timeval[] times);
int utimes(String path, @In Pointer times);
int futimes(int fd, @In Timeval[] times);
int lutimes(CharSequence path, @In Timeval[] times);
int utimensat(int dirfd, String path, Timespec[] times, int flag);
int utimensat(int dirfd, String path, @In Pointer times, int flag);
int futimens(int fd, Timespec[] times);
int futimens(int fd, @In Pointer times);
int fork();
int waitpid(long pid, @Out int[] status, int options);
int wait(@Out int[] status);
int getpriority(int which, int who);
int setpriority(int which, int who, int prio);
@IgnoreError int isatty(int fd);
@ssize_t long read(int fd, @Out byte[] dst, @size_t long len);
@ssize_t long write(int fd, @In byte[] src, @size_t long len);
@ssize_t long read(int fd, @Out ByteBuffer dst, @size_t long len);
@ssize_t long write(int fd, @In ByteBuffer src, @size_t long len);
@ssize_t long pread(int fd, @Out byte[] dst, @size_t long len, @off_t long offset);
@ssize_t long pwrite(int fd, @In byte[] src, @size_t long len, @off_t long offset);
@ssize_t long pread(int fd, @Out ByteBuffer dst, @size_t long len, @off_t long offset);
@ssize_t long pwrite(int fd, @In ByteBuffer src, @size_t long len, @off_t long offset);
int read(int fd, @Out byte[] dst, int len);
int write(int fd, @In byte[] src, int len);
int read(int fd, @Out ByteBuffer dst, int len);
int write(int fd, @In ByteBuffer src, int len);
int pread(int fd, @Out byte[] dst, int len, int offset);
int pwrite(int fd, @In byte[] src, int len, int offset);
int pread(int fd, @Out ByteBuffer dst, int len, int offset);
int pwrite(int fd, @In ByteBuffer src, int len, int offset);
long lseek(int fd, long offset, int whence);
int close(int fd);
int execv(CharSequence path, @In CharSequence[] argv);
int execve(CharSequence path, @In CharSequence[] argv, @In CharSequence[] envp);
int chdir(CharSequence path);
public long sysconf(Sysconf name);
public int confstr(Confstr name, @Out ByteBuffer buf, int len);
public int fpathconf(int fd, Pathconf name);
public @clock_t long times(@Out @Transient NativeTimes tms);
int flock(int fd, int mode);
int unlink(CharSequence path);
int open(CharSequence path, int flags, int perm);
int pipe(@Out int[] fds);
int truncate(CharSequence path, long length);
int ftruncate(int fd, long offset);
int rename(CharSequence oldName, CharSequence newName);
long getcwd(byte[] cwd, int len);
int gethostname(@Out ByteBuffer buffer, int len);
int fsync(int fd);
int fdatasync(int fd);
int socketpair(int domain, int type, int protocol, @Out int[] fds);
int sendmsg(int socket, @In MsgHdr message, int flags);
int recvmsg(int socket, @Direct MsgHdr message, int flags);
int setsockopt(int s, int level, int optname, @In ByteBuffer optval, int optlen);
int getsockopt(int s, int level, int optname, @Out ByteBuffer optval, @In @Out IntByReference optlen);
Variable<Long> environ();
int syscall(int number);
int syscall(int number, int arg1);
int syscall(int number, int arg1, int arg2);
int syscall(int number, int arg1, int arg2, int arg3);
int daemon(int nochdir, int noclose);
int getgroups(int size, int[] groups);
String nl_langinfo(int item);
String setlocale(int category, String locale);
String strerror(int errno);
int gettimeofday(Timeval tv, long alwaysNull);
}