]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
* Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
authorGuido van Rossum <guido@python.org>
Thu, 17 Jun 1993 12:35:49 +0000 (12:35 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 17 Jun 1993 12:35:49 +0000 (12:35 +0000)
  Added $(SYSDEF) to its build rule in Makefile.
* cgensupport.[ch], modsupport.[ch]: removed some old stuff.  Also
  changed files that still used it...  And made several things static
  that weren't but should have been...  And other minor cleanups...
* listobject.[ch]: add external interfaces {set,get}listslice
* socketmodule.c: fix bugs in new send() argument parsing.
* sunaudiodevmodule.c: added flush() and close().

33 files changed:
Include/cgensupport.h
Include/listobject.h
Include/modsupport.h
Include/pythonrun.h
Modules/almodule.c
Modules/arraymodule.c
Modules/cdmodule.c
Modules/cgensupport.c
Modules/cgensupport.h
Modules/flmodule.c
Modules/fmmodule.c
Modules/imgfile.c
Modules/mathmodule.c
Modules/nismodule.c
Modules/posixmodule.c
Modules/rotormodule.c
Modules/sgimodule.c
Modules/socketmodule.c
Modules/stdwinmodule.c
Modules/sunaudiodev.c
Modules/threadmodule.c
Modules/timemodule.c
Objects/accessobject.c
Objects/fileobject.c
Objects/floatobject.c
Objects/listobject.c
Objects/longobject.c
Objects/stringobject.c
Objects/tupleobject.c
Python/bltinmodule.c
Python/ceval.c
Python/cgensupport.c
Python/graminit.c

index 5c2cbd4cfa5996b22a33d4792a09186ca4986ba3..43818bc4108edd5a10a52ad59238825c7e55bed8 100644 (file)
@@ -29,8 +29,7 @@ typedef char *string;
 #define mknewlongobject(x) newintobject(x)
 #define mknewshortobject(x) newintobject((long)x)
 #define mknewfloatobject(x) newfloatobject(x)
-
-extern object *mknewcharobject PROTO((int c));
+#define mknewcharobject(c) mkvalue("c", c)
 
 extern int getiobjectarg PROTO((object *args, int nargs, int i, object **p_a));
 extern int getilongarg PROTO((object *args, int nargs, int i, long *p_a));
index 519776a23b11b89f240e44757475323c96ecb694..f18877f98011c3f801fbded3338a363633db865f 100644 (file)
@@ -53,6 +53,8 @@ extern object *getlistitem PROTO((object *, int));
 extern int setlistitem PROTO((object *, int, object *));
 extern int inslistitem PROTO((object *, int, object *));
 extern int addlistitem PROTO((object *, object *));
+extern object *getlistslice PROTO((object *, int, int));
+extern int setlistslice PROTO((object *, int, int, object *));
 extern int sortlist PROTO((object *));
 
 /* Macro, trading safety for speed */
index bb809c76bd8bfbc8f56a24d9f6d6e359be00c0d0..5c1bdf509fa672fe73840493edc1cadf82424f14 100644 (file)
@@ -40,29 +40,8 @@ extern int vgetargs PROTO((object *, char *, va_list));
 extern object *mkvalue PROTO((char *, ...));
 extern object *vmkvalue PROTO((char *, va_list));
 
+/* The following are obsolete -- use getargs directly! */
 #define getnoarg(v) getargs(v, "")
 #define getintarg(v, a) getargs(v, "i", a)
-#define getintintarg(v, a, b) getargs(v, "(ii)", a, b)
-#define getintintintarg(v, a, b, c) getargs(v, "(iii)", a, b, c)
 #define getlongarg(v, a) getargs(v, "l", a)
-#define getlonglongarg(v, a, b) getargs(v, "(ll)", a, b)
-#define getlonglongobjectarg(v, a, b, c) getargs(v, "(llO)", a, b, c)
-#define getStrarg(v, a) getargs(v, "S", a)
 #define getstrarg(v, a) getargs(v, "s", a)
-#define getstrstrarg(v, a, b) getargs(v, "(ss)", a, b)
-#define getStrStrarg(v, a, b) getargs(v, "(SS)", a, b)
-#define getstrstrintarg(v, a, b, c) getargs(v, "(ssi)", a, b, c)
-#define getStrintarg(v, a, b) getargs(v, "(Si)", a, b)
-#define getstrintarg(v, a, b) getargs(v, "(si)", a, b)
-#define getintstrarg(v, a, b) getargs(v, "(is)", a, b)
-#define getpointarg(v, a) getargs(v, "(ii)", a, (a)+1)
-#define get3pointarg(v, a) getargs(v, "((ii)(ii)(ii))", \
-                               a, a+1, a+2, a+3, a+4, a+5)
-#define getrectarg(v, a) getargs(v, "((ii)(ii))", a, a+1, a+2, a+3)
-#define getrectintarg(v, a) getargs(v, "(((ii)(ii))i)", a, a+1, a+2, a+3, a+4)
-#define getpointintarg(v, a) getargs(v, "((ii)i)", a, a+1, a+2)
-#define getpointstrarg(v, a, b) getargs(v, "((ii)s)", a, a+1, b)
-#define getrectpointarg(v, a) getargs(v, "(((ii)(ii))(ii))", \
-                               a, a+1, a+2, a+3, a+4, a+5)
-#define getdoublearg(v, a) getargs(v, "d", a)
-#define get2doublearg(v, a, b) getargs(v, "(dd)", a, b)
index 6c6117bfe491e296c5d66da1941dd6fc42c6aaa4..c3c3aca24aaa4566d3f526a90103cd9f44534b59 100644 (file)
@@ -28,6 +28,7 @@ void initall PROTO((void));
 
 int run PROTO((FILE *, char *));
 
