THE U2NT PROJECT Porting UNIX to Microsoft Win32 Release 1.3 Functions and macros ************************************************** These are the functions and macros simulated by the Downhill Project. For the most part, when a function is emulated, all its features are included, though there are special cases where features are left out or crudely dummied. There are also a few Downhill-specific functions. To the right of each name is what standard it belongs to: "POSIX" for POSIX.1, "Std C" for Standard C, and "DHill" for the Downhill Project. Empty space indicates a random BSD/System V/ Whatever function. In the Downhill makefile, you can specify if you want only the "POSIX", "Std C" and "DHill" functions, or all of them. Downhill functions ==================================================== Process --------------------------------------------------------------- Downhill_Process_System() DHill Similar to system(), but returns a string of stdout and stderr. Memory must be free()'d by hand. Downhill_Process_Forkexec() DHill Asynchronously forks off a process and adds its pid to the process list for SIGCHLD monitoring. Downhill_Process_Add() DHill Adds a pid to SIGCHLD monitoring list. Not necessacary for Downhill_Process_Forkexec()'d programs. Signal ---------------------------------------------------------------- Downhill_Signal_Check() DHill Checks for signals. This should be called as often as possible if you're using SIGCHLD, etc. Enhanced functions ==================================================== Process --------------------------------------------------------------- signal() Std C See man page. Handles additional signals. raise() Std C See man page. Handles additional signals. mkdir() POSIX See man page. Handles permissions. stat() POSIX fstat() POSIX See man page. Sets uid and gid to Downhill variables. Simulated functions =================================================== Directory ------------------------------------------------------------- opendir() POSIX closedir() POSIX readdir() POSIX telldir() POSIX seekdir() rewinddir() See man page. File ------------------------------------------------------------------ lstat() readlink() See man page. Assumes file is not link. utimes() See man page. chown() POSIX fchown() See man page. Always return 0. sethostent() endhostent() See man page. Always return 0. S_ISDIR() POSIX S_ISCHR() POSIX S_ISREG() POSIX S_ISBLK() POSIX S_ISREG() POSIX S_ISFIFO() POSIX S_ISUID() POSIX S_ISGID() POSIX See man page. S_ISUID() and S_ISGID() always return 1. ftruncate() truncate() See man page. Group ----------------------------------------------------------------- getgid() POSIX getegid() POSIX setgid() POSIX getgrgid() POSIX getgrnam() POSIX getgroups() POSIX getgrent() setgrent() endgrent() setrgid() setegid() See man page. Values are dummied. Misc ------------------------------------------------------------------ sleep() POSIX pause() POSIX See man page. uname() POSIX See man page. getopt() opterr optopt optind optarg See man page. Net ------------------------------------------------------------------- rresvport() rcmd() ruserok() rexec() ruserpass() See man page. Process --------------------------------------------------------------- wait() POSIX waitpid() POSIX wait3() wait4() See man page. Will only wait on processes launched with Downhill_Process_Forkexec'd() or added to process list with Downhill_Process_Add(). WIFEXITED() POSIX Always returns TRUE. WIFSTOPPED() POSIX Always returns FALSE. WIFSIGNALED() POSIX Always returns FALSE. WEXITSTATUS() POSIX See man page. WTERMSIG() POSIX Always returns 0. WSTOPSIG() POSIX Always returns 0. WCOREDUMP() Always returns 0. Signal ---------------------------------------------------------------- sigaction() POSIX sigaddset() POSIX sigdelset() POSIX sigemptyset() POSIX sigfillset() POSIX sigismember() POSIX sigpending() POSIX sigprocmask() POSIX sigsuspend() POSIX sigmask() sigsetmask() sigblock() sighold() sigrelse() See man page. String ---------------------------------------------------------------- strcasecmp() strncasecmp() See man page. index() rindex() See man page. ffs() See man page. Time ------------------------------------------------------------------ gettimeofday() See man page. Depends on environment variables being set correctly. User ------------------------------------------------------------------ getuid() POSIX geteuid() POSIX setuid() POSIX getpwuid() POSIX getpwnam() POSIX getpwent() setpwent() endpwent() setruid() seteuid() See man page. Values are dummied.