]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
New files.
authorGuido van Rossum <guido@python.org>
Fri, 24 Dec 1993 10:32:00 +0000 (10:32 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 24 Dec 1993 10:32:00 +0000 (10:32 +0000)
Modules/version.c [new file with mode: 0644]
Python/dup2.c [new file with mode: 0644]
Python/getmtime.c [new file with mode: 0644]
Python/memmove.c [new file with mode: 0644]
Python/mystrtoul.c [new file with mode: 0644]

diff --git a/Modules/version.c b/Modules/version.c
new file mode 100644 (file)
index 0000000..d71b59f
--- /dev/null
@@ -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 (file)
index 0000000..85ec5d5
--- /dev/null
@@ -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 (file)
index 0000000..931da64
--- /dev/null
@@ -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 (file)
index 0000000..e812751
--- /dev/null
@@ -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 (file)
index 0000000..965421b
--- /dev/null
@@ -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;
+}