diff options
Diffstat (limited to 'Mac/Modules/gestaltmodule.c')
-rw-r--r-- | Mac/Modules/gestaltmodule.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Mac/Modules/gestaltmodule.c b/Mac/Modules/gestaltmodule.c new file mode 100644 index 0000000..efc7b07 --- /dev/null +++ b/Mac/Modules/gestaltmodule.c @@ -0,0 +1,45 @@ +/* Macintosh Gestalt interface */ + +#include "allobjects.h" +#include "modsupport.h" + +#include <Types.h> +#include <GestaltEqu.h> + +static object * +gestalt_gestalt(self, args) + object *self; + object *args; +{ + OSErr iErr; + char *str; + int size; + OSType selector; + long response; + if (!getargs(args, "s#", &str, &size)) + return NULL; + if (size != 4) { + err_setstr(TypeError, "gestalt arg must be 4-char string"); + return NULL; + } + selector = *(OSType*)str; + iErr = Gestalt ( selector, &response ); + if (iErr != 0) { + char buf[100]; + sprintf(buf, "Gestalt error code %d", iErr); + err_setstr(RuntimeError, buf); + return NULL; + } + return newintobject(response); +} + +static struct methodlist gestalt_methods[] = { + {"gestalt", gestalt_gestalt}, + {NULL, NULL} /* Sentinel */ +}; + +void +initgestalt() +{ + initmodule("gestalt", gestalt_methods); +} |