+int run_command PROTO((char *));
 int run_script PROTO((FILE *, char *));
 int run_tty_1 PROTO((FILE *, char *));
 int run_tty_loop PROTO((FILE *, char *));
index d986d3445e4ea9163f1b6ec3efacd6e8895097cd..26bf38f088800b9855959bf67d2ac1d20fc1a0c9 100644 (file)
@@ -568,7 +568,7 @@ al_openport (self, args)
        }
        size = gettuplesize(args);
        if (size == 2) {
-               if (!getstrstrarg (args, &name, &dir))
+               if (!getargs (args, "(ss)", &name, &dir))
                        return NULL;
        }
        else if (size == 3) {
index e5bf46a1e9c7c2d7b75a491bc26b63d2311e1acb..b5a2cfa0b4f42490f26569dfc29617ca38e1a07c 100644 (file)
@@ -209,7 +209,7 @@ d_setitem(ap, i, v)
 }
 
 /* Description of types */
-struct arraydescr descriptors[] = {
+static struct arraydescr descriptors[] = {
        {'c', sizeof(char), c_getitem, c_setitem},
        {'b', sizeof(char), b_getitem, b_setitem},
        {'h', sizeof(short), h_getitem, h_setitem},
index 27cf35c43a969e6b943bef50d25fc85f57156b13..b5d0defd593fee3af21c00f6fa0d685b7d337779 100644 (file)
@@ -725,12 +725,12 @@ CD_addcallback(self, args)
        object *args;
 {
        int type;
-       object *funcobject, *funcargobject;
+       object *func, *funcarg;
 
        CheckParser(self);
 
        /* XXX - more work here */
-       if (!getargs(args, "(iOO)", &type, &funcobject, &funcargobject))
+       if (!getargs(args, "(iOO)", &type, &func, &funcarg))
                return NULL;
 
        if (type < 0 || type >= NCALLBACKS) {
@@ -744,11 +744,11 @@ CD_addcallback(self, args)
        CDsetcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback, (void *) self);
 #endif
        XDECREF(self->ob_cdcallbacks[type].ob_cdcallback);
-       INCREF(funcobject);
-       self->ob_cdcallbacks[type].ob_cdcallback = funcobject;
+       INCREF(func);
+       self->ob_cdcallbacks[type].ob_cdcallback = func;
        XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg);
-       INCREF(funcargobject);
-       self->ob_cdcallbacks[type].ob_cdcallbackarg = funcargobject;
+       INCREF(funcarg);
+       self->ob_cdcallbacks[type].ob_cdcallbackarg = funcarg;
 
        INCREF(None);
        return None;
index 5dcac867c75ec49df0f1d91c91c8e4933c0dc92b..87fcfabe6873c675e66f6694eeadd3c19e922ddd 100644 (file)
@@ -28,17 +28,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "cgensupport.h"
 
 
-/* Functions to construct return values */
-
-object *
-mknewcharobject(c)
-       int c;
-{
-       char ch[1];
-       ch[0] = c;
-       return newsizedstringobject(ch, 1);
-}
-
 /* Functions to extract arguments.
    These needs to know the total number of arguments supplied,
    since the argument list is a tuple only of there is more than
index 5c2cbd4cfa5996b22a33d4792a09186ca4986ba3..43818bc4108edd5a10a52ad59238825c7e55bed8 100644 (file)
@@ -29,8 +29,7 @@ typedef char *string;
 #define mknewlongobject(x) newintobject(x)
 #define mknewshortobject(x) newintobject((long)x)
 #define mknewfloatobject(x) newfloatobject(x)
-
-extern object *mknewcharobject PROTO((int c));
+#define mknewcharobject(c) mkvalue("c", c)
 
 extern int getiobjectarg PROTO((object *args, int nargs, int i, object **p_a));
 extern int getilongarg PROTO((object *args, int nargs, int i, long *p_a));
index 3d424d1fe6681b6ebc920e9691657d4dab961a54..0cc08da5c528855cacf18fe39bfe65e2dfe018a2 100644 (file)
@@ -528,7 +528,7 @@ call_forms_INiINstr (func, obj, args)
        char *b;
        int a;
        
-       if (!getintstrarg(args, &a, &b)) return NULL;
+       if (!getargs(args, "(is)", &a, &b)) return NULL;
        
        (*func) (obj, a, b);
        
@@ -546,7 +546,7 @@ call_forms_INiINi (func, obj, args)
 {
        int par1, par2;
        
-       if (!getintintarg(args, &par1, &par2)) return NULL;
+       if (!getargs(args, "(ii)", &par1, &par2)) return NULL;
        
        (*func) (obj, par1, par2);
        
@@ -1048,7 +1048,7 @@ get_default(g, args)
 
        c = fl_get_default (g->ob_generic);
 
-       return ((object *) mknewcharobject (c)); /* in cgensupport.c */
+       return mkvalue("c", c);
 }
 
 static struct methodlist default_methods[] = {
@@ -1479,7 +1479,7 @@ form_call_INiINi(func, f, args)
 {
        int a, b;
 
-       if (!getintintarg(args, &a, &b)) return NULL;
+       if (!getargs(args, "(ii)", &a, &b)) return NULL;
 
        (*func)(f, a, b);
 
@@ -2144,7 +2144,7 @@ forms_set_graphics_mode(dummy, args)
 {
        int rgbmode, doublebuf;
 
-       if (!getintintarg(args, &rgbmode, &doublebuf))
+       if (!getargs(args, "(ii)", &rgbmode, &doublebuf))
                return NULL;
        fl_set_graphics_mode(rgbmode,doublebuf);
        INCREF(None);
@@ -2441,7 +2441,7 @@ forms_show_input(f, args)
        char *str;
        char *a, *b;
 
-       if (!getstrstrarg(args, &a, &b)) return NULL;
+       if (!getargs(args, "(ss)", &a, &b)) return NULL;
 
        BGN_SAVE
        str = fl_show_input(a, b);
index 8d54d97140f0122b0ebdcf7b7362785e4c504811..aa49be36a2f1e8a83f8c2740d8d3bdee7cf55a86 100644 (file)
@@ -68,7 +68,7 @@ fh_scalefont(self, args)
        object *args;
 {
        double size;
-       if (!getdoublearg(args, &size))
+       if (!getargs(args, "d", &size))
                return NULL;
        return newfhobject(fmscalefont(self->fh_fh, size));
 }
index a6db0266d2a02adc5a1e1edcf9953e469b74ea01..93f5ef3cfd228506401755638a823f441741da6e 100644 (file)
@@ -162,9 +162,9 @@ imgfile_read(self, args)
     return rv;
 }
 
-IMAGE *glob_image;
-long *glob_datap;
-int glob_width, glob_z;
+static IMAGE *glob_image;
+static long *glob_datap;
+static int glob_width, glob_z;
 
 static
 xs_get(buf, y)
index 979155e481bf859f2810639257f7a43625224e71..8b1bccf8dad184efe5d7e7952bcface185733c49 100644 (file)
@@ -33,6 +33,9 @@ extern int errno;
 
 #include "modsupport.h"
 
+#define getdoublearg(v, a) getargs(v, "d", a)
+#define get2doublearg(v, a, b) getargs(v, "(dd)", a, b)
+
 #include <math.h>
 
 #ifdef i860
index eb97dee85cf8cdc01f0168f659b41361df8028c8..92341273c58413586553ab4eb3e2f10cfd6aaa6e 100644 (file)
@@ -87,7 +87,7 @@ nis_match (self, args)
        int err;
        object *res;
 
-       if (!getstrstrarg(args, &key, &map))
+       if (!getargs(args, "(ss)", &key, &map))
                return NULL;
        if ((err = yp_get_default_domain(&domain)) != 0)
                return nis_error(err);
index 2e800de7973483f8ad360a6183dbdfb865dd1f74..88861c66e09a5a3a59ac6799149d14f22f2caccd 100644 (file)
@@ -166,7 +166,7 @@ posix_2str(args, func)
 {
        char *path1, *path2;
        int res;
-       if (!getstrstrarg(args, &path1, &path2))
+       if (!getargs(args, "(ss)", &path1, &path2))
                return NULL;
        BGN_SAVE
        res = (*func)(path1, path2);
@@ -185,7 +185,7 @@ posix_strint(args, func)
        char *path;
        int i;
        int res;
-       if (!getstrintarg(args, &path, &i))
+       if (!getargs(args, "(si)", &path, &i))
                return NULL;
        BGN_SAVE
        res = (*func)(path, i);
@@ -691,7 +691,7 @@ posix_kill(self, args)
        object *args;
 {
        int pid, sig;
-       if (!getintintarg(args, &pid, &sig))
+       if (!getargs(args, "(ii)", &pid, &sig))
                return NULL;
        if (kill(pid, sig) == -1)
                return posix_error();
@@ -891,7 +891,7 @@ posix_tcsetpgrp(self, args)
 
 /* Functions acting on file descriptors */
 
-object *
+static object *
 posix_open(self, args)
        object *self;
        object *args;
@@ -913,7 +913,7 @@ posix_open(self, args)
        return newintobject((long)fd);
 }
 
-object *
+static object *
 posix_close(self, args)
        object *self;
        object *args;
@@ -930,7 +930,7 @@ posix_close(self, args)
        return None;
 }
 
-object *
+static object *
 posix_dup(self, args)
        object *self;
        object *args;
@@ -946,7 +946,7 @@ posix_dup(self, args)
        return newintobject((long)fd);
 }
 
-object *
+static object *
 posix_dup2(self, args)
        object *self;
        object *args;
@@ -963,7 +963,7 @@ posix_dup2(self, args)
        return None;
 }
 
-object *
+static object *
 posix_lseek(self, args)
        object *self;
        object *args;
@@ -988,7 +988,7 @@ posix_lseek(self, args)
        return newintobject(res);
 }
 
