Initial revision

This commit is contained in:
Guido van Rossum 1994-01-05 16:17:15 +00:00
parent 718581a522
commit ce9739ba76
5 changed files with 720 additions and 0 deletions

224
Mac/Include/config.h Normal file
View File

@ -0,0 +1,224 @@
/* config.h.in. Generated automatically from configure.in by autoheader. */
/* Define if on Macintosh, compiling with THINK C. */
#define THINK_C
/* Define if on Macintosh, compiling with anyu C compiler. */
#define macintosh
/* Define if on AIX 3.
System headers sometimes define this.
We just want to avoid a redefinition error message. */
#ifndef _ALL_SOURCE
#undef _ALL_SOURCE
#endif
/* Define to empty if the keyword does not work. */
#undef const
/* Define if you have dirent.h. */
#undef DIRENT
/* Define to the type of elements in the array set by `getgroups'.
Usually this is either `int' or `gid_t'. */
#undef GETGROUPS_T
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
/* Define if your struct tm has tm_zone. */
#undef HAVE_TM_ZONE
/* Define if you don't have tm_zone but do have the external array
tzname. */
#undef HAVE_TZNAME
/* Define if on MINIX. */
#undef _MINIX
/* Define to `int' if <sys/types.h> doesn't define. */
#undef mode_t
/* Define if you don't have dirent.h, but have ndir.h. */
#undef NDIR
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
/* Define to `int' if <sys/types.h> doesn't define. */
#undef pid_t
/* Define if the system does not provide POSIX.1 features except
with this defined. */
#undef _POSIX_1_SOURCE
/* Define if you need to in order for stat and other things to work. */
#undef _POSIX_SOURCE
/* Define as the return type of signal handlers (int or void). */
#define RETSIGTYPE void
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
/* Define if you have the ANSI C header files. */
#define STDC_HEADERS
/* Define if you don't have dirent.h, but have sys/dir.h. */
#undef SYSDIR
/* Define if you don't have dirent.h, but have sys/ndir.h. */
#undef SYSNDIR
/* Define if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Define if your <sys/time.h> declares struct tm. */
#undef TM_IN_SYS_TIME
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
/* Define if the closedir function returns void instead of int. */
#undef VOID_CLOSEDIR
/* Define if your <unistd.h> contains bad prototypes for exec*()
(as it does on SGI IRIX 4.x) */
#undef BAD_EXEC_PROTOTYPES
/* Define if getpgrp() must be called as getpgrp(0)
and (consequently) setpgrp() as setpgrp(0, 0). */
#undef GETPGRP_HAVE_ARGS
/* Define if your compiler supports function prototypes */
#define HAVE_PROTOTYPES
/* Define if you can safely include both <sys/select.h> and <sys/time.h>
(which you can't on SCO ODT 3.0). */
#undef SYS_SELECT_WITH_SYS_TIME
/* Define if you want to compile in rudimentary thread support */
#undef WITH_THREAD
/* Define if you want to use the GNU readline library */
#undef WITH_READLINE
/* Define if you have clock. */
#define HAVE_CLOCK 1
/* Define if you have ftime. */
#undef HAVE_FTIME
/* Define if you have getpeername. */
#undef HAVE_GETPEERNAME
/* Define if you have getpgrp. */
#undef HAVE_GETPGRP
/* Define if you have gettimeofday. */
#undef HAVE_GETTIMEOFDAY
/* Define if you have getwd. */
#define HAVE_GETWD 1
/* Define if you have lstat. */
#undef HAVE_LSTAT
/* Define if you have readline. */
#undef HAVE_READLINE
/* Define if you have readlink. */
#undef HAVE_READLINK
/* Define if you have select. */
#undef HAVE_SELECT
/* Define if you have setpgid. */
#undef HAVE_SETPGID
/* Define if you have setpgrp. */
#undef HAVE_SETPGRP
/* Define if you have setsid. */
#undef HAVE_SETSID
/* Define if you have siginterrupt. */
#undef HAVE_SIGINTERRUPT
/* Define if you have symlink. */
#undef HAVE_SYMLINK
/* Define if you have tcgetpgrp. */
#undef HAVE_TCGETPGRP
/* Define if you have tcsetpgrp. */
#undef HAVE_TCSETPGRP
/* Define if you have times. */
#undef HAVE_TIMES
/* Define if you have uname. */
#undef HAVE_UNAME
/* Define if you have waitpid. */
#undef HAVE_WAITPID
/* Define if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1
/* Define if you have the <stdarg.h> header file. */
#define HAVE_STDARG_H 1
/* Define if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define if you have the <sys/audioio.h> header file. */
#undef HAVE_SYS_AUDIOIO_H
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
/* Define if you have the <sys/times.h> header file. */
#undef HAVE_SYS_TIMES_H
/* Define if you have the <sys/un.h> header file. */
#undef HAVE_SYS_UN_H
/* Define if you have the <sys/utsname.h> header file. */
#undef HAVE_SYS_UTSNAME_H
/* Define if you have the <thread.h> header file. */
#undef HAVE_THREAD_H
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you have the <utime.h> header file. */
#undef HAVE_UTIME_H
/* Define if you have the dl library (-ldl). */
#undef HAVE_LIBDL
/* Define if you have the mpc library (-lmpc). */
#undef HAVE_LIBMPC
/* Define if you have the nsl library (-lnsl). */
#undef HAVE_LIBNSL
/* Define if you have the seq library (-lseq). */
#undef HAVE_LIBSEQ
/* Define if you have the socket library (-lsocket). */
#undef HAVE_LIBSOCKET
/* Define if you have the sun library (-lsun). */
#undef HAVE_LIBSUN
/* Define if you have the thread library (-lthread). */
#undef HAVE_LIBTHREAD

