summaryrefslogtreecommitdiff
path: root/include/mpw
diff options
context:
space:
mode:
Diffstat (limited to 'include/mpw')
-rw-r--r--include/mpw/ChangeLog61
-rw-r--r--include/mpw/README1
-rw-r--r--include/mpw/dir.h23
-rw-r--r--include/mpw/dirent.h31
-rw-r--r--include/mpw/fcntl.h124
-rw-r--r--include/mpw/grp.h10
-rw-r--r--include/mpw/mpw.h130
-rw-r--r--include/mpw/pwd.h15
-rw-r--r--include/mpw/spin.h64
-rw-r--r--include/mpw/stat.h75
-rw-r--r--include/mpw/sys/file.h1
-rw-r--r--include/mpw/sys/param.h1
-rw-r--r--include/mpw/sys/resource.h9
-rw-r--r--include/mpw/sys/stat.h44
-rw-r--r--include/mpw/sys/time.h13
-rw-r--r--include/mpw/sys/types.h15
-rw-r--r--include/mpw/utime.h7
-rw-r--r--include/mpw/varargs.h9
18 files changed, 633 insertions, 0 deletions
diff --git a/include/mpw/ChangeLog b/include/mpw/ChangeLog
new file mode 100644
index 0000000000..8dbad87eab
--- /dev/null
+++ b/include/mpw/ChangeLog
@@ -0,0 +1,61 @@
+Tue Feb 27 12:23:04 1996 Raymond Jou <rjou@mexican.cygnus.com>
+
+ * mpw.h (HAVE_VPRINTF): Add and define to have the value 1.
+
+Fri Dec 29 14:40:46 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw.h (HAVE_STDLIB_H, etc): Define to have the value 1.
+ (HAVE_FCNTL_H): Define.
+
+Mon Dec 11 15:39:06 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw.h (open, access): Define as mpw_open and mpw_access.
+
+Thu Nov 9 15:38:37 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw.h: Include unix.h if USE_MW_HEADERS, otherwise include
+ various original MPW include files (ioctl.h, etc).
+ (EIO): Define if not defined.
+ * sys/ioctl.h: Remove, not needed.
+
+Wed Oct 25 12:30:44 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw.h: Don't include errno.h or ioctl.h.
+ (ENOENT, EACCES, ENOSYS): Define if not defined.
+ (fdopen): Declare if __STDC__.
+ (R_OK, W_OK, X_OK): Define if not defined.
+
+Tue Sep 26 14:57:21 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw.h: New file, universally useful MPW host definitions.
+ Many of these used to live in bfd/hosts/mpw.h.
+ * grp.h: Remove RCS comment.
+ * sys/ioctl.h: Add a comment line.
+
+Wed Dec 14 13:12:14 1994 Stan Shebs <shebs@andros.cygnus.com>
+
+ * spin.h: New file, cursor spinning for progress.
+
+Thu Jun 30 15:32:07 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * fcntl.h (open): Allow optional third arg.
+
+Thu Apr 14 12:54:51 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * dir.h, dirent.h, fcntl.h, grp.h, pwd.h, stat.h: New files.
+ * sys/ioctl.h: New file.
+
+Mon Feb 21 09:44:45 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * sys/stat.h (struct stat): New field st_rsize.
+ (S_IFMT, etc): Use different bit positions.
+ (fstat): Add parameter names to prototype.
+
+Mon Jan 31 19:30:16 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * README: New file.
+ * utime.h, varargs.h: New files, simulated Posix.
+ * sys/{file,param,resource,stat,time,types}.h: New files, more
+ simulated Posix.
+
+
diff --git a/include/mpw/README b/include/mpw/README
new file mode 100644
index 0000000000..10e92de79f
--- /dev/null
+++ b/include/mpw/README
@@ -0,0 +1 @@
+This is a collection of include files that help imitate Posix in MPW.
diff --git a/include/mpw/dir.h b/include/mpw/dir.h
new file mode 100644
index 0000000000..e6ccd2d592
--- /dev/null
+++ b/include/mpw/dir.h
@@ -0,0 +1,23 @@
+/* The <dir.h> header gives the layout of a directory. */
+
+#pragma once
+
+#ifndef _DIR_H
+#define _DIR_H
+
+#ifndef _TYPES_H /* not quite right */
+#include <sys/types.h>
+#endif
+
+#define DIRBLKSIZ 512 /* size of directory block */
+
+#ifndef DIRSIZ
+#define DIRSIZ 14
+#endif
+
+struct direct {
+ ino_t d_ino;
+ char d_name[DIRSIZ];
+};
+
+#endif /* _DIR_H */
diff --git a/include/mpw/dirent.h b/include/mpw/dirent.h
new file mode 100644
index 0000000000..38000b2c5f
--- /dev/null
+++ b/include/mpw/dirent.h
@@ -0,0 +1,31 @@
+#ifndef __dirent_h
+#define __dirent_h
+
+#include "sys/dir.h"
+
+struct dirent {
+ long d_ino; /* inode number of entry */
+ off_t d_off; /* offset of disk directory entry */
+ unsigned short d_reclen; /* length of this record */
+ char d_name[1]; /* name of file */
+};
+
+/*
+#define DIRENTBASESIZE \
+ (((struct dirent *) 0)->d_name - (char *) 0)
+#define DIRENTSIZE(namelen) \
+ ((DIRENTBASESIZE + (namelen) + NBPW) & ~(NBPW - 1))
+*/
+
+/* from Mips posix/dirent.h */
+
+/*
+#undef rewinddir
+*/
+
+extern DIR *opendir();
+extern struct dirent *readdir();
+extern void rewinddir();
+extern int closedir();
+
+#endif /* ! __dirent_h */
diff --git a/include/mpw/fcntl.h b/include/mpw/fcntl.h
new file mode 100644
index 0000000000..30999b4b17
--- /dev/null
+++ b/include/mpw/fcntl.h
@@ -0,0 +1,124 @@
+/*
+ * FCntl.h -- faccess(), fcntl(), and open() mode flags
+ *
+ * Portions copyright American Telephone & Telegraph
+ * Used with permission, Apple Computer Inc. (1985,1988,1990,1992)
+ * All rights reserved.
+ */
+
+#ifndef __FCNTL__
+#define __FCNTL__
+
+#ifndef __TYPES__
+#include <Types.h>
+#endif
+
+/*
+ * For use by lseek():
+ */
+
+#ifndef __STDIO__ /* these defns exactly paralled in StdIO.h for fseek() */
+#define SEEK_CUR 1
+#define SEEK_END 2
+#define SEEK_SET 0
+#endif
+
+/*
+ * faccess() commands; for general use
+ */
+ /* 'd' => "directory" ops */
+#define F_DELETE (('d'<<8)|0x01)
+#define F_RENAME (('d'<<8)|0x02)
+
+/*
+ * more faccess() commands; for use only by MPW tools
+ */
+
+#define F_OPEN (('d'<<8)|0x00) /* reserved for operating system use */
+ /* 'e' => "editor" ops */
+#define F_GTABINFO (('e'<<8)|0x00) /* get tab offset for file */
+#define F_STABINFO (('e'<<8)|0x01) /* set " " " " */
+#define F_GFONTINFO (('e'<<8)|0x02) /* get font number and size for file */
+#define F_SFONTINFO (('e'<<8)|0x03) /* set " " " " " " */
+#define F_GPRINTREC (('e'<<8)|0x04) /* get print record for file */
+#define F_SPRINTREC (('e'<<8)|0x05) /* set " " " " */
+#define F_GSELINFO (('e'<<8)|0x06) /* get selection information for file */
+#define F_SSELINFO (('e'<<8)|0x07) /* set " " " " */
+#define F_GWININFO (('e'<<8)|0x08) /* get current window position */
+#define F_SWININFO (('e'<<8)|0x09) /* set " " " */
+#define F_GSCROLLINFO (('e'<<8)|0x0A) /* get scroll information */
+#define F_SSCROLLINFO (('e'<<8)|0x0B) /* set " " */
+#define F_GMARKER (('e'<<8)|0x0D) /* Get Marker */
+#define F_SMARKER (('e'<<8)|0x0C) /* Set " */
+#define F_GSAVEONCLOSE (('e'<<8)|0x0F) /* Get Save on close */
+#define F_SSAVEONCLOSE (('e'<<8)|0x0E) /* Set " " " */
+
+/*
+ * argument structures used by various faccess() commands
+ */
+
+struct MarkElement {
+ int start; /* start position of mark */
+ int end; /* end position */
+ unsigned char charCount; /* number of chars in mark name */
+ char name[64]; /* mark name */
+} ; /* note: marker names may be up to 64 characters long */
+
+#ifndef __cplusplus
+typedef struct MarkElement MarkElement;
+#endif
+
+struct SelectionRecord {
+ long startingPos;
+ long endingPos;
+ long displayTop;
+};
+
+#ifndef __cplusplus
+typedef struct SelectionRecord SelectionRecord;
+#endif
+
+
+/*
+ * Mode values accessible to open()
+ */
+#define O_RDONLY 0 /* Bits 0 and 1 are used internally */
+#define O_WRONLY 1 /* Values 0..2 are historical */
+#define O_RDWR 2 /* NOTE: it goes 0, 1, 2, *!* 8, 16, 32, ... */
+#define O_APPEND (1<< 3) /* append (writes guaranteed at the end) */
+#define O_RSRC (1<< 4) /* Open the resource fork */
+#define O_ALIAS (1<< 5) /* Open alias file */
+#define O_CREAT (1<< 8) /* Open with file create */
+#define O_TRUNC (1<< 9) /* Open with truncation */
+#define O_EXCL (1<<10) /* w/ O_CREAT: Exclusive "create-only" */
+#define O_BINARY (1<<11) /* Open as a binary stream */
+#define O_NRESOLVE (1<<14) /* Don't resolve any aliases */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * function prototypes
+ */
+int close(int);
+int creat(const char*);
+int dup(int filedes); /* OBSOLETE: fcntl(filedes, F_DUPFD, 0) is preferred */
+int faccess(char*, unsigned int, long*);
+int fcntl(int, unsigned int, int);
+long lseek(int, long, int);
+int open(const char*, int, ...);
+int read(int, char*, unsigned);
+int unlink(char*);
+int write(int, const char*, unsigned);
+
+#ifdef __cplusplus
+}
+#endif
+
+/*
+ * fcntl() commands
+ */
+#define F_DUPFD 0 /* Duplicate files (file descriptor) */
+
+#endif __FCNTL__
diff --git a/include/mpw/grp.h b/include/mpw/grp.h
new file mode 100644
index 0000000000..faf2c6a6be
--- /dev/null
+++ b/include/mpw/grp.h
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "sys/types.h"
+
+struct group {
+ char *gr_name;
+ gid_t gr_gid;
+ char *gr_passwd;
+ char **gr_mem;
+};
diff --git a/include/mpw/mpw.h b/include/mpw/mpw.h
new file mode 100644
index 0000000000..58702e725f
--- /dev/null
+++ b/include/mpw/mpw.h
@@ -0,0 +1,130 @@
+/* Mac MPW host-specific definitions. */
+
+#ifndef __INCLUDE_MPW_H
+#define __INCLUDE_MPW_H
+
+#ifndef MPW
+#define MPW
+#endif
+
+/* MPW C is basically ANSI, but doesn't actually enable __STDC__,
+ nor does it allow __STDC__ to be #defined. */
+
+#ifndef ALMOST_STDC
+#define ALMOST_STDC
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+#include <errno.h>
+
+#define HAVE_TIME_T_IN_TIME_H 1
+
+#define HAVE_STDLIB_H 1
+
+#define HAVE_ERRNO_H 1
+
+#define HAVE_STDDEF_H 1
+
+#define HAVE_STRING_H 1
+
+#define HAVE_STDARG_H 1
+
+#define HAVE_VPRINTF 1
+
+#ifdef USE_MW_HEADERS
+
+#include <unix.h>
+
+#else
+
+#include <fcntl.h>
+#include <ioctl.h>
+#include <sys/stat.h>
+
+#define HAVE_FCNTL_H 1
+
+#ifndef O_ACCMODE
+#define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
+#endif
+
+#ifndef fileno
+#define fileno(fp) ((fp)->_file)
+#endif
+
+/* stdio.h does not define this if __STDC__, so define here. */
+
+#ifdef __STDC__
+FILE *fdopen(int fildes, const char *mode);
+#endif
+
+#endif /* USE_MW_HEADERS */
+
+/* Add ersatz definitions, for systems that lack them. */
+
+#ifndef EIO
+#define EIO 96
+#endif
+#ifndef ENOENT
+#define ENOENT 97
+#endif
+#ifndef EACCES
+#define EACCES 98
+#endif
+#ifndef ENOSYS
+#define ENOSYS 99
+#endif
+
+#ifndef R_OK
+#define R_OK 4
+#define W_OK 2
+#define X_OK 1
+#endif
+
+/* Binary files have different characteristics; for instance, no cr/nl
+ translation. */
+
+#define USE_BINARY_FOPEN
+
+#include <spin.h>
+
+#ifdef MPW_C
+#undef __PTR_TO_INT
+#define __PTR_TO_INT(P) ((int)(P))
+#undef __INT_TO_PTR
+#define __INT_TO_PTR(P) ((char *)(P))
+#endif /* MPW_C */
+
+#define NO_FCNTL
+
+int fstat ();
+
+FILE *mpw_fopen ();
+int mpw_fseek ();
+int mpw_fread ();
+int mpw_fwrite ();
+int mpw_access ();
+int mpw_open ();
+int mpw_creat ();
+void mpw_abort (void);
+
+/* Map these standard functions to improved versions in libiberty. */
+
+#define fopen mpw_fopen
+#define fseek mpw_fseek
+#define fread mpw_fread
+#define fwrite mpw_fwrite
+#define open mpw_open
+#define access mpw_access
+#define creat mpw_creat
+#define abort mpw_abort
+
+#define POSIX_UTIME
+
+#define LOSING_TOTALLY
+
+/* Define this so that files will be closed before being unlinked. */
+
+#define CLOSE_BEFORE_UNLINK
+
+#endif /* __INCLUDE_MPW_H */
diff --git a/include/mpw/pwd.h b/include/mpw/pwd.h
new file mode 100644
index 0000000000..2d4fb70401
--- /dev/null
+++ b/include/mpw/pwd.h
@@ -0,0 +1,15 @@
+#ifndef __pwd_h
+#define __pwd_h
+
+#include <sys/types.h>
+
+struct passwd {
+ char *pw_name;
+ uid_t pw_uid;
+ gid_t pw_gid;
+ char *pw_dir;
+ char *pw_shell;
+ char *pw_passwd;
+};
+
+#endif /* ! __pwd_h */
diff --git a/include/mpw/spin.h b/include/mpw/spin.h
new file mode 100644
index 0000000000..867d14502c
--- /dev/null
+++ b/include/mpw/spin.h
@@ -0,0 +1,64 @@
+/* Progress macros that use SpinCursor in MPW.
+ Copyright (C) 1994 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef _SPIN_H
+#define _SPIN_H
+
+/* For MPW, progress macros just need to "spin the cursor" frequently,
+ preferably several times per second on a 68K Mac. */
+
+/* In order to determine if we're meeting the goal, define this macro
+ and information about frequency of spinning will be collected and
+ displayed. */
+
+#define SPIN_MEASUREMENT
+
+#include <CursorCtl.h>
+
+/* Programs use this macro to indicate the start of a lengthy
+ activity. STR identifies the particular activity, while N
+ indicates the expected duration, in unspecified units. If N is
+ zero, then the expected time to completion is unknown. */
+
+#undef START_PROGRESS
+#define START_PROGRESS(STR,N) mpw_start_progress (STR, N, __FILE__, __LINE__);
+
+/* Programs use this macro to indicate that progress has been made on a
+ lengthy activity. */
+
+#undef PROGRESS
+#ifdef SPIN_MEASUREMENT
+#define PROGRESS(X) mpw_progress_measured (X, __FILE__, __LINE__);
+#else
+#define PROGRESS(X) mpw_progress (X);
+#endif
+
+/* Programs use this macro to indicate the end of a lengthy activity.
+ STR must match a STR passed to START_PROGRESS previously. */
+
+#undef END_PROGRESS
+#define END_PROGRESS(STR) mpw_end_progress (STR, __FILE__, __LINE__);
+
+extern void mpw_start_progress (char *, int, char *, int);
+
+extern void mpw_progress (int);
+
+extern void mpw_progress_measured (int, char *, int);
+
+extern void mpw_end_progress (char *, char *, int);
+
+#endif /* _SPIN_H */
diff --git a/include/mpw/stat.h b/include/mpw/stat.h
new file mode 100644
index 0000000000..057b8d5311
--- /dev/null
+++ b/include/mpw/stat.h
@@ -0,0 +1,75 @@
+/* The <sys/stat.h> header defines a struct that is used in the stat() and
+ * fstat functions. The information in this struct comes from the i-node of
+ * some file. These calls are the only approved way to inspect i-nodes.
+ */
+
+#ifndef _STAT_H
+#define _STAT_H
+
+#ifndef _TYPES_H /* not quite right */
+#include <sys/types.h>
+#endif
+
+struct stat {
+ dev_t st_dev; /* major/minor device number */
+ ino_t st_ino; /* i-node number */
+ mode_t st_mode; /* file mode, protection bits, etc. */
+ short int st_nlink; /* # links; TEMPORARY HACK: should be nlink_t*/
+ uid_t st_uid; /* uid of the file's owner */
+ short int st_gid; /* gid; TEMPORARY HACK: should be gid_t */
+ dev_t st_rdev;
+ off_t st_size; /* file size */
+ time_t st_atime; /* time of last access */
+ time_t st_mtime; /* time of last data modification */
+ time_t st_ctime; /* time of last file status change */
+};
+
+/* Traditional mask definitions for st_mode. */
+#define S_IFMT 0170000 /* type of file */
+#define S_IFREG 0100000 /* regular */
+#define S_IFBLK 0060000 /* block special */
+#define S_IFDIR 0040000 /* directory */
+#define S_IFCHR 0020000 /* character special */
+#define S_IFIFO 0010000 /* this is a FIFO */
+#define S_ISUID 0004000 /* set user id on execution */
+#define S_ISGID 0002000 /* set group id on execution */
+ /* next is reserved for future use */
+#define S_ISVTX 01000 /* save swapped text even after use */
+
+/* POSIX masks for st_mode. */
+#define S_IRWXU 00700 /* owner: rwx------ */
+#define S_IRUSR 00400 /* owner: r-------- */
+#define S_IWUSR 00200 /* owner: -w------- */
+#define S_IXUSR 00100 /* owner: --x------ */
+
+#define S_IRWXG 00070 /* group: ---rwx--- */
+#define S_IRGRP 00040 /* group: ---r----- */
+#define S_IWGRP 00020 /* group: ----w---- */
+#define S_IXGRP 00010 /* group: -----x--- */
+
+#define S_IRWXO 00007 /* others: ------rwx */
+#define S_IROTH 00004 /* others: ------r-- */
+#define S_IWOTH 00002 /* others: -------w- */
+#define S_IXOTH 00001 /* others: --------x */
+
+/* The following macros test st_mode (from POSIX Sec. 5.6.1.1. */
+#define S_ISREG(m) ((m & S_IFMT) == S_IFREG) /* is a reg file */
+#define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR) /* is a directory */
+#define S_ISCHR(m) ((m & S_IFMT) == S_IFCHR) /* is a char spec */
+#define S_ISBLK(m) ((m & S_IFMT) == S_IFBLK) /* is a block spec */
+#define S_ISFIFO(m) ((m & S_IFMT) == S_IFIFO) /* is a pipe/FIFO */
+
+
+/* Function Prototypes. */
+#ifndef _ANSI_H
+#include <ansi.h>
+#endif
+
+_PROTOTYPE( int chmod, (const char *_path, int _mode) );
+_PROTOTYPE( int fstat, (int _fildes, struct stat *_buf) );
+_PROTOTYPE( int mkdir, (const char *_path, int _mode) );
+_PROTOTYPE( int mkfifo, (const char *_path, int _mode) );
+_PROTOTYPE( int stat , (const char *_path, struct stat *_buf) );
+_PROTOTYPE( mode_t umask, (int _cmask) );
+
+#endif /* _STAT_H */
diff --git a/include/mpw/sys/file.h b/include/mpw/sys/file.h
new file mode 100644
index 0000000000..40a8c178f1
--- /dev/null
+++ b/include/mpw/sys/file.h
@@ -0,0 +1 @@
+/* empty */
diff --git a/include/mpw/sys/param.h b/include/mpw/sys/param.h
new file mode 100644
index 0000000000..40a8c178f1
--- /dev/null
+++ b/include/mpw/sys/param.h
@@ -0,0 +1 @@
+/* empty */
diff --git a/include/mpw/sys/resource.h b/include/mpw/sys/resource.h
new file mode 100644
index 0000000000..d39439d61d
--- /dev/null
+++ b/include/mpw/sys/resource.h
@@ -0,0 +1,9 @@
+#ifndef __SYS_RESOURCE_H__
+#define __SYS_RESOURCE_H__
+
+struct rusage {
+ struct timeval ru_utime;
+ struct timeval ru_stime;
+};
+
+#endif /* __SYS_RESOURCE_H__ */
diff --git a/include/mpw/sys/stat.h b/include/mpw/sys/stat.h
new file mode 100644
index 0000000000..b65c72e10c
--- /dev/null
+++ b/include/mpw/sys/stat.h
@@ -0,0 +1,44 @@
+/* Imitation sys/stat.h. */
+
+#ifndef __SYS_STAT_H__
+#define __SYS_STAT_H__
+
+#include <sys/types.h>
+#include <time.h>
+
+struct stat {
+ dev_t st_dev;
+ ino_t st_ino;
+ mode_t st_mode;
+ short st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ dev_t st_rdev;
+ off_t st_size;
+ off_t st_rsize;
+ time_t st_atime;
+ int st_spare1;
+ time_t st_mtime;
+ int st_spare2;
+ time_t st_ctime;
+ int st_spare3;
+ long st_blksize;
+ long st_blocks;
+ long st_spare4[2];
+};
+
+#define S_IFMT 0170000L
+#define S_IFDIR 0040000L
+#define S_IFREG 0100000L
+#define S_IREAD 0400
+#define S_IWRITE 0200
+#define S_IEXEC 0100
+
+#define S_IFIFO 010000 /* FIFO special */
+#define S_IFCHR 020000 /* character special */
+#define S_IFBLK 030000 /* block special */
+
+int stat (char *path, struct stat *buf);
+int fstat (int fd, struct stat *buf);
+
+#endif /* __SYS_STAT_H___ */
diff --git a/include/mpw/sys/time.h b/include/mpw/sys/time.h
new file mode 100644
index 0000000000..f9e485232a
--- /dev/null
+++ b/include/mpw/sys/time.h
@@ -0,0 +1,13 @@
+/* Imitation sys/time.h. */
+
+#ifndef __SYS_TIME_H__
+#define __SYS_TIME_H__
+
+#include <time.h>
+
+struct timeval {
+ long tv_sec;
+ long tv_usec;
+};
+
+#endif /* __SYS_TIME_H__ */
diff --git a/include/mpw/sys/types.h b/include/mpw/sys/types.h
new file mode 100644
index 0000000000..d7d9c9f44b
--- /dev/null
+++ b/include/mpw/sys/types.h
@@ -0,0 +1,15 @@
+/* Imitation sys/types.h. */
+
+#ifndef __SYS_TYPES_H__
+#define __SYS_TYPES_H__
+
+#include <Types.h>
+
+typedef short dev_t;
+typedef short ino_t;
+typedef unsigned short mode_t;
+typedef unsigned short uid_t;
+typedef unsigned short gid_t;
+typedef long off_t;
+
+#endif /* __SYS_TYPES_H__ */
diff --git a/include/mpw/utime.h b/include/mpw/utime.h
new file mode 100644
index 0000000000..e8bf66f2ba
--- /dev/null
+++ b/include/mpw/utime.h
@@ -0,0 +1,7 @@
+
+struct utimbuf {
+ time_t actime;
+ time_t modtime;
+};
+
+int utime (char *, struct utimbuf *);
diff --git a/include/mpw/varargs.h b/include/mpw/varargs.h
new file mode 100644
index 0000000000..acb9e4504a
--- /dev/null
+++ b/include/mpw/varargs.h
@@ -0,0 +1,9 @@
+/* varargs.h. */
+#ifndef __va_list__
+#define __va_list__
+typedef char *va_list;
+#endif
+#define va_dcl int va_alist;
+#define va_start(list) list = (char *) &va_alist
+#define va_end(list)
+#define va_arg(list,mode) ((mode *)(list += sizeof(mode)))[-1]