Move the platform dependent code here; Temporary solution until I get time to redo...
authorMiguel de Icaza <miguel@gnome.org>
Tue, 16 Mar 2004 16:54:13 +0000 (16:54 -0000)
committerMiguel de Icaza <miguel@gnome.org>
Tue, 16 Mar 2004 16:54:13 +0000 (16:54 -0000)
svn path=/trunk/mono/; revision=24137

support/Makefile.am [new file with mode: 0644]
support/macros.c [new file with mode: 0644]
support/map.c [new file with mode: 0644]
support/map.h [new file with mode: 0644]

diff --git a/support/Makefile.am b/support/Makefile.am
new file mode 100644 (file)
index 0000000..1ab3f49
--- /dev/null
@@ -0,0 +1,6 @@
+lib_LTLIBRARIES = libMonoPosixHelper.la
+
+libMonoPosixHelper_la_SOURCES = \
+       map.c map.h macros.c
+
+
diff --git a/support/macros.c b/support/macros.c
new file mode 100644 (file)
index 0000000..27d7065
--- /dev/null
@@ -0,0 +1,89 @@
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <pwd.h>
+#include <grp.h>
+
+int wifexited (int status)
+{
+       return WIFEXITED (status);
+}
+
+int wexitstatus (int status)
+{
+       return WEXITSTATUS (status);
+}
+
+int wifsignaled (int status)
+{
+       return WIFSIGNALED (status);
+}
+
+int wtermsig (int status)
+{
+       return WTERMSIG (status);
+}
+
+int wifstopped (int status)
+{
+       return WIFSTOPPED (status);
+}
+
+int wstopsig (int status)
+{
+       return WSTOPSIG (status);
+}
+
+int helper_Mono_Posix_Stat(char *filename, int dereference, 
+       int *device,
+       int *inode,
+       int *mode,
+       int *nlinks,
+       int *uid,
+       int *gid,
+       int *rdev,
+       long *size,
+       long *blksize,
+       long *blocks,
+       long *atime,
+       long *mtime,
+       long *ctime
+       ) {
+       int ret;
+       struct stat buf;
+       
+       if (!dereference)
+               ret = stat(filename, &buf);
+       else
+               ret = lstat(filename, &buf);
+       
+       if (ret) return ret;
+       
+       *device = buf.st_dev;
+       *inode = buf.st_ino;
+       *mode = buf.st_mode;
+       *nlinks = buf.st_nlink;
+       *uid = buf.st_uid;
+       *gid = buf.st_gid;
+       *rdev = buf.st_rdev;
+       *size = buf.st_size;
+       *blksize = buf.st_blksize;
+       *blocks = buf.st_blocks;
+       *atime = buf.st_atime;
+       *mtime = buf.st_mtime;
+       *ctime = buf.st_ctime;
+       return 0;
+}
+
+char *helper_Mono_Posix_GetUserName(int uid) {
+       struct passwd *p = getpwuid(uid);
+       if (p == NULL) return NULL;
+       return p->pw_name;
+}
+char *helper_Mono_Posix_GetGroupName(int gid) {
+       struct group *p = getgrgid(gid);
+       if (p == NULL) return NULL;
+       return p->gr_name;
+}
+
diff --git a/support/map.c b/support/map.c
new file mode 100644 (file)
index 0000000..f0e84a7
--- /dev/null
@@ -0,0 +1,153 @@
+/* This file was automatically generated by make-map from ../lib/Mono.Posix.dll */
+
+#define _GNU_SOURCE
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <signal.h>
+#include "map.h"
+int map_Mono_Posix_OpenFlags (int x)
+{
+       int r = 0;
+       if ((x & Mono_Posix_OpenFlags_O_RDONLY) != 0)
+               r |= O_RDONLY;
+       if ((x & Mono_Posix_OpenFlags_O_WRONLY) != 0)
+               r |= O_WRONLY;
+       if ((x & Mono_Posix_OpenFlags_O_RDWR) != 0)
+               r |= O_RDWR;
+       if ((x & Mono_Posix_OpenFlags_O_CREAT) != 0)
+               r |= O_CREAT;
+       if ((x & Mono_Posix_OpenFlags_O_EXCL) != 0)
+               r |= O_EXCL;
+       if ((x & Mono_Posix_OpenFlags_O_NOCTTY) != 0)
+               r |= O_NOCTTY;
+       if ((x & Mono_Posix_OpenFlags_O_TRUNC) != 0)
+               r |= O_TRUNC;
+       if ((x & Mono_Posix_OpenFlags_O_APPEND) != 0)
+               r |= O_APPEND;
+       if ((x & Mono_Posix_OpenFlags_O_NONBLOCK) != 0)
+               r |= O_NONBLOCK;
+       if ((x & Mono_Posix_OpenFlags_O_SYNC) != 0)
+               r |= O_SYNC;
+       return r;
+}
+
+int map_Mono_Posix_FileMode (int x)
+{
+       int r = 0;
+       if ((x & Mono_Posix_FileMode_S_ISUID) != 0)
+               r |= S_ISUID;
+       if ((x & Mono_Posix_FileMode_S_ISGID) != 0)
+               r |= S_ISGID;
+       if ((x & Mono_Posix_FileMode_S_ISVTX) != 0)
+               r |= S_ISVTX;
+       if ((x & Mono_Posix_FileMode_S_IRUSR) != 0)
+               r |= S_IRUSR;
+       if ((x & Mono_Posix_FileMode_S_IWUSR) != 0)
+               r |= S_IWUSR;
+       if ((x & Mono_Posix_FileMode_S_IXUSR) != 0)
+               r |= S_IXUSR;
+       if ((x & Mono_Posix_FileMode_S_IRGRP) != 0)
+               r |= S_IRGRP;
+       if ((x & Mono_Posix_FileMode_S_IWGRP) != 0)
+               r |= S_IWGRP;
+       if ((x & Mono_Posix_FileMode_S_IXGRP) != 0)
+               r |= S_IXGRP;
+       if ((x & Mono_Posix_FileMode_S_IROTH) != 0)
+               r |= S_IROTH;
+       if ((x & Mono_Posix_FileMode_S_IWOTH) != 0)
+               r |= S_IWOTH;
+       if ((x & Mono_Posix_FileMode_S_IXOTH) != 0)
+               r |= S_IXOTH;
+       return r;
+}
+
+int map_Mono_Posix_WaitOptions (int x)
+{
+       int r = 0;
+       if ((x & Mono_Posix_WaitOptions_WNOHANG) != 0)
+               r |= WNOHANG;
+       if ((x & Mono_Posix_WaitOptions_WUNTRACED) != 0)
+               r |= WUNTRACED;
+       return r;
+}
+
+int map_Mono_Posix_AccessMode (int x)
+{
+       int r = 0;
+       if ((x & Mono_Posix_AccessMode_R_OK) != 0)
+               r |= R_OK;
+       if ((x & Mono_Posix_AccessMode_W_OK) != 0)
+               r |= W_OK;
+       if ((x & Mono_Posix_AccessMode_X_OK) != 0)
+               r |= X_OK;
+       if ((x & Mono_Posix_AccessMode_F_OK) != 0)
+               r |= F_OK;
+       return r;
+}
+
+int map_Mono_Posix_Signals (int x)
+{
+       if (x == Mono_Posix_Signals_SIGHUP)
+                return SIGHUP;
+       if (x == Mono_Posix_Signals_SIGINT)
+                return SIGINT;
+       if (x == Mono_Posix_Signals_SIGQUIT)
+                return SIGQUIT;
+       if (x == Mono_Posix_Signals_SIGILL)
+                return SIGILL;
+       if (x == Mono_Posix_Signals_SIGTRAP)
+                return SIGTRAP;
+       if (x == Mono_Posix_Signals_SIGABRT)
+                return SIGABRT;
+       if (x == Mono_Posix_Signals_SIGBUS)
+                return SIGBUS;
+       if (x == Mono_Posix_Signals_SIGFPE)
+                return SIGFPE;
+       if (x == Mono_Posix_Signals_SIGKILL)
+                return SIGKILL;
+       if (x == Mono_Posix_Signals_SIGUSR1)
+                return SIGUSR1;
+       if (x == Mono_Posix_Signals_SIGSEGV)
+                return SIGSEGV;
+       if (x == Mono_Posix_Signals_SIGUSR2)
+                return SIGUSR2;
+       if (x == Mono_Posix_Signals_SIGPIPE)
+                return SIGPIPE;
+       if (x == Mono_Posix_Signals_SIGALRM)
+                return SIGALRM;
+       if (x == Mono_Posix_Signals_SIGTERM)
+                return SIGTERM;
+       if (x == Mono_Posix_Signals_SIGCHLD)
+                return SIGCHLD;
+       if (x == Mono_Posix_Signals_SIGCONT)
+                return SIGCONT;
+       if (x == Mono_Posix_Signals_SIGSTOP)
+                return SIGSTOP;
+       if (x == Mono_Posix_Signals_SIGTSTP)
+                return SIGTSTP;
+       if (x == Mono_Posix_Signals_SIGTTIN)
+                return SIGTTIN;
+       if (x == Mono_Posix_Signals_SIGTTOU)
+                return SIGTTOU;
+       if (x == Mono_Posix_Signals_SIGURG)
+                return SIGURG;
+       if (x == Mono_Posix_Signals_SIGXCPU)
+                return SIGXCPU;
+       if (x == Mono_Posix_Signals_SIGXFSZ)
+                return SIGXFSZ;
+       if (x == Mono_Posix_Signals_SIGVTALRM)
+                return SIGVTALRM;
+       if (x == Mono_Posix_Signals_SIGPROF)
+                return SIGPROF;
+       if (x == Mono_Posix_Signals_SIGWINCH)
+                return SIGWINCH;
+       if (x == Mono_Posix_Signals_SIGIO)
+                return SIGIO;
+       if (x == Mono_Posix_Signals_SIGSYS)
+                return SIGSYS;
+       return -1;
+}
+
diff --git a/support/map.h b/support/map.h
new file mode 100644 (file)
index 0000000..92e0280
--- /dev/null
@@ -0,0 +1,64 @@
+/* This file was automatically generated by make-map from ../lib/Mono.Posix.dll */
+
+#define Mono_Posix_OpenFlags_O_RDONLY O_RDONLY
+#define Mono_Posix_OpenFlags_O_WRONLY O_WRONLY
+#define Mono_Posix_OpenFlags_O_RDWR O_RDWR
+#define Mono_Posix_OpenFlags_O_CREAT O_CREAT
+#define Mono_Posix_OpenFlags_O_EXCL O_EXCL
+#define Mono_Posix_OpenFlags_O_NOCTTY O_NOCTTY
+#define Mono_Posix_OpenFlags_O_TRUNC O_TRUNC
+#define Mono_Posix_OpenFlags_O_APPEND O_APPEND
+#define Mono_Posix_OpenFlags_O_NONBLOCK O_NONBLOCK
+#define Mono_Posix_OpenFlags_O_SYNC O_SYNC
+
+#define Mono_Posix_FileMode_S_ISUID S_ISUID
+#define Mono_Posix_FileMode_S_ISGID S_ISGID
+#define Mono_Posix_FileMode_S_ISVTX S_ISVTX
+#define Mono_Posix_FileMode_S_IRUSR S_IRUSR
+#define Mono_Posix_FileMode_S_IWUSR S_IWUSR
+#define Mono_Posix_FileMode_S_IXUSR S_IXUSR
+#define Mono_Posix_FileMode_S_IRGRP S_IRGRP
+#define Mono_Posix_FileMode_S_IWGRP S_IWGRP
+#define Mono_Posix_FileMode_S_IXGRP S_IXGRP
+#define Mono_Posix_FileMode_S_IROTH S_IROTH
+#define Mono_Posix_FileMode_S_IWOTH S_IWOTH
+#define Mono_Posix_FileMode_S_IXOTH S_IXOTH
+
+#define Mono_Posix_WaitOptions_WNOHANG WNOHANG
+#define Mono_Posix_WaitOptions_WUNTRACED WUNTRACED
+
+#define Mono_Posix_AccessMode_R_OK R_OK
+#define Mono_Posix_AccessMode_W_OK W_OK
+#define Mono_Posix_AccessMode_X_OK X_OK
+#define Mono_Posix_AccessMode_F_OK F_OK
+
+#define Mono_Posix_Signals_SIGHUP SIGHUP
+#define Mono_Posix_Signals_SIGINT SIGINT
+#define Mono_Posix_Signals_SIGQUIT SIGQUIT
+#define Mono_Posix_Signals_SIGILL SIGILL
+#define Mono_Posix_Signals_SIGTRAP SIGTRAP
+#define Mono_Posix_Signals_SIGABRT SIGABRT
+#define Mono_Posix_Signals_SIGBUS SIGBUS
+#define Mono_Posix_Signals_SIGFPE SIGFPE
+#define Mono_Posix_Signals_SIGKILL SIGKILL
+#define Mono_Posix_Signals_SIGUSR1 SIGUSR1
+#define Mono_Posix_Signals_SIGSEGV SIGSEGV
+#define Mono_Posix_Signals_SIGUSR2 SIGUSR2
+#define Mono_Posix_Signals_SIGPIPE SIGPIPE
+#define Mono_Posix_Signals_SIGALRM SIGALRM
+#define Mono_Posix_Signals_SIGTERM SIGTERM
+#define Mono_Posix_Signals_SIGCHLD SIGCHLD
+#define Mono_Posix_Signals_SIGCONT SIGCONT
+#define Mono_Posix_Signals_SIGSTOP SIGSTOP
+#define Mono_Posix_Signals_SIGTSTP SIGTSTP
+#define Mono_Posix_Signals_SIGTTIN SIGTTIN
+#define Mono_Posix_Signals_SIGTTOU SIGTTOU
+#define Mono_Posix_Signals_SIGURG SIGURG
+#define Mono_Posix_Signals_SIGXCPU SIGXCPU
+#define Mono_Posix_Signals_SIGXFSZ SIGXFSZ
+#define Mono_Posix_Signals_SIGVTALRM SIGVTALRM
+#define Mono_Posix_Signals_SIGPROF SIGPROF
+#define Mono_Posix_Signals_SIGWINCH SIGWINCH
+#define Mono_Posix_Signals_SIGIO SIGIO
+#define Mono_Posix_Signals_SIGSYS SIGSYS
+