210
Mac/Modules/config.c Normal file
View File

@ -0,0 +1,210 @@
/***********************************************************
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
Amsterdam, The Netherlands.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the names of Stichting Mathematisch
Centrum or CWI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior permission.
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
******************************************************************/
/* Universal Python configuration file */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include <string.h>
#include "myproto.h"
#include "mymalloc.h"
#include "osdefs.h"
#include "intrcheck.h"
#ifndef NO_MAIN
/* Normally, the main program is called from here (so everything else
can be in libPython.a). We save a pointer to argv[0] because it
may be needed for dynamic loading of modules in import.c. If you
have your own main program and want to use non-SunOS dynamic
loading, you will have to provide your own version of
getprogramname(). */
static char *argv0;
main(argc, argv)
int argc;
char **argv;
{
#ifdef macintosh
wargs(&argc, &argv);
#endif
argv0 = argv[0];
realmain(argc, argv);
}
char *
getprogramname()
{
return argv0;
}
#endif
/* Return the initial python search path. This is called once from
initsys() to initialize sys.path.
The environment variable PYTHONPATH is fetched and the default path
appended. (The Mac has no environment variables, so there the
default path is always returned.) The default path may be passed
to the preprocessor; if not, a system-dependent default is used. */
#ifndef PYTHONPATH
#ifdef macintosh
#define PYTHONPATH ": :Lib :Lib:stdwin :Demo"
#endif /* macintosh */
#endif /* !PYTHONPATH */
#ifndef PYTHONPATH
#ifdef MSDOS
#define PYTHONPATH ".;..\\lib;\\python\\lib"
#endif /* MSDOS */
#endif /* !PYTHONPATH */
#ifndef PYTHONPATH
#define PYTHONPATH ".:/usr/local/lib/python"
#endif /* !PYTHONPATH */
extern char *getenv();
char *
getpythonpath()
{
#ifdef macintosh
return PYTHONPATH;
#else /* !macintosh */
char *path = getenv("PYTHONPATH");
char *defpath = PYTHONPATH;
char *buf;
char *p;
int n;
if (path == 0 || *path == '\0')
return defpath;
n = strlen(path) + strlen(defpath) + 2;
buf = malloc(n);
if (buf == NULL)
return path; /* XXX too bad -- but not likely */
strcpy(buf, path);
p = buf + strlen(buf);
*p++ = DELIM;
strcpy(p, defpath);
return buf;
#endif /* !macintosh */
}
/* Table of built-in modules.
These are initialized when first imported.
Note: selection of optional extensions is now generally done by the
makesetup script. */
extern void initarray();
extern void initmath();
extern void initparser();
extern void initmac();
extern void initregex();
extern void initstrop();
extern void initstruct();
extern void inittime();
extern void initdbm();
extern void initfcntl();
extern void initnis();
extern void initpwd();
extern void initgrp();
extern void initselect();
extern void initsocket();
extern void initaudioop();
extern void initimageop();
extern void initrgbimg();
extern void initstdwin();
extern void initmd5();
extern void initmpz();
extern void initrotor();
extern void inital();
extern void initcd();
extern void initcl();
extern void initfm();
extern void initgl();
extern void initimgfile();
extern void initsgi();
extern void initsv();
extern void initfl();
extern void initthread();
extern void inittiming();
/* -- ADDMODULE MARKER 1 -- */
extern void initmarshal();
struct {
char *name;
void (*initfunc)();
} inittab[] = {
{"array", initarray},
{"math", initmath},
{"parser", initparser},
{"mac", initmac},
{"regex", initregex},
{"strop", initstrop},
{"struct", initstruct},
{"time", inittime},
{"audioop", initaudioop},
{"imageop", initimageop},
{"rgbimg", initrgbimg},
{"stdwin", initstdwin},
{"md5", initmd5},
{"rotor", initrotor},
/* -- ADDMODULE MARKER 2 -- */
/* This module "lives in" with marshal.c */
{"marshal", initmarshal},
/* These entries are here for sys.builtin_module_names */
{"__main__", NULL},
{"__builtin__", NULL},
{"sys", NULL},
/* Sentinel */
{0, 0}
};
#ifdef USE_FROZEN
#include "frozen.c"
#else
struct frozen {
char *name;
char *code;
int size;
} frozen_modules[] = {
{0, 0, 0}
};
#endif

