summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/version.c396
-rw-r--r--Python/dup2.c31
-rw-r--r--Python/getmtime.c41
-rw-r--r--Python/memmove.c51
-rw-r--r--Python/mystrtoul.c156
5 files changed, 675 insertions, 0 deletions
diff --git a/Modules/version.c b/Modules/version.c
new file mode 100644
index 0000000..d71b59f
--- /dev/null
+++ b/Modules/version.c
@@ -0,0 +1,396 @@
+/***********************************************************
+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.
+
+******************************************************************/
+
+/* Python version information */
+
+/* Return the version string. This is constructed from the official
+ version number, the patch level, and the current date (if known to
+ the compiler, else a manually inserted date). */
+
+#define VERSION "1.0.%d ALPHA (%s)"
+
+#ifdef __DATE__
+#define DATE __DATE__
+#else
+#define DATE ">= 21 Dec 1993"
+#endif
+
+char *
+getversion()
+{
+ static char version[80];
+ sprintf(version, VERSION, PATCHLEVEL, DATE);
+ return version;
+}
+
+
+/* Return the copyright string. This is updated manually. */
+
+char *
+getcopyright()
+{
+ return
+"Copyright 1990, 1991, 1992, 1993 Stichting Mathematisch Centrum, Amsterdam";
+}
+
+
+/* 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 :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
+ mkext.py script in ../Extensions, but for non-UNIX systems most
+ well-known extensions are still listed here. */
+
+/* Standard modules */
+
+#ifdef USE_AL
+extern void inital();
+#endif
+#ifdef USE_AMOEBA
+extern void initamoeba();
+#endif
+#ifdef USE_AUDIO
+extern void initaudio();
+#endif
+#ifdef USE_AUDIOOP
+extern void initaudioop();
+#endif
+#ifdef USE_CD
+extern void initcd();
+#endif
+#ifdef USE_CL
+extern void initcl();
+#endif
+#ifdef USE_DBM
+extern void initdbm();
+#endif
+#ifdef USE_FCNTL
+extern void initfcntl();
+#endif
+#ifdef USE_FL
+extern void initfl();
+#endif
+#ifdef USE_FM
+extern void initfm();
+#endif
+#ifdef USE_GL
+extern void initgl();
+#endif
+#ifdef USE_GRP
+extern void initgrp();
+#endif
+#ifdef USE_IMGFILE
+extern void initimgfile();
+#endif
+#ifdef USE_JPEG
+extern void initjpeg();
+#endif
+#ifdef USE_MAC
+extern void initmac();
+#endif
+#ifdef USE_MARSHAL
+extern void initmarshal();
+#endif
+#ifdef USE_MATH
+extern void initmath();
+#endif
+#ifdef USE_NIS
+extern void initnis();
+#endif
+#ifdef USE_PANEL
+extern void initpanel();
+#endif
+#ifdef USE_POSIX
+extern void initposix();
+#endif
+#ifdef USE_PWD
+extern void initpwd();
+#endif
+#ifdef USE_REGEX
+extern void initregex();
+#endif
+#ifdef USE_ROTOR
+extern void initrotor();
+#endif
+#ifdef USE_SELECT
+extern void initselect();
+#endif
+#ifdef USE_SGI
+extern void initsgi();
+#endif
+#ifdef USE_SOCKET
+extern void initsocket();
+#endif
+#ifdef USE_STDWIN
+extern void initstdwin();
+#endif
+#ifdef USE_STROP
+extern void initstrop();
+#endif
+#ifdef USE_STRUCT
+extern void initstruct();
+#endif
+#ifdef USE_SUNAUDIODEV
+extern void initsunaudiodev();
+#endif
+#ifdef USE_SV
+extern void initsv();
+#endif
+#ifdef USE_TIME
+extern void inittime();
+#endif
+#ifdef USE_IMAGEOP
+extern void initimageop();
+#endif
+#ifdef USE_MPZ
+extern void initmpz();
+#endif
+#ifdef USE_MD5
+extern void initmd5();
+#endif
+#ifdef USE_ARRAY
+extern void initarray();
+#endif
+#ifdef USE_XT
+extern void initXt();
+#endif
+#ifdef USE_XAW
+extern void initXaw();
+#endif
+#ifdef USE_XM
+extern void initXm();
+#endif
+#ifdef USE_GLX
+extern void initGlx();
+#endif
+#ifdef USE_HTML
+extern void initHTML();
+#endif
+#ifdef USE_XLIB
+extern void initXlib();
+#endif
+#ifdef USE_PARSER
+extern void initparser();
+#endif
+/* -- ADDMODULE MARKER 1 -- */
+
+struct {
+ char *name;
+ void (*initfunc)();
+} inittab[] = {
+
+#ifdef USE_AL
+ {"al", inital},
+#endif
+
+#ifdef USE_AMOEBA
+ {"amoeba", initamoeba},
+#endif
+
+#ifdef USE_AUDIO
+ {"audio", initaudio},
+#endif
+
+#ifdef USE_AUDIOOP
+ {"audioop", initaudioop},
+#endif
+
+#ifdef USE_CD
+ {"cd", initcd},
+#endif
+
+#ifdef USE_CL
+ {"cl", initcl},
+#endif
+
+#ifdef USE_DBM
+ {"dbm", initdbm},
+#endif
+
+#ifdef USE_FCNTL
+ {"fcntl", initfcntl},
+#endif
+
+#ifdef USE_FL
+ {"fl", initfl},
+#endif
+
+#ifdef USE_FM
+ {"fm", initfm},
+#endif
+
+#ifdef USE_GL
+ {"gl", initgl},
+#endif
+
+#ifdef USE_GRP
+ {"grp", initgrp},
+#endif
+
+#ifdef USE_IMGFILE
+ {"imgfile", initimgfile},
+#endif
+
+#ifdef USE_JPEG
+ {"jpeg", initjpeg},
+#endif
+
+#ifdef USE_MAC
+ {"mac", initmac},
+#endif
+
+#ifdef USE_MARSHAL
+ {"marshal", initmarshal},
+#endif
+
+#ifdef USE_MATH
+ {"math", initmath},
+#endif
+
+#ifdef USE_NIS
+ {"nis", initnis},
+#endif
+
+#ifdef USE_PANEL
+ {"pnl", initpanel},
+#endif
+
+#ifdef USE_POSIX
+ {"posix", initposix},
+#endif
+
+#ifdef USE_PWD
+ {"pwd", initpwd},
+#endif
+
+#ifdef USE_REGEX
+ {"regex", initregex},
+#endif
+
+#ifdef USE_ROTOR
+ {"rotor", initrotor},
+#endif
+
+#ifdef USE_SELECT
+ {"select", initselect},
+#endif
+
+#ifdef USE_SGI
+ {"sgi", initsgi},
+#endif
+
+#ifdef USE_SOCKET
+ {"socket", initsocket},
+#endif
+
+#ifdef USE_STDWIN
+ {"stdwin", initstdwin},
+#endif
+
+#ifdef USE_STROP
+ {"strop", initstrop},
+#endif
+
+#ifdef USE_STRUCT
+ {"struct", initstruct},
+#endif
+
+#ifdef USE_SUNAUDIODEV
+ {"sunaudiodev", initsunaudiodev},
+#endif
+
+#ifdef USE_SV
+ {"sv", initsv},
+#endif
+
+#ifdef USE_TIME
+ {"time", inittime},
+#endif
+
+#ifdef USE_IMAGEOP
+ {"imageop", initimageop},
+#endif
+
+#ifdef USE_MPZ
+ {"mpz", initmpz},
+#endif
+
+#ifdef USE_MD5
+ {"md5", initmd5},
+#endif
+
+#ifdef USE_ARRAY
+ {"array", initarray},
+#endif
diff --git a/Python/dup2.c b/Python/dup2.c
new file mode 100644
index 0000000..85ec5d5
--- /dev/null
+++ b/Python/dup2.c
@@ -0,0 +1,31 @@
+/*
+ * Public domain dup2() lookalike
+ * by Curtis Jackson @ AT&T Technologies, Burlington, NC
+ * electronic address: burl!rcj
+ *
+ * dup2 performs the following functions:
+ *
+ * Check to make sure that fd1 is a valid open file descriptor.
+ * Check to see if fd2 is already open; if so, close it.
+ * Duplicate fd1 onto fd2; checking to make sure fd2 is a valid fd.
+ * Return fd2 if all went well; return BADEXIT otherwise.
+ */
+
+#include <fcntl.h>
+
+#define BADEXIT -1
+
+int
+dup2(fd1, fd2)
+int fd1, fd2;
+{
+ if (fd1 != fd2) {
+ if (fcntl(fd1, F_GETFL) < 0)
+ return BADEXIT;
+ if (fcntl(fd2, F_GETFL) >= 0)
+ close(fd2);
+ if (fcntl(fd1, F_DUPFD, fd2) < 0)
+ return BADEXIT;
+ }
+ return fd2;
+}
diff --git a/Python/getmtime.c b/Python/getmtime.c
new file mode 100644
index 0000000..931da64
--- /dev/null
+++ b/Python/getmtime.c
@@ -0,0 +1,41 @@
+/***********************************************************
+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.
+
+******************************************************************/
+
+/* Subroutine to get the last modification time of a file */
+
+/* (A separate file because this may be OS dependent) */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+long
+getmtime(path)
+ char *path;
+{
+ struct stat st;
+ if (stat(path, &st) != 0)
+ return -1;
+ else
+ return st.st_mtime;
+}
diff --git a/Python/memmove.c b/Python/memmove.c
new file mode 100644
index 0000000..e812751
--- /dev/null
+++ b/Python/memmove.c
@@ -0,0 +1,51 @@
+/***********************************************************
+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.
+
+******************************************************************/
+
+/* A perhaps slow but I hope correct implementation of memmove */
+
+extern char *memcpy();
+
+char *
+memmove(dst, src, n)
+ char *dst;
+ char *src;
+ int n;
+{
+ char *realdst = dst;
+ if (n <= 0)
+ return dst;
+ if (src >= dst+n || dst >= src+n)
+ return memcpy(dst, src, n);
+ if (src > dst) {
+ while (--n >= 0)
+ *dst++ = *src++;
+ }
+ else if (src < dst) {
+ src += n;
+ dst += n;
+ while (--n >= 0)
+ *--dst = *--src;
+ }
+ return realdst;
+}
diff --git a/Python/mystrtoul.c b/Python/mystrtoul.c
new file mode 100644
index 0000000..965421b
--- /dev/null
+++ b/Python/mystrtoul.c
@@ -0,0 +1,156 @@
+/***********************************************************
+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.
+
+******************************************************************/
+
+/*
+** strtoul
+** This is a general purpose routine for converting
+** an ascii string to an integer in an arbitrary base.
+** Leading white space is ignored. If 'base' is zero
+** it looks for a leading 0, 0x or 0X to tell which
+** base. If these are absent it defaults to 10.
+** Base must be 0 or between 2 and 36 (inclusive).
+** If 'ptr' is non-NULL it will contain a pointer to
+** the end of the scan.
+** Errors due to bad pointers will probably result in
+** exceptions - we don't check for them.
+*/
+
+#include <ctype.h>
+#include <errno.h>
+
+unsigned long
+strtoul(str, ptr, base)
+register char * str;
+char ** ptr;
+int base;
+{
+ register unsigned long result; /* return value of the function */
+ register int c; /* current input character */
+ register unsigned long temp; /* used in overflow testing */
+ int ovf; /* true if overflow occurred */
+
+ result = 0;
+ ovf = 0;
+
+/* catch silly bases */
+ if (base != 0 && (base < 2 || base > 36))
+ {
+ if (ptr)
+ *ptr = str;
+ return 0;
+ }
+
+/* skip leading white space */
+ while (*str && isspace(*str))
+ str++;
+
+/* check for leading 0 or 0x for auto-base or base 16 */
+ switch (base)
+ {
+ case 0: /* look for leading 0, 0x or 0X */
+ if (*str == '0')
+ {
+ str++;
+ if (*str == 'x' || *str == 'X')
+ {
+ str++;
+ base = 16;
+ }
+ else
+ base = 8;
+ }
+ else
+ base = 10;
+ break;
+
+ case 16: /* skip leading 0x or 0X */
+ if (*str == '0' && (*(str+1) == 'x' || *(str+1) == 'X'))
+ str += 2;
+ break;
+ }
+
+/* do the conversion */
+ while (c = *str)
+ {
+ if (isdigit(c) && c - '0' < base)
+ c -= '0';
+ else
+ {
+ if (isupper(c))
+ c = tolower(c);
+ if (c >= 'a' && c <= 'z')
+ c -= 'a' - 10;
+ else /* non-"digit" character */
+ break;
+ if (c >= base) /* non-"digit" character */
+ break;
+ }
+ temp = result;
+ result = result * base + c;
+ if ((result - c) / base != temp) /* overflow */
+ ovf = 1;
+ str++;
+ }
+
+/* set pointer to point to the last character scanned */
+ if (ptr)
+ *ptr = str;
+ if (ovf)
+ {
+ result = ~0;
+ errno = ERANGE;
+ }
+ return result;
+}
+
+long
+strtol(str, ptr, base)
+char * str;
+char ** ptr;
+int base;
+{
+ long result;
+ char sign;
+
+ while (*str && isspace(*str))
+ str++;
+
+ sign = *str;
+ if (sign == '+' || sign == '-')
+ str++;
+
+ result = (long) strtoul(str, ptr, base);
+
+ /* Signal overflow if the result appears negative,
+ except for the largest negative integer */
+ if (result < 0 && !(sign == '-' && result == -result)) {
+ errno = ERANGE;
+ result = 0x7fffffff;
+ }
+
+ if (sign == '-')
+ result = -result;
+
+ return result;
+}