-object *
+static object *
 posix_read(self, args)
        object *self;
        object *args;
@@ -1011,7 +1011,7 @@ posix_read(self, args)
        return buffer;
 }
 
-object *
+static object *
 posix_write(self, args)
        object *self;
        object *args;
@@ -1028,7 +1028,7 @@ posix_write(self, args)
        return newintobject((long)size);
 }
 
-object *
+static object *
 posix_fstat(self, args)
        object *self;
        object *args;
@@ -1079,7 +1079,7 @@ posix_fdopen(self, args)
 }
 
 #ifndef MSDOS
-object *
+static object *
 posix_pipe(self, args)
        object *self;
        object *args;
index 4e9afd8deb10bcc968326a7d94584e9215a72905..71bac909a683496fc0f551340bb5d0b085635122 100644 (file)
@@ -763,8 +763,10 @@ static typeobject Rotortype = {
 };
 
 
-object *rotor_rotor(self, args)
-object *args;
+static object *
+rotor_rotor(self, args)
+       object *self;
+       object *args;
 {
        char *string;
        rotorobject *r;
index b3733846a0dde4acb96167ff866ae4f3bcfb3acb..418609de5aa97ce9653bae328a94ab4482841182 100644 (file)
@@ -57,4 +57,4 @@ initsgi()
        initmodule("sgi", sgi_methods);
 }
 
-int dummy; /* $%#@!& dl wants at least a byte of bss */
+static int dummy; /* $%#@!& dl wants at least a byte of bss */
index 160c292d8651d0fa45948447fc275561570c5f4b..dfdf97ba21d4228cc450e0397c57dad6d0821c07 100644 (file)
@@ -744,9 +744,9 @@ sock_send(s, args)
        char *buf;
        int len, n, flags;
        flags = 0;
-       if (!getargs(args, "(s#)", &buf, &len)) {
+       if (!getargs(args, "s#", &buf, &len)) {
                err_clear();
-               if (!getargs(args, "s#", &buf, &len, &flags))
+               if (!getargs(args, "(s#i)", &buf, &len, &flags))
                        return NULL;
        }
        BGN_SAVE
index 02f7bcbd9bf2de009108346d072e09023b4f4873..6e666a61b5622a0b7db21355415c449293067c5e 100644 (file)
@@ -91,6 +91,15 @@ static type_lock StdwinLock; /* Lock held when interpreter not locked */
 
 #endif
 
+#define getpointarg(v, a) getargs(v, "(ii)", a, (a)+1)
+#define get3pointarg(v, a) getargs(v, "((ii)(ii)(ii))", \
+                               a, a+1, a+2, a+3, a+4, a+5)
+#define getrectarg(v, a) getargs(v, "((ii)(ii))", a, a+1, a+2, a+3)
+#define getrectintarg(v, a) getargs(v, "(((ii)(ii))i)", a, a+1, a+2, a+3, a+4)
+#define getpointintarg(v, a) getargs(v, "((ii)i)", a, a+1, a+2)
+#define getrectpointarg(v, a) getargs(v, "(((ii)(ii))(ii))", \
+                               a, a+1, a+2, a+3, a+4, a+5)
+
 static object *StdwinError; /* Exception stdwin.error */
 
 /* Window and menu object types declared here because of forward references */
@@ -1236,7 +1245,7 @@ menu_setitem(self, args)
 {
        int index;
        char *text;
-       if (!getintstrarg(args, &index, &text))
+       if (!getargs(args, "(is)", &index, &text))
                return NULL;
        wmenusetitem(self->m_menu, index, text);
        INCREF(None);
@@ -1250,7 +1259,7 @@ menu_enable(self, args)
 {
        int index;
        int flag;
-       if (!getintintarg(args, &index, &flag))
+       if (!getargs(args, "(ii)", &index, &flag))
                return NULL;
        wmenuenable(self->m_menu, index, flag);
        INCREF(None);
@@ -1264,7 +1273,7 @@ menu_check(self, args)
 {
        int index;
        int flag;
-       if (!getintintarg(args, &index, &flag))
+       if (!getargs(args, "(ii)", &index, &flag))
                return NULL;
        wmenucheck(self->m_menu, index, flag);
        INCREF(None);
@@ -1705,7 +1714,7 @@ window_settitle(wp, args)
        object *args;
 {
        object *title;
-       if (!getStrarg(args, &title))
+       if (!getargs(args, "S", &title))
                return NULL;
        DECREF(wp->w_title);
        INCREF(title);
@@ -1930,7 +1939,7 @@ stdwin_open(sw, args)
        int tag;
        object *title;
        windowobject *wp;
-       if (!getStrarg(args, &title))
+       if (!getargs(args, "S", &title))
                return NULL;
        for (tag = 0; tag < MAXNWIN; tag++) {
                if (windowlist[tag] == NULL)
@@ -2180,7 +2189,7 @@ stdwin_askfile(self, args)
        char *prompt, *dflt;
        int new, ret;
        char buf[256];
-       if (!getstrstrintarg(args, &prompt, &dflt, &new))
+       if (!getargs(args, "(ssi)", &prompt, &dflt, &new))
                return NULL;
        strncpy(buf, dflt, sizeof buf);
        buf[sizeof buf - 1] = '\0';
@@ -2201,7 +2210,7 @@ stdwin_askync(self, args)
 {
        char *prompt;
        int new, ret;
-       if (!getstrintarg(args, &prompt, &new))
+       if (!getargs(args, "(si)", &prompt, &new))
                return NULL;
        BGN_STDWIN
        ret = waskync(prompt, new);
@@ -2221,7 +2230,7 @@ stdwin_askstr(self, args)
        char *prompt, *dflt;
        int ret;
        char buf[256];
-       if (!getstrstrarg(args, &prompt, &dflt))
+       if (!getargs(args, "(ss)", &prompt, &dflt))
                return NULL;
        strncpy(buf, dflt, sizeof buf);
        buf[sizeof buf - 1] = '\0';
index b4470dd85dfeaa21bc5d62a42495fe872de266ae..4e6312362d8762a48b33594844636847fe45841b 100644 (file)
@@ -28,6 +28,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "modsupport.h"
 #include "structmember.h"
 
+#include <stropts.h>
 #include <sys/ioctl.h>
 #include <sun/audioio.h>
 
@@ -255,6 +256,38 @@ sad_drain(self, args)
     return None;
 }
 
+static object *
+sad_flush(self, args)
+    sadobject *self;
+    object *args;
+{
+    
+    if ( !getargs(args, "") )
+      return 0;
+    if ( ioctl(self->x_fd, I_FLUSH, FLUSHW) < 0 ) {
+       err_errno(SunAudioError);
+       return NULL;
+    }
+    INCREF(None);
+    return None;
+}
+
+static object *
+sad_close(self, args)
+    sadobject *self;
+    object *args;
+{
+    
+    if ( !getargs(args, "") )
+      return 0;
+    if ( self->x_fd >= 0 ) {
+       close(self->x_fd);
+       self->x_fd = -1;
+    }
+    INCREF(None);
+    return None;
+}
+
 static struct methodlist sad_methods[] = {
         { "read",      sad_read },
         { "write",     sad_write },
@@ -264,6 +297,8 @@ static struct methodlist sad_methods[] = {
         { "getinfo",   sad_getinfo },
         { "setinfo",   sad_setinfo },
         { "drain",     sad_drain },
+        { "flush",     sad_flush },
+        { "close",     sad_close },
        {NULL,          NULL}           /* sentinel */
 };
 
index 7a5f29d4f44e150af163142c3fb28631f2dfcb13..f22aa8c4ce8ae49ed2e5572d81dce53e27f3ab09 100644 (file)
@@ -33,7 +33,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 int threads_started = 0;
 
-object *ThreadError;
+static object *ThreadError;
 
 
 /* Lock objects */
index b8b22e34c2e911424112554f3a3730175d2fa825..3df088513eba273242ce0ed2294760ce7ab10be2 100644 (file)
@@ -78,6 +78,26 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include <errno.h>
 #endif
 
+#ifdef SYSV
+/* Access timezone stuff */
+#ifdef OLDTZ                           /* ANSI prepends underscore to these */
+#define _timezone      timezone        /* seconds to be added to GMT */
+#define _altzone       0               /* _timezone if daylight saving time */
+#define _daylight      0               /* if zero, _altzone is not available*/
+#define _tzname                tzname          /* Name of timezone and altzone */
+#endif
+#ifdef NOALTTZ                         /* if system doesn't support alt tz */
+#undef _daylight
+#undef _altzone
+#define _daylight      0
+#define _altzone       0
+#endif
+#endif /* SYSV */
+
+/* Forward declarations */
+static void floatsleep PROTO((double));
+static long millitimer PROTO((void)); 
+
 /* Time methods */
 
 static object *
@@ -199,7 +219,6 @@ time_millitimer(self, args)
        object *args;
 {
        long msecs;
-       extern long millitimer();
        if (!getnoarg(args))
                return NULL;
        msecs = millitimer();
@@ -225,7 +244,7 @@ time_times(self, args)
                err_errno(IOError);
                return NULL;
        }
-       return mkvalue("dddd",
+       return mkvalue("(dddd)",
                       (double)t.tms_utime / HZ,
                       (double)t.tms_stime / HZ,
                       (double)t.tms_cutime / HZ,
@@ -235,6 +254,71 @@ time_times(self, args)
 #endif
 
 
+static object *
+time_convert(when, function)
+       time_t when;
+       struct tm * (*function) PROTO((time_t *));
+{
+       struct tm *p = function(&when);
+       return mkvalue("(iiiiiiiii)",
+                      p->tm_year + 1900,
+                      p->tm_mon + 1, /* Want January == 1 */
+                      p->tm_mday,
+                      p->tm_hour,
+                      p->tm_min,
+                      p->tm_sec,
+                      (p->tm_wday + 6) % 7, /* Want Monday == 0 */
+                      p->tm_yday,
+                      p->tm_isdst);
+}
+
+static object *
+time_gmtime(self, args)
+       object *self;
+       object *args;
+{
+       double when;
+       if (!getargs(args, "d", &when))
+               return NULL;
+       return time_convert((time_t)when, gmtime);
+}
+
+static object *
+time_localtime(self, args)
+       object *self;
+       object *args;
+{
+       double when;
+       if (!getargs(args, "d", &when))
+               return NULL;
+       return time_convert((time_t)when, localtime);
+}
+
+/* Some very old systems may not have mktime().  Comment it out then! */
+
+static object *
+time_mktime(self, args)
+       object *self;
+       object *args;
+{
+       struct tm buf;
+       if (!getargs(args, "(iiiiiiiii)",
+                    &buf.tm_year,
+                    &buf.tm_mon,
+                    &buf.tm_mday,
+                    &buf.tm_hour,
+                    &buf.tm_min,
+                    &buf.tm_sec,
+                    &buf.tm_wday,
+                    &buf.tm_yday,
+                    &buf.tm_isdst))
+               return NULL;
+       if (buf.tm_year >= 1900)
+               buf.tm_year -= 1900;
+       buf.tm_mon--;
+       return newintobject((long)mktime(&buf));
+}
+
 static struct methodlist time_methods[] = {
 #ifdef DO_MILLI
        {"millisleep",  time_millisleep},
@@ -245,6 +329,9 @@ static struct methodlist time_methods[] = {
 #endif
        {"sleep",       time_sleep},
        {"time",        time_time},
+       {"gmtime",      time_gmtime},
+       {"localtime",   time_localtime},
+       {"mktime",      time_mktime},
        {NULL,          NULL}           /* sentinel */
 };
 
@@ -252,7 +339,40 @@ static struct methodlist time_methods[] = {
 void
 inittime()
 {
-       initmodule("time", time_methods);
+       object *m, *d;
+       m = initmodule("time", time_methods);
+       d = getmoduledict(m);
+#ifdef SYSV
+       tzset();
+       dictinsert(d, "timezone", newintobject((long)_timezone));
+       dictinsert(d, "altzone", newintobject((long)_altzone));
+       dictinsert(d, "daylight", newintobject((long)_daylight));
+       dictinsert(d, "tzname", mkvalue("(zz)", _tzname[0], _tzname[1]));
+#else /* !SYSV */
+       {
+#define YEAR ((time_t)((365 * 24 + 6) * 3600))
+               time_t t;
+               struct tm *p;
+               long winterzone, summerzone;
+               char wintername[10], summername[10];
+               t = (time((time_t *)0) / YEAR) * YEAR;
+               p = localtime(&t);
+               winterzone = -p->tm_gmtoff;
+               strncpy(wintername, p->tm_zone ? p->tm_zone : "   ", 9);
+               wintername[9] = '\0';
+               t += YEAR/2;
+               p = localtime(&t);
+               summerzone = -p->tm_gmtoff;
+               strncpy(summername, p->tm_zone ? p->tm_zone : "   ", 9);
+               summername[9] = '\0';
+               dictinsert(d, "timezone", newintobject(winterzone));
+               dictinsert(d, "altzone", newintobject(summerzone));
+               dictinsert(d, "daylight",
+                          newintobject((long)(winterzone != summerzone)));
+               dictinsert(d, "tzname",
+                          mkvalue("(zz)", wintername, summername));
+       }
+#endif /* !SYSV */
 }
 
 
@@ -274,6 +394,7 @@ sleep(secs)
 }
 #endif
 
+static void
 floatsleep(secs)
        double secs;
 {
@@ -286,7 +407,7 @@ floatsleep(secs)
        }
 }
 
-long
+static long
 millitimer()
 {
        return MacTicks * 50 / 3; /* MacTicks * 1000 / 60 */
@@ -299,7 +420,7 @@ millitimer()
 
 #ifdef BSD_TIME
 
-long
+static long
 millitimer()
 {
        struct timeval t;
@@ -309,6 +430,7 @@ millitimer()
        return t.tv_sec*1000 + t.tv_usec/1000;
 }
 
+static void
 floatsleep(secs)
        double secs;
 {
@@ -325,6 +447,7 @@ floatsleep(secs)
 
 #else /* !BSD_TIME */
 
+static void
 floatsleep(secs)
        double secs;
 {
@@ -342,13 +465,14 @@ floatsleep(secs)
 #define CLOCKS_PER_SEC 55      /* 54.945 msec per tick (18.2 HZ clock) */
 #endif
 
+static void
 floatsleep(secs)
        double secs;
 {
        delay(long(secs/1000.0));
 }
 
-long
+static long
 millitimer()
 {
        clock_t ticks;
index 1275ebab72c4d9a07d702ac9c5e76b300e552b5c..c9b7ce385b65dced4b61707e1a3b551dc6aff4c8 100644 (file)
@@ -24,6 +24,13 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 /* Access object implementation */
 
+/* XXX TO DO LIST
+   - need a "super user" mechanism for debugger etc.
+   - __init__ and __del__ (and all other similar methods)
+     should be usable even when private, not ignored
+   - "from foo import bar" should check access of bar
+*/
+
 #include "allobjects.h"
 
 #include "structmember.h"
index faf7e861414f67e44f8cbd683ea36689ba24cf3f..15263d3f95959645a1cf50d4f5815ccdc763a8c5 100644 (file)
@@ -328,7 +328,7 @@ file_read(f, args)
    < 0: strip trailing '\n', raise EOFError if EOF reached immediately
 */
 
-object *
+static object *
 getline(f, n)
        fileobject *f;
        int n;
index 6a95ebf82f986f4ca76785c49ebc458d9cfca180..25ae6d89916b5a51f06c620919863775e00a2a42 100644 (file)
@@ -70,7 +70,7 @@ newfloatobject(fval)
        return (object *) op;
 }
 
-void
+static void
 float_dealloc(op)
        object *op;
 {
@@ -329,7 +329,7 @@ float_nonzero(v)
        return v->ob_fval != 0.0;
 }
 
-int
+static int
 float_coerce(pv, pw)
        object **pv;
        object **pw;
index 9a1fe2329a0690e94e41217c3d4e5a91a029831f..b51e3d83dfa00178807d298caae9d8c2c6071c62 100644 (file)
@@ -207,7 +207,7 @@ list_print(op, fp, flags)
        return 0;
 }
 
-object *
+static object *
 list_repr(v)
        listobject *v;
 {
@@ -291,6 +291,18 @@ list_slice(a, ilow, ihigh)
        return (object *)np;
 }
 
+object *
+getlistslice(a, ilow, ihigh)
+       object *a;
+       int ilow, ihigh;
+{
+       if (!is_listobject(a)) {
+               err_badcall();
+               return NULL;
+       }
+       return list_slice((listobject *)a, ilow, ihigh);
+}
+
 static object *
 list_concat(a, bb)
        listobject *a;
@@ -422,6 +434,19 @@ list_ass_slice(a, ilow, ihigh, v)
 #undef b
 }
 
+int
+setlistslice(a, ilow, ihigh, v)
+       object *a;
+       int ilow, ihigh;
+       object *v;
+{
+       if (!is_listobject(a)) {
+               err_badcall();
+               return NULL;
+       }
+       return list_ass_slice((listobject *)a, ilow, ihigh, v);
+}
+
 static int
 list_ass_item(a, i, v)
        listobject *a;
index fb82a1fc88bfc318e5375490fd3554ff57a82db2..8c0b6c1c80b678a3402b0585756e0e3721f821bc 100644 (file)
@@ -261,7 +261,7 @@ divrem1(a, n, prem)
    If base is 8 or 16, add the proper prefix '0' or '0x'.
    External linkage: used in bltinmodule.c by hex() and oct(). */
 
-object *
+static object *
 long_format(aa, base)
        object *aa;
        int base;
@@ -1275,7 +1275,7 @@ long_or(a, b)
        return long_bitwise(a, '|', b);
 }
 
-int
+static int
 long_coerce(pv, pw)
        object **pv;
        object **pw;
index 33fe48502f6fa7763e2df097b8657c6a36947da5..cba8c920db19ed6a44e75b5292e0a9dc96dba789 100644 (file)
@@ -60,7 +60,7 @@ newstringobject(str)
        return (object *) op;
 }
 
-void
+static void
 string_dealloc(op)
        object *op;
 {
@@ -676,6 +676,8 @@ formatstring(format, args)
                                           "unsupported format character");
                                goto error;
                        }
+                       /* XXX There's a bug somewhere here so that
+                          XXX '%4d'%-1 yields '-  1' ... */
                        if (sign) {
                                if (*buf == '-' || *buf == '+') {
                                        sign = *buf++;
index 9eb332b3011ce718fe66335bd1706d6dfbd86a8c..faf46d52cc6b54ccbceee7ef5357339efe2b669e 100644 (file)
@@ -136,7 +136,7 @@ tupleprint(op, fp, flags)
        return 0;
 }
 
-object *
+static object *
 tuplerepr(v)
        tupleobject *v;
 {
index c2c29662b6bbf06c9e5ad2e8c47167af324df850..dc65ffb117c32898b7bed16ab46e68dda208e311 100644 (file)
@@ -28,7 +28,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 #include "node.h"
 #include "graminit.h"
-#include "errcode.h"
 #include "sysmodule.h"
 #include "bltinmodule.h"
 #include "import.h"
index 8698e8591cd9a92f2685440b75c06346360d6f79..1c12d9cbc23d6b5c45acdc1f949c5872679c65d0 100644 (file)
@@ -1964,6 +1964,8 @@ not(v)
        INCREF(w);
        return w;
 }
+
+
 /* External interface to call any callable object. The arg may be NULL. */
 
 object *
index 5dcac867c75ec49df0f1d91c91c8e4933c0dc92b..87fcfabe6873c675e66f6694eeadd3c19e922ddd 100644 (file)
@@ -28,17 +28,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "cgensupport.h"
 
 
-/* Functions to construct return values */
-
-object *
-mknewcharobject(c)
-       int c;
-{
-       char ch[1];
-       ch[0] = c;
-       return newsizedstringobject(ch, 1);
-}
-
 /* Functions to extract arguments.
    These needs to know the total number of arguments supplied,
    since the argument list is a tuple only of there is more than
index 530ddf3f09a504189242dcdf49e6143605454ee2..3b78d0c000b5d433996b44fc7cfeb53b906cdf04 100644 (file)
@@ -393,26 +393,35 @@ static state states_22[3] = {
 static arc arcs_23_0[1] = {
        {51, 1},
 };
-static arc arcs_23_1[1] = {
-       {13, 2},
+static arc arcs_23_1[2] = {
+       {22, 2},
+       {13, 3},
 };
-static arc arcs_23_2[2] = {
-       {21, 1},
-       {15, 3},
+static arc arcs_23_2[1] = {
+       {15, 4},
+};
+static arc arcs_23_3[2] = {
+       {21, 5},
+       {15, 4},
 };
-static arc arcs_23_3[1] = {
-       {52, 4},
+static arc arcs_23_4[1] = {
+       {52, 6},
 };
-static arc arcs_23_4[2] = {
-       {21, 3},
-       {0, 4},
+static arc arcs_23_5[1] = {
+       {13, 3},
+};
+static arc arcs_23_6[2] = {
+       {21, 4},
+       {0, 6},
 };
-static state states_23[5] = {
+static state states_23[7] = {
        {1, arcs_23_0},
-       {1, arcs_23_1},
-       {2, arcs_23_2},
-       {1, arcs_23_3},
-       {2, arcs_23_4},
+       {2, arcs_23_1},
+       {1, arcs_23_2},
+       {2, arcs_23_3},
+       {1, arcs_23_4},
+       {1, arcs_23_5},
+       {2, arcs_23_6},
 };
 static arc arcs_24_0[1] = {
        {13, 1},
@@ -1057,7 +1066,7 @@ static dfa dfas[51] = {
         "\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000"},
        {278, "global_stmt", 0, 3, states_22,
         "\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000"},
-       {279, "access_stmt", 0, 5, states_23,
+       {279, "access_stmt", 0, 7, states_23,
         "\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"},
        {280, "accesstype", 0, 2, states_24,
         "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"},