#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>
+#include <signal.h>
+
+#include "genesis/config.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)
lisp_name, unix_number, unix_number);
}
+#define DEFSIGNAL(name) defconstant(#name, name)
+
int
main(int argc, char *argv[])
{
/* 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");
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");
+
+ printf(";;; signals\n");
+ DEFSIGNAL(SIGALRM);
+ DEFSIGNAL(SIGBUS);
+ DEFSIGNAL(SIGCHLD);
+ DEFSIGNAL(SIGCONT);
+/* FIXME: Maybe #ifdef SIGEMT would be a smarter conditional? */
+#if (!(defined LISP_FEATURE_LINUX) || !((defined LISP_FEATURE_PPC) || (defined LISP_FEATURE_X86)))
+ DEFSIGNAL(SIGEMT);
+#endif
+ DEFSIGNAL(SIGFPE);
+ DEFSIGNAL(SIGHUP);
+ DEFSIGNAL(SIGILL);
+ DEFSIGNAL(SIGINT);
+ DEFSIGNAL(SIGIO);
+ DEFSIGNAL(SIGIOT);
+ DEFSIGNAL(SIGKILL);
+ DEFSIGNAL(SIGPIPE);
+ DEFSIGNAL(SIGPROF);
+ DEFSIGNAL(SIGQUIT);
+ DEFSIGNAL(SIGSEGV);
+#if ((defined LISP_FEATURE_LINUX) && (defined LISP_FEATURE_X86))
+ DEFSIGNAL(SIGSTKFLT);
+#endif
+ DEFSIGNAL(SIGSTOP);
+#if (!((defined LISP_FEATURE_LINUX) && (defined LISP_FEATURE_X86)))
+ DEFSIGNAL(SIGSYS);
+#endif
+ DEFSIGNAL(SIGTERM);
+ DEFSIGNAL(SIGTRAP);
+ DEFSIGNAL(SIGTSTP);
+ DEFSIGNAL(SIGTTIN);
+ DEFSIGNAL(SIGTTOU);
+ DEFSIGNAL(SIGURG);
+ DEFSIGNAL(SIGUSR1);
+ DEFSIGNAL(SIGUSR2);
+ DEFSIGNAL(SIGVTALRM);
+#ifdef LISP_FEATURE_SUNOS
+ DEFSIGNAL(SIGWAITING);
+#endif
+ DEFSIGNAL(SIGWINCH);
+#ifndef LISP_FEATURE_HPUX
+ DEFSIGNAL(SIGXCPU);
+ DEFSIGNAL(SIGXFSZ);
+#endif
+
return 0;
}