1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-17 00:00:40 +00:00
freebsd-ports/lang/modula-3-lib/files/patch-ab

588 lines
11 KiB
Plaintext
Raw Normal View History

Fix a const-related compiler warning produced by the "execve" wrapper.
Move network related wrappers to separate files, for SOCKS support.
Fix some things so that it will compile under FreeBSD-3.0.
Add missing wrappers for various system calls.
Fix numerous argument declarations to agree with their prototypes.
Fix the wrapper for ftruncate so that it deals properly with the 64-bit
arguments.
Index: m3/m3core/src/runtime/FreeBSD2/RTHeapDepC.c
--- RTHeapDepC.c.orig Sat Mar 23 14:52:21 1996
+++ RTHeapDepC.c Thu Jul 10 22:41:39 1997
@@ -89,9 +89,20 @@
#include <ufs/ufs/quota.h>
#include <sys/signal.h>
#include <sys/socket.h>
+#include <sys/stat.h>
#include <sys/uio.h>
#include <sys/wait.h>
+#if __FreeBSD__ >= 3
+#include <sys/time.h>
+#include <nfs/rpcv2.h>
+#include <nfs/nfsproto.h>
+#include <nfs/nfs.h>
+#include <ufs/ufs/ufsmount.h>
+#endif
+
+#include <unistd.h>
+
#ifdef NULL
#undef NULL
#endif
@@ -110,22 +121,8 @@
/* Unless otherwise noted, all the following wrappers have the same
structure. */
-int accept(s, addr, addrlen) /* ok */
-int s;
-struct sockaddr *addr;
-int *addrlen;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_WRITABLE(addr);
- MAKE_WRITABLE(addrlen);
- result = syscall(SYS_accept, s, addr, addrlen);
- EXIT_CRITICAL;
- return result;
-}
-
int access(path, mode) /* ok */
-char *path;
+const char *path;
int mode;
{ int result;
@@ -137,7 +134,7 @@
}
int acct(file) /* ok */
-char *file;
+const char *file;
{ int result;
ENTER_CRITICAL;
@@ -228,19 +225,6 @@
}
*/
-int bind(s, name, namelen) /* ok */
-int s;
-const struct sockaddr *name;
-int namelen;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_READABLE(name);
- result = syscall(SYS_bind, s, name, namelen);
- EXIT_CRITICAL;
- return result;
-}
-
/* not implemented
int cachectl(addr, nbytes, op)
char *addr;
@@ -268,7 +252,7 @@
*/
int chdir(path) /* ok */
-char *path;
+const char *path;
{ int result;
ENTER_CRITICAL;
@@ -278,8 +262,20 @@
return result;
}
+int chflags(path, flags)
+const char *path;
+u_long flags;
+{ int result;
+
+ ENTER_CRITICAL;
+ MAKE_READABLE(path);
+ result = syscall(SYS_chflags, path, flags);
+ EXIT_CRITICAL;
+ return result;
+}
+
int chmod(path, mode) /* ok */
-char *path;
+const char *path;
mode_t mode;
{ int result;
@@ -291,7 +287,7 @@
}
int chown(path, owner, group) /* ok */
-char *path;
+const char *path;
uid_t owner;
gid_t group;
{ int result;
@@ -304,7 +300,7 @@
}
int chroot(dirname) /* ok */
-char *dirname;
+const char *dirname;
{ int result;
ENTER_CRITICAL;
@@ -314,19 +310,6 @@
return result;
}
-int connect(s, name, namelen) /* ok */
-int s;
-const struct sockaddr *name;
-int namelen;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_READABLE(name);
- result = syscall(SYS_connect, s, name, namelen);
- EXIT_CRITICAL;
- return result;
-}
-
/* not implemented (obsolete)
int creat(name, mode)
const char *name;
@@ -356,8 +339,8 @@
result = syscall(SYS_execve, name, argv, envp);
if (result == -1 && errno == EFAULT) {
MAKE_READABLE(name);
- { char **a; for (a = argv; *a; a++) MAKE_READABLE(*a); }
- { char **e; for (e = envp; *e; e++) MAKE_READABLE(*e); }
+ { char * const *a; for (a = argv; *a; a++) MAKE_READABLE(*a); }
+ { char * const *e; for (e = envp; *e; e++) MAKE_READABLE(*e); }
} else {
return result;
}
@@ -473,7 +456,7 @@
int getgroups(gidsetsize, grouplist) /* ok */
int gidsetsize;
-int grouplist[];
+gid_t grouplist[];
{ int result;
ENTER_CRITICAL;
@@ -513,20 +496,6 @@
}
*/
-int getpeername(s, name, namelen) /* ok */
-int s;
-struct sockaddr *name;
-int *namelen;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_WRITABLE(name);
- MAKE_WRITABLE(namelen);
- result = syscall(SYS_getpeername, s, name, namelen);
- EXIT_CRITICAL;
- return result;
-}
-
int getrlimit(resource, rlp) /* ok */
int resource;
struct rlimit *rlp;
@@ -551,20 +520,6 @@
return result;
}
-int getsockname(s, name, namelen) /* ok */
-int s;
-struct sockaddr *name;
-int *namelen;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_WRITABLE(name);
- MAKE_WRITABLE(namelen);
- result = syscall(SYS_getsockname, s, name, namelen);
- EXIT_CRITICAL;
- return result;
-}
-
int getsockopt(s, level, optname, optval, optlen) /* ok */
int s, level, optname;
void *optval;
@@ -629,9 +584,24 @@
return result;
}
+#ifdef SYS_lchown
+int lchown(path, owner, group) /* ok */
+const char *path;
+uid_t owner;
+gid_t group;
+{ int result;
+
+ ENTER_CRITICAL;
+ MAKE_READABLE(path);
+ result = syscall(SYS_lchown, path, owner, group);
+ EXIT_CRITICAL;
+ return result;
+}
+#endif /* SYS_lchown */
+
int link(name1, name2) /* ok */
-char *name1;
-char *name2;
+const char *name1;
+const char *name2;
{ int result;
ENTER_CRITICAL;
@@ -643,7 +613,7 @@
}
int lstat(path, buf) /* ok */
-char *path;
+const char *path;
struct stat *buf;
{ int result;
@@ -656,7 +626,7 @@
}
int mkdir(path, mode) /* ok */
-char *path;
+const char *path;
mode_t mode;
{ int result;
@@ -667,8 +637,20 @@
return result;
}
+int mkfifo(path, mode) /* ok */
+const char *path;
+mode_t mode;
+{ int result;
+
+ ENTER_CRITICAL;
+ MAKE_READABLE(path);
+ result = syscall(SYS_mkfifo, path, mode);
+ EXIT_CRITICAL;
+ return result;
+}
+
int mknod(path, mode, dev) /* ok */
-char *path;
+const char *path;
mode_t mode;
dev_t dev;
{ int result;
@@ -821,21 +803,8 @@
return result;
}
-int read(d, buf, nbytes) /* ok */
-int d;
-char *buf;
-size_t nbytes;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_WRITABLE(buf);
- result = syscall(SYS_read, d, buf, nbytes);
- EXIT_CRITICAL;
- return result;
-}
-
int readlink(path, buf, bufsiz) /* ok */
-char *path;
+const char *path;
char *buf;
int bufsiz;
{ int result;
@@ -865,46 +834,6 @@
return result;
}
-int recv(s, buf, len, flags) /* ok */
-int s;
-void *buf;
-#if __FreeBSD__ >=2
-size_t len;
-#else
-int len;
-#endif
-int flags;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_WRITABLE(buf);
- result = syscall(SYS_recvfrom, s, buf, len, flags, NULL, 0);
- EXIT_CRITICAL;
- return result;
-}
-
-int recvfrom(s, buf, len, flags, from, fromlen) /* ok */
-int s;
-void *buf;
-#if __FreeBSD__ >=2
-size_t len;
-#else
-int len;
-#endif
-int flags;
-struct sockaddr *from;
-int *fromlen;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_WRITABLE(buf);
- MAKE_WRITABLE(from);
- MAKE_WRITABLE(fromlen);
- result = syscall(SYS_recvfrom, s, buf, len, flags, from, fromlen);
- EXIT_CRITICAL;
- return result;
-}
-
int recvmsg(s, msg, flags) /* ok */
int s;
struct msghdr msg[];
@@ -940,7 +869,7 @@
}
int rmdir(path) /* ok */
-char *path;
+const char *path;
{ int result;
ENTER_CRITICAL;
@@ -950,24 +879,6 @@
return result;
}
-int select(nfds, readfds, writefds, exceptfds, timeout) /* ok */
-int nfds;
-fd_set *readfds;
-fd_set *writefds;
-fd_set *exceptfds;
-struct timeval *timeout;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_WRITABLE(readfds);
- MAKE_WRITABLE(writefds);
- MAKE_WRITABLE(exceptfds);
- MAKE_READABLE(timeout);
- result = syscall(SYS_select, nfds, readfds, writefds, exceptfds, timeout);
- EXIT_CRITICAL;
- return result;
-}
-
int semctl(semid, semnum, cmd, arg) /* ok ? */
int semid, cmd;
int semnum;
@@ -1012,24 +923,6 @@
return result;
}
-int send(s, msg, len, flags) /* ok */
-int s;
-const void *msg;
-#if __FreeBSD__ >=2
-size_t len;
-#else
-int len;
-#endif
-int flags;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_READABLE(msg);
- result = syscall(SYS_sendto, s, msg, len, flags, NULL, 0);
- EXIT_CRITICAL;
- return result;
-}
-
int sendmsg(s, msg, flags) /* ok */
int s;
const struct msghdr msg[];
@@ -1051,29 +944,8 @@
return result;
}
-int sendto(s, msg, len, flags, to, tolen) /* ok */
-int s;
-const void *msg;
-#if __FreeBSD__ >=2
-size_t len;
-#else
-int len;
-#endif
-int flags;
-const struct sockaddr *to;
-int tolen;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_READABLE(msg);
- MAKE_READABLE(to);
- result = syscall(SYS_sendto, s, msg, len, flags, to, tolen);
- EXIT_CRITICAL;
- return result;
-}
-
int setdomainname(name, namelen) /* ok */
-char *name;
+const char *name;
int namelen;
{ int result;
@@ -1086,7 +958,7 @@
int setgroups(ngroups, gidset) /* ok */
int ngroups;
-int *gidset;
+const gid_t *gidset;
{ int result;
ENTER_CRITICAL;
@@ -1097,7 +969,7 @@
}
int sethostname(name, namelen) /* ok */
-char *name;
+const char *name;
int namelen;
{ int result;
#if __FreeBSD__ >= 2
@@ -1213,20 +1085,20 @@
return result;
}
-/* not implemented
-int sigpending(set)
-sigset_t *set;
+int sigaction(sig, act, oact)
+int sig;
+const struct sigaction *act;
+struct sigaction *oact;
{ int result;
ENTER_CRITICAL;
- MAKE_WRITABLE(set);
- result = syscall(SYS_sigpending, set);
+ MAKE_READABLE(act);
+ MAKE_WRITABLE(oact);
+ result = syscall(SYS_sigaction, sig, act, oact);
EXIT_CRITICAL;
return result;
}
-*/
-#if __FreeBSD__ >= 2
int sigaltstack(ss, oss) /* ok */
const struct sigaltstack *ss;
struct sigaltstack *oss;
@@ -1239,20 +1111,6 @@
EXIT_CRITICAL;
return result;
}
-#else
-int sigstack(ss, oss) /* ok */
-const struct sigstack *ss;
-struct sigstack *oss;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_READABLE(ss);
- MAKE_WRITABLE(oss);
- result = syscall(SYS_sigstack, ss, oss);
- EXIT_CRITICAL;
- return result;
-}
-#endif
int socketpair(d, type, protocol, sv) /* ok */
int d, type, protocol;
@@ -1267,7 +1125,7 @@
}
int stat(path, buf) /* ok */
-char *path;
+const char *path;
struct stat *buf;
{ int result;
@@ -1280,7 +1138,7 @@
}
int swapon(special) /* ok */
-char *special;
+const char *special;
{ int result;
ENTER_CRITICAL;
@@ -1291,8 +1149,8 @@
}
int symlink(name1, name2) /* ok */
-char *name1;
-char *name2;
+const char *name1;
+const char *name2;
{ int result;
ENTER_CRITICAL;
@@ -1304,14 +1162,14 @@
}
int truncate(path, length) /* ok */
-char *path;
-long length;
+const char *path;
+off_t length;
{ int result;
- off_t len = (off_t)length;
ENTER_CRITICAL;
MAKE_READABLE(path);
- result = syscall(SYS_truncate, path, len);
+ /* The casts below pad "path" out to a 64-bit value as required. */
+ result = __syscall(SYS_truncate, (u_quad_t) (u_int) path, length);
EXIT_CRITICAL;
return result;
}
@@ -1328,7 +1186,7 @@
}
int unlink(path) /* ok */
-char *path;
+const char *path;
{ int result;
ENTER_CRITICAL;
@@ -1414,19 +1272,6 @@
ENTER_CRITICAL;
MAKE_WRITABLE(status);
result = syscall(SYS_wait4, pid, status, options, NULL);
- EXIT_CRITICAL;
- return result;
-}
-
-int write(fd, buf, nbytes) /* ok */
-int fd;
-char *buf;
-int nbytes;
-{ int result;
-
- ENTER_CRITICAL;
- MAKE_READABLE(buf);
- result = syscall(SYS_write, fd, buf, nbytes);
EXIT_CRITICAL;
return result;
}