X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tools-for-build%2Fgrovel_headers.c;h=0184bfaef202804691c7d3a9c222ac97e6b31e3f;hb=df679ed627975948b1cee190f4d79c397588c43e;hp=4c6831f5924e82f0ddf4e0db5d2d1656e68d06fe;hpb=4cf50b1896b25f5337e7c258b0b560da00d47993;p=sbcl.git diff --git a/tools-for-build/grovel_headers.c b/tools-for-build/grovel_headers.c index 4c6831f..0184bfa 100644 --- a/tools-for-build/grovel_headers.c +++ b/tools-for-build/grovel_headers.c @@ -5,14 +5,31 @@ * Lisp code. */ +/* + * This software is part of the SBCL system. See the README file for + * more information. + * + * While most of SBCL is derived from the CMU CL system, many + * utilities for the build process (like this one) were written from + * scratch after the fork from CMU CL. + * + * This software is in the public domain and is provided with + * absolutely no warranty. See the COPYING and CREDITS files for + * more information. + */ + #include #include #include #include +#include +#include +#include #include +#include #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) @@ -32,26 +49,27 @@ 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"); 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\n"); + printf(";;; fcntl.h (or unistd.h on OpenBSD)\n"); defconstant("r_ok", R_OK); defconstant("w_ok", W_OK); defconstant("x_ok", X_OK); @@ -69,16 +87,56 @@ main(int argc, char *argv[]) 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;