246
Mac/Modules/macmodule.c Normal file
View File

@ -0,0 +1,246 @@
/***********************************************************
Copyright 1991, 1992, 1993, 1004 by Stichting Mathematisch Centrum,
Amsterdam, The Netherlands.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the names of Stichting Mathematisch
Centrum or CWI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior permission.
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
******************************************************************/
/* Macintosh OS module implementation */
#include "allobjects.h"
#include "import.h"
#include "modsupport.h"
#include "::unixemu:dir.h"
#include "::unixemu:stat.h"
static object *MacError; /* Exception */
static object *
mac_chdir(self, args)
object *self;
object *args;
{
char *path;
if (!getstrarg(args, &path))
return NULL;
if (chdir(path) != 0)
return err_errno(MacError);
INCREF(None);
return None;
}
static object *
mac_getcwd(self, args)
object *self;
object *args;
{
extern char *getwd();
char buf[1025];
if (!getnoarg(args))
return NULL;
strcpy(buf, "mac.getcwd() failed"); /* In case getwd() doesn't set a msg */
if (getwd(buf) == NULL) {
err_setstr(MacError, buf);
return NULL;
}
return newstringobject(buf);
}
static object *
mac_listdir(self, args)
object *self;
object *args;
{
object *d, *v;
char *name;
DIR *dirp;
struct direct *ep;
if (!getstrarg(args, &name))
return NULL;
if ((dirp = opendir(name)) == NULL)
return err_errno(MacError);
if ((d = newlistobject(0)) == NULL) {
closedir(dirp);
return NULL;
}
while ((ep = readdir(dirp)) != NULL) {
v = newstringobject(ep->d_name);
if (v == NULL) {
DECREF(d);
d = NULL;
break;
}
if (addlistitem(d, v) != 0) {
DECREF(v);
DECREF(d);
d = NULL;
break;
}
DECREF(v);
}
closedir(dirp);
return d;
}
static object *
mac_mkdir(self, args)
object *self;
object *args;
{
char *path;
int mode;
if (!getargs(args, "(si)", &path, &mode))
return NULL;
if (mkdir(path, mode) != 0)
return err_errno(MacError);
INCREF(None);
return None;
}
static object *
mac_rename(self, args)
object *self;
object *args;
{
char *src, *dst;
if (!getargs(args, "(ss)", &src, &dst))
return NULL;
if (rename(src, dst) != 0)
return err_errno(MacError);
INCREF(None);
return None;
}
static object *
mac_rmdir(self, args)
object *self;
object *args;
{
char *path;
if (!getstrarg(args, &path))
return NULL;
if (rmdir(path) != 0)
return err_errno(MacError);
INCREF(None);
return None;
}
static object *
mac_stat(self, args)
object *self;
object *args;
{
struct stat st;
char *path;
object *v;
if (!getstrarg(args, &path))
return NULL;
if (stat(path, &st) != 0)
return err_errno(MacError);
v = newtupleobject(11);
if (v == NULL)
return NULL;
#define SET(i, val) settupleitem(v, i, newintobject((long)(val)))
#define UNSET(i, val) SET(i, 0) /* For values my Mac stat doesn't support */
SET(0, st.st_mode);
UNSET(1, st.st_ino);
UNSET(2, st.st_dev);
UNSET(3, st.st_nlink);
UNSET(4, st.st_uid);
UNSET(5, st.st_gid);
SET(6, st.st_size);
UNSET(7, st.st_atime);
SET(8, st.st_mtime);
UNSET(9, st.st_ctime);
SET(10, st.st_rsize); /* Mac-specific: resource size */
/* XXX Check that unixemu:stat.c defines this! */
#undef SET
if (err_occurred()) {
DECREF(v);
return NULL;
}
return v;
}
static object *
mac_sync(self, args)
object *self;
object *args;
{
if (!getnoarg(args))
return NULL;
sync();
INCREF(None);
return None;
}
static object *
mac_unlink(self, args)
object *self;
object *args;
{
char *path;
if (!getstrarg(args, &path))
return NULL;
if (unlink(path) != 0)
return err_errno(MacError);
INCREF(None);
return None;
}
static struct methodlist mac_methods[] = {
{"chdir", mac_chdir},
{"getcwd", mac_getcwd},
{"listdir", mac_listdir},
{"mkdir", mac_mkdir},
{"rename", mac_rename},
{"rmdir", mac_rmdir},
{"stat", mac_stat},
{"sync", mac_sync},
{"unlink", mac_unlink},
{NULL, NULL} /* Sentinel */
};
void
initmac()
{
object *m, *d;
m = initmodule("mac", mac_methods);
d = getmoduledict(m);
/* Initialize mac.error exception */
MacError = newstringobject("mac.error");
if (MacError == NULL || dictinsert(d, "error", MacError) != 0)
fatal("can't define mac.error");
}

13
Mac/Python/macgetmtime.c Normal file
View File

@ -0,0 +1,13 @@
#include "::unixemu:stat.h"
/* Interfaced used by import.c */
long
getmtime(path)
char *path;
{
struct stat st;
if (stat(path, &st) != 0)
return -1L;
return st.st_mtime;
}

View File

@ -0,0 +1,27 @@
#include <MacHeaders>
#include <string.h>
/* Interface used by tokenizer.c */
guesstabsize(path)
char *path;
{
char s[256];
int refnum;
Handle h;
int tabsize = 0;
s[0] = strlen(path);
strncpy(s+1, path, s[0]);
refnum = OpenResFile(s);
/* printf("%s --> refnum=%d\n", path, refnum); */
if (refnum == -1)
return 0;
UseResFile(refnum);
h = GetIndResource('ETAB', 1);
if (h != 0) {
tabsize = (*(short**)h)[1];
/* printf("tabsize=%d\n", tabsize); */
}
CloseResFile(refnum);
return tabsize;
}