#include <sys/types.h>
#include <sys/times.h>
#include <sys/stat.h>
+#include <sys/wait.h>
+#include <sys/ioctl.h>
+#include <sys/termios.h>
#include <fcntl.h>
#include <unistd.h>
#define DEFTYPE(lispname,cname) { cname foo; \
- printf("(def-alien-type "##lispname##" (%s %d))\n", (((foo=-1)<0) ? "sb!alien:signed" : "unsigned"), (8 * (sizeof foo))); }
+ printf("(define-alien-type " lispname " (%s %d))\n", (((foo=-1)<0) ? "sb!alien:signed" : "unsigned"), (8 * (sizeof foo))); }
void
defconstant(char* lisp_name, long unix_number)
/* don't need no steenking hand-editing */
printf(
-";;;; This is an automatically generated file, please do not hand-edit it.
-;;;; See the program \"grovel_headers.c\".
-
+";;;; This is an automatically generated file, please do not hand-edit it.\n\
+;;;; See the program \"grovel_headers.c\".\n\
+\n\
");
printf("(in-package \"SB!UNIX\")\n\n");
printf(";;; types, types, types\n");
+ DEFTYPE("clock-t", clock_t);
DEFTYPE("dev-t", dev_t);
+ DEFTYPE("gid-t", gid_t);
DEFTYPE("ino-t", ino_t);
DEFTYPE("mode-t", mode_t);
DEFTYPE("nlink-t", nlink_t);
- DEFTYPE("uid-t", uid_t);
- DEFTYPE("gid-t", gid_t);
- DEFTYPE("clock-t", clock_t);
DEFTYPE("off-t", off_t);
+ DEFTYPE("size-t", size_t);
DEFTYPE("time-t", time_t);
+ DEFTYPE("uid-t", uid_t);
printf("\n");
printf(";;; fcntl.h (or unistd.h on OpenBSD)\n");
defconstant("o_trunc", O_TRUNC);
defconstant("o_append", O_APPEND);
printf(";;;\n");
- defconstant( "s-ifmt", S_IFMT);
- defconstant( "s-ififo", S_IFIFO);
- defconstant( "s-ifchr", S_IFCHR);
- defconstant( "s-ifdir", S_IFDIR);
- defconstant( "s-ifblk", S_IFBLK);
- defconstant( "s-ifreg", S_IFREG);
+ defconstant("s-ifmt", S_IFMT);
+ defconstant("s-ififo", S_IFIFO);
+ defconstant("s-ifchr", S_IFCHR);
+ defconstant("s-ifdir", S_IFDIR);
+ defconstant("s-ifblk", S_IFBLK);
+ defconstant("s-ifreg", S_IFREG);
printf("\n");
- defconstant( "s-iflnk", S_IFLNK);
- defconstant( "s-ifsock", S_IFSOCK);
+ defconstant("s-iflnk", S_IFLNK);
+ defconstant("s-ifsock", S_IFSOCK);
+ printf("\n");
+
+ printf(";;; for wait3(2) in run-program.lisp\n");
+ defconstant("wnohang", WNOHANG);
+ defconstant("wuntraced", WUNTRACED);
+ printf("\n");
+
+ printf(";;; various ioctl(2) flags\n");
+ defconstant("tiocnotty", TIOCNOTTY);
+ defconstant("tiocgwinsz", TIOCGWINSZ);
+ defconstant("tiocswinsz", TIOCSWINSZ);
+ defconstant("tiocgpgrp", TIOCGPGRP);
+ defconstant("tiocspgrp", TIOCSPGRP);
+ /* KLUDGE: These are referenced by old CMUCL-derived code, but
+ * Linux doesn't define them.
+ *
+ * I think these are the BSD names, but I don't know what the
+ * corresponding SysV/Linux names are. As a point of reference,
+ * CMUCL doesn't have these defined either (although the defining
+ * forms *do* exist in src/code/unix.lisp), so I don't feel nearly
+ * so bad about not hunting them down. Insight into renamed
+ * obscure ioctl(2) flags appreciated. --njf, 2002-08-26
+ *
+ * I note that the first one I grepped for, TIOCSIGSEND, is
+ * referenced in SBCL conditional on #+HPUX. Maybe the porters of
+ * Oxbridge know more about things like that? And even if they
+ * don't, one benefit of the Rhodes crusade to heal the worthy
+ * ports should be that afterwards, if we grep for something like
+ * this in CVS and it's not there, we can lightheartedly nuke it.
+ * -- WHN 2002-08-30 */
+ /*
+ defconstant("tiocsigsend", TIOCSIGSEND);
+ defconstant("tiocflush", TIOCFLUSH);
+ defconstant("tiocgetp", TIOCGETP);
+ defconstant("tiocsetp", TIOCSETP);
+ defconstant("tiocgetc", TIOCGETC);
+ defconstant("tiocsetc", TIOCSETC);
+ defconstant("tiocgltc", TIOCGLTC);
+ defconstant("tiocsltc", TIOCSLTC);
+ */
printf("\n");
return 0;