mirror of
				https://github.com/python/cpython.git
				synced 2025-11-01 06:01:29 +00:00 
			
		
		
		
	* Added gmtime/localtime/mktime and SYSV timezone globals to timemodule.c.
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().
			
			
This commit is contained in:
		
							parent
							
								
									6a0e2282c3
								
							
						
					
					
						commit
						234f942aef
					
				
					 33 changed files with 299 additions and 124 deletions
				
			
		|  | @ -29,8 +29,7 @@ typedef char *string; | ||||||
| #define mknewlongobject(x) newintobject(x) | #define mknewlongobject(x) newintobject(x) | ||||||
| #define mknewshortobject(x) newintobject((long)x) | #define mknewshortobject(x) newintobject((long)x) | ||||||
| #define mknewfloatobject(x) newfloatobject(x) | #define mknewfloatobject(x) newfloatobject(x) | ||||||
| 
 | #define mknewcharobject(c) mkvalue("c", c) | ||||||
| extern object *mknewcharobject PROTO((int c)); |  | ||||||
| 
 | 
 | ||||||
| extern int getiobjectarg PROTO((object *args, int nargs, int i, object **p_a)); | 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)); | extern int getilongarg PROTO((object *args, int nargs, int i, long *p_a)); | ||||||
|  |  | ||||||
|  | @ -53,6 +53,8 @@ extern object *getlistitem PROTO((object *, int)); | ||||||
| extern int setlistitem PROTO((object *, int, object *)); | extern int setlistitem PROTO((object *, int, object *)); | ||||||
| extern int inslistitem PROTO((object *, int, object *)); | extern int inslistitem PROTO((object *, int, object *)); | ||||||
| extern int addlistitem PROTO((object *, 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 *)); | extern int sortlist PROTO((object *)); | ||||||
| 
 | 
 | ||||||
| /* Macro, trading safety for speed */ | /* Macro, trading safety for speed */ | ||||||
|  |  | ||||||
|  | @ -40,29 +40,8 @@ extern int vgetargs PROTO((object *, char *, va_list)); | ||||||
| extern object *mkvalue PROTO((char *, ...)); | extern object *mkvalue PROTO((char *, ...)); | ||||||
| extern object *vmkvalue PROTO((char *, va_list)); | extern object *vmkvalue PROTO((char *, va_list)); | ||||||
| 
 | 
 | ||||||
|  | /* The following are obsolete -- use getargs directly! */ | ||||||
| #define getnoarg(v) getargs(v, "") | #define getnoarg(v) getargs(v, "") | ||||||
| #define getintarg(v, a) getargs(v, "i", a) | #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 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 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) |  | ||||||
|  |  | ||||||
|  | @ -28,6 +28,7 @@ void initall PROTO((void)); | ||||||
| 
 | 
 | ||||||
| int run PROTO((FILE *, char *)); | int run PROTO((FILE *, char *)); | ||||||
| 
 | 
 | ||||||
|  | int run_command PROTO((char *)); | ||||||
| int run_script PROTO((FILE *, char *)); | int run_script PROTO((FILE *, char *)); | ||||||
| int run_tty_1 PROTO((FILE *, char *)); | int run_tty_1 PROTO((FILE *, char *)); | ||||||
| int run_tty_loop PROTO((FILE *, char *)); | int run_tty_loop PROTO((FILE *, char *)); | ||||||
|  |  | ||||||
|  | @ -568,7 +568,7 @@ al_openport (self, args) | ||||||
| 	} | 	} | ||||||
| 	size = gettuplesize(args); | 	size = gettuplesize(args); | ||||||
| 	if (size == 2) { | 	if (size == 2) { | ||||||
| 		if (!getstrstrarg (args, &name, &dir)) | 		if (!getargs (args, "(ss)", &name, &dir)) | ||||||
| 			return NULL; | 			return NULL; | ||||||
| 	} | 	} | ||||||
| 	else if (size == 3) { | 	else if (size == 3) { | ||||||
|  |  | ||||||
|  | @ -209,7 +209,7 @@ d_setitem(ap, i, v) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Description of types */ | /* Description of types */ | ||||||
| struct arraydescr descriptors[] = { | static struct arraydescr descriptors[] = { | ||||||
| 	{'c', sizeof(char), c_getitem, c_setitem}, | 	{'c', sizeof(char), c_getitem, c_setitem}, | ||||||
| 	{'b', sizeof(char), b_getitem, b_setitem}, | 	{'b', sizeof(char), b_getitem, b_setitem}, | ||||||
| 	{'h', sizeof(short), h_getitem, h_setitem}, | 	{'h', sizeof(short), h_getitem, h_setitem}, | ||||||
|  |  | ||||||
|  | @ -725,12 +725,12 @@ CD_addcallback(self, args) | ||||||
| 	object *args; | 	object *args; | ||||||
| { | { | ||||||
| 	int type; | 	int type; | ||||||
| 	object *funcobject, *funcargobject; | 	object *func, *funcarg; | ||||||
| 
 | 
 | ||||||
| 	CheckParser(self); | 	CheckParser(self); | ||||||
| 
 | 
 | ||||||
| 	/* XXX - more work here */ | 	/* XXX - more work here */ | ||||||
| 	if (!getargs(args, "(iOO)", &type, &funcobject, &funcargobject)) | 	if (!getargs(args, "(iOO)", &type, &func, &funcarg)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 
 | 
 | ||||||
| 	if (type < 0 || type >= NCALLBACKS) { | 	if (type < 0 || type >= NCALLBACKS) { | ||||||
|  | @ -744,11 +744,11 @@ CD_addcallback(self, args) | ||||||
| 	CDsetcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback, (void *) self); | 	CDsetcallback(self->ob_cdparser, (CDDATATYPES) type, CD_callback, (void *) self); | ||||||
| #endif | #endif | ||||||
| 	XDECREF(self->ob_cdcallbacks[type].ob_cdcallback); | 	XDECREF(self->ob_cdcallbacks[type].ob_cdcallback); | ||||||
| 	INCREF(funcobject); | 	INCREF(func); | ||||||
| 	self->ob_cdcallbacks[type].ob_cdcallback = funcobject; | 	self->ob_cdcallbacks[type].ob_cdcallback = func; | ||||||
| 	XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg); | 	XDECREF(self->ob_cdcallbacks[type].ob_cdcallbackarg); | ||||||
| 	INCREF(funcargobject); | 	INCREF(funcarg); | ||||||
| 	self->ob_cdcallbacks[type].ob_cdcallbackarg = funcargobject; | 	self->ob_cdcallbacks[type].ob_cdcallbackarg = funcarg; | ||||||
| 
 | 
 | ||||||
| 	INCREF(None); | 	INCREF(None); | ||||||
| 	return None; | 	return None; | ||||||
|  |  | ||||||
|  | @ -28,17 +28,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
| #include "cgensupport.h" | #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.
 | /* Functions to extract arguments.
 | ||||||
|    These needs to know the total number of arguments supplied, |    These needs to know the total number of arguments supplied, | ||||||
|    since the argument list is a tuple only of there is more than |    since the argument list is a tuple only of there is more than | ||||||
|  |  | ||||||
|  | @ -29,8 +29,7 @@ typedef char *string; | ||||||
| #define mknewlongobject(x) newintobject(x) | #define mknewlongobject(x) newintobject(x) | ||||||
| #define mknewshortobject(x) newintobject((long)x) | #define mknewshortobject(x) newintobject((long)x) | ||||||
| #define mknewfloatobject(x) newfloatobject(x) | #define mknewfloatobject(x) newfloatobject(x) | ||||||
| 
 | #define mknewcharobject(c) mkvalue("c", c) | ||||||
| extern object *mknewcharobject PROTO((int c)); |  | ||||||
| 
 | 
 | ||||||
| extern int getiobjectarg PROTO((object *args, int nargs, int i, object **p_a)); | 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)); | extern int getilongarg PROTO((object *args, int nargs, int i, long *p_a)); | ||||||
|  |  | ||||||
|  | @ -528,7 +528,7 @@ call_forms_INiINstr (func, obj, args) | ||||||
| 	char *b; | 	char *b; | ||||||
| 	int a; | 	int a; | ||||||
| 	 | 	 | ||||||
| 	if (!getintstrarg(args, &a, &b)) return NULL; | 	if (!getargs(args, "(is)", &a, &b)) return NULL; | ||||||
| 	 | 	 | ||||||
| 	(*func) (obj, a, b); | 	(*func) (obj, a, b); | ||||||
| 	 | 	 | ||||||
|  | @ -546,7 +546,7 @@ call_forms_INiINi (func, obj, args) | ||||||
| { | { | ||||||
| 	int par1, par2; | 	int par1, par2; | ||||||
| 	 | 	 | ||||||
| 	if (!getintintarg(args, &par1, &par2)) return NULL; | 	if (!getargs(args, "(ii)", &par1, &par2)) return NULL; | ||||||
| 	 | 	 | ||||||
| 	(*func) (obj, par1, par2); | 	(*func) (obj, par1, par2); | ||||||
| 	 | 	 | ||||||
|  | @ -1048,7 +1048,7 @@ get_default(g, args) | ||||||
| 
 | 
 | ||||||
| 	c = fl_get_default (g->ob_generic); | 	c = fl_get_default (g->ob_generic); | ||||||
| 
 | 
 | ||||||
| 	return ((object *) mknewcharobject (c)); /* in cgensupport.c */ | 	return mkvalue("c", c); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static struct methodlist default_methods[] = { | static struct methodlist default_methods[] = { | ||||||
|  | @ -1479,7 +1479,7 @@ form_call_INiINi(func, f, args) | ||||||
| { | { | ||||||
| 	int a, b; | 	int a, b; | ||||||
| 
 | 
 | ||||||
| 	if (!getintintarg(args, &a, &b)) return NULL; | 	if (!getargs(args, "(ii)", &a, &b)) return NULL; | ||||||
| 
 | 
 | ||||||
| 	(*func)(f, a, b); | 	(*func)(f, a, b); | ||||||
| 
 | 
 | ||||||
|  | @ -2144,7 +2144,7 @@ forms_set_graphics_mode(dummy, args) | ||||||
| { | { | ||||||
| 	int rgbmode, doublebuf; | 	int rgbmode, doublebuf; | ||||||
| 
 | 
 | ||||||
| 	if (!getintintarg(args, &rgbmode, &doublebuf)) | 	if (!getargs(args, "(ii)", &rgbmode, &doublebuf)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	fl_set_graphics_mode(rgbmode,doublebuf); | 	fl_set_graphics_mode(rgbmode,doublebuf); | ||||||
| 	INCREF(None); | 	INCREF(None); | ||||||
|  | @ -2441,7 +2441,7 @@ forms_show_input(f, args) | ||||||
| 	char *str; | 	char *str; | ||||||
| 	char *a, *b; | 	char *a, *b; | ||||||
| 
 | 
 | ||||||
| 	if (!getstrstrarg(args, &a, &b)) return NULL; | 	if (!getargs(args, "(ss)", &a, &b)) return NULL; | ||||||
| 
 | 
 | ||||||
| 	BGN_SAVE | 	BGN_SAVE | ||||||
| 	str = fl_show_input(a, b); | 	str = fl_show_input(a, b); | ||||||
|  |  | ||||||
|  | @ -68,7 +68,7 @@ fh_scalefont(self, args) | ||||||
| 	object *args; | 	object *args; | ||||||
| { | { | ||||||
| 	double size; | 	double size; | ||||||
| 	if (!getdoublearg(args, &size)) | 	if (!getargs(args, "d", &size)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	return newfhobject(fmscalefont(self->fh_fh, size)); | 	return newfhobject(fmscalefont(self->fh_fh, size)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -162,9 +162,9 @@ imgfile_read(self, args) | ||||||
|     return rv; |     return rv; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| IMAGE *glob_image; | static IMAGE *glob_image; | ||||||
| long *glob_datap; | static long *glob_datap; | ||||||
| int glob_width, glob_z; | static int glob_width, glob_z; | ||||||
| 
 | 
 | ||||||
| static | static | ||||||
| xs_get(buf, y) | xs_get(buf, y) | ||||||
|  |  | ||||||
|  | @ -33,6 +33,9 @@ extern int errno; | ||||||
| 
 | 
 | ||||||
| #include "modsupport.h" | #include "modsupport.h" | ||||||
| 
 | 
 | ||||||
|  | #define getdoublearg(v, a) getargs(v, "d", a) | ||||||
|  | #define get2doublearg(v, a, b) getargs(v, "(dd)", a, b) | ||||||
|  | 
 | ||||||
| #include <math.h> | #include <math.h> | ||||||
| 
 | 
 | ||||||
| #ifdef i860 | #ifdef i860 | ||||||
|  |  | ||||||
|  | @ -87,7 +87,7 @@ nis_match (self, args) | ||||||
| 	int err; | 	int err; | ||||||
| 	object *res; | 	object *res; | ||||||
| 
 | 
 | ||||||
| 	if (!getstrstrarg(args, &key, &map)) | 	if (!getargs(args, "(ss)", &key, &map)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	if ((err = yp_get_default_domain(&domain)) != 0) | 	if ((err = yp_get_default_domain(&domain)) != 0) | ||||||
| 		return nis_error(err); | 		return nis_error(err); | ||||||
|  |  | ||||||
|  | @ -166,7 +166,7 @@ posix_2str(args, func) | ||||||
| { | { | ||||||
| 	char *path1, *path2; | 	char *path1, *path2; | ||||||
| 	int res; | 	int res; | ||||||
| 	if (!getstrstrarg(args, &path1, &path2)) | 	if (!getargs(args, "(ss)", &path1, &path2)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	BGN_SAVE | 	BGN_SAVE | ||||||
| 	res = (*func)(path1, path2); | 	res = (*func)(path1, path2); | ||||||
|  | @ -185,7 +185,7 @@ posix_strint(args, func) | ||||||
| 	char *path; | 	char *path; | ||||||
| 	int i; | 	int i; | ||||||
| 	int res; | 	int res; | ||||||
| 	if (!getstrintarg(args, &path, &i)) | 	if (!getargs(args, "(si)", &path, &i)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	BGN_SAVE | 	BGN_SAVE | ||||||
| 	res = (*func)(path, i); | 	res = (*func)(path, i); | ||||||
|  | @ -691,7 +691,7 @@ posix_kill(self, args) | ||||||
| 	object *args; | 	object *args; | ||||||
| { | { | ||||||
| 	int pid, sig; | 	int pid, sig; | ||||||
| 	if (!getintintarg(args, &pid, &sig)) | 	if (!getargs(args, "(ii)", &pid, &sig)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	if (kill(pid, sig) == -1) | 	if (kill(pid, sig) == -1) | ||||||
| 		return posix_error(); | 		return posix_error(); | ||||||
|  | @ -891,7 +891,7 @@ posix_tcsetpgrp(self, args) | ||||||
| 
 | 
 | ||||||
| /* Functions acting on file descriptors */ | /* Functions acting on file descriptors */ | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| posix_open(self, args) | posix_open(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  | @ -913,7 +913,7 @@ posix_open(self, args) | ||||||
| 	return newintobject((long)fd); | 	return newintobject((long)fd); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| posix_close(self, args) | posix_close(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  | @ -930,7 +930,7 @@ posix_close(self, args) | ||||||
| 	return None; | 	return None; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| posix_dup(self, args) | posix_dup(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  | @ -946,7 +946,7 @@ posix_dup(self, args) | ||||||
| 	return newintobject((long)fd); | 	return newintobject((long)fd); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| posix_dup2(self, args) | posix_dup2(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  | @ -963,7 +963,7 @@ posix_dup2(self, args) | ||||||
| 	return None; | 	return None; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| posix_lseek(self, args) | posix_lseek(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  | @ -988,7 +988,7 @@ posix_lseek(self, args) | ||||||
| 	return newintobject(res); | 	return newintobject(res); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| posix_read(self, args) | posix_read(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  | @ -1011,7 +1011,7 @@ posix_read(self, args) | ||||||
| 	return buffer; | 	return buffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| posix_write(self, args) | posix_write(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  | @ -1028,7 +1028,7 @@ posix_write(self, args) | ||||||
| 	return newintobject((long)size); | 	return newintobject((long)size); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| posix_fstat(self, args) | posix_fstat(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  | @ -1079,7 +1079,7 @@ posix_fdopen(self, args) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #ifndef MSDOS | #ifndef MSDOS | ||||||
| object * | static object * | ||||||
| posix_pipe(self, args) | posix_pipe(self, args) | ||||||
| 	object *self; | 	object *self; | ||||||
| 	object *args; | 	object *args; | ||||||
|  |  | ||||||
|  | @ -763,8 +763,10 @@ static typeobject Rotortype = { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| object *rotor_rotor(self, args) | static object * | ||||||
| object *args; | rotor_rotor(self, args) | ||||||
|  | 	object *self; | ||||||
|  | 	object *args; | ||||||
| { | { | ||||||
| 	char *string; | 	char *string; | ||||||
| 	rotorobject *r; | 	rotorobject *r; | ||||||
|  |  | ||||||
|  | @ -57,4 +57,4 @@ initsgi() | ||||||
| 	initmodule("sgi", sgi_methods); | 	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 */ | ||||||
|  |  | ||||||
|  | @ -744,9 +744,9 @@ sock_send(s, args) | ||||||
| 	char *buf; | 	char *buf; | ||||||
| 	int len, n, flags; | 	int len, n, flags; | ||||||
| 	flags = 0; | 	flags = 0; | ||||||
| 	if (!getargs(args, "(s#)", &buf, &len)) { | 	if (!getargs(args, "s#", &buf, &len)) { | ||||||
| 		err_clear(); | 		err_clear(); | ||||||
| 		if (!getargs(args, "s#", &buf, &len, &flags)) | 		if (!getargs(args, "(s#i)", &buf, &len, &flags)) | ||||||
| 			return NULL; | 			return NULL; | ||||||
| 	} | 	} | ||||||
| 	BGN_SAVE | 	BGN_SAVE | ||||||
|  |  | ||||||
|  | @ -91,6 +91,15 @@ static type_lock StdwinLock; /* Lock held when interpreter not locked */ | ||||||
| 
 | 
 | ||||||
| #endif | #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 */ | static object *StdwinError; /* Exception stdwin.error */ | ||||||
| 
 | 
 | ||||||
| /* Window and menu object types declared here because of forward references */ | /* Window and menu object types declared here because of forward references */ | ||||||
|  | @ -1236,7 +1245,7 @@ menu_setitem(self, args) | ||||||
| { | { | ||||||
| 	int index; | 	int index; | ||||||
| 	char *text; | 	char *text; | ||||||
| 	if (!getintstrarg(args, &index, &text)) | 	if (!getargs(args, "(is)", &index, &text)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	wmenusetitem(self->m_menu, index, text); | 	wmenusetitem(self->m_menu, index, text); | ||||||
| 	INCREF(None); | 	INCREF(None); | ||||||
|  | @ -1250,7 +1259,7 @@ menu_enable(self, args) | ||||||
| { | { | ||||||
| 	int index; | 	int index; | ||||||
| 	int flag; | 	int flag; | ||||||
| 	if (!getintintarg(args, &index, &flag)) | 	if (!getargs(args, "(ii)", &index, &flag)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	wmenuenable(self->m_menu, index, flag); | 	wmenuenable(self->m_menu, index, flag); | ||||||
| 	INCREF(None); | 	INCREF(None); | ||||||
|  | @ -1264,7 +1273,7 @@ menu_check(self, args) | ||||||
| { | { | ||||||
| 	int index; | 	int index; | ||||||
| 	int flag; | 	int flag; | ||||||
| 	if (!getintintarg(args, &index, &flag)) | 	if (!getargs(args, "(ii)", &index, &flag)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	wmenucheck(self->m_menu, index, flag); | 	wmenucheck(self->m_menu, index, flag); | ||||||
| 	INCREF(None); | 	INCREF(None); | ||||||
|  | @ -1705,7 +1714,7 @@ window_settitle(wp, args) | ||||||
| 	object *args; | 	object *args; | ||||||
| { | { | ||||||
| 	object *title; | 	object *title; | ||||||
| 	if (!getStrarg(args, &title)) | 	if (!getargs(args, "S", &title)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	DECREF(wp->w_title); | 	DECREF(wp->w_title); | ||||||
| 	INCREF(title); | 	INCREF(title); | ||||||
|  | @ -1930,7 +1939,7 @@ stdwin_open(sw, args) | ||||||
| 	int tag; | 	int tag; | ||||||
| 	object *title; | 	object *title; | ||||||
| 	windowobject *wp; | 	windowobject *wp; | ||||||
| 	if (!getStrarg(args, &title)) | 	if (!getargs(args, "S", &title)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	for (tag = 0; tag < MAXNWIN; tag++) { | 	for (tag = 0; tag < MAXNWIN; tag++) { | ||||||
| 		if (windowlist[tag] == NULL) | 		if (windowlist[tag] == NULL) | ||||||
|  | @ -2180,7 +2189,7 @@ stdwin_askfile(self, args) | ||||||
| 	char *prompt, *dflt; | 	char *prompt, *dflt; | ||||||
| 	int new, ret; | 	int new, ret; | ||||||
| 	char buf[256]; | 	char buf[256]; | ||||||
| 	if (!getstrstrintarg(args, &prompt, &dflt, &new)) | 	if (!getargs(args, "(ssi)", &prompt, &dflt, &new)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	strncpy(buf, dflt, sizeof buf); | 	strncpy(buf, dflt, sizeof buf); | ||||||
| 	buf[sizeof buf - 1] = '\0'; | 	buf[sizeof buf - 1] = '\0'; | ||||||
|  | @ -2201,7 +2210,7 @@ stdwin_askync(self, args) | ||||||
| { | { | ||||||
| 	char *prompt; | 	char *prompt; | ||||||
| 	int new, ret; | 	int new, ret; | ||||||
| 	if (!getstrintarg(args, &prompt, &new)) | 	if (!getargs(args, "(si)", &prompt, &new)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	BGN_STDWIN | 	BGN_STDWIN | ||||||
| 	ret = waskync(prompt, new); | 	ret = waskync(prompt, new); | ||||||
|  | @ -2221,7 +2230,7 @@ stdwin_askstr(self, args) | ||||||
| 	char *prompt, *dflt; | 	char *prompt, *dflt; | ||||||
| 	int ret; | 	int ret; | ||||||
| 	char buf[256]; | 	char buf[256]; | ||||||
| 	if (!getstrstrarg(args, &prompt, &dflt)) | 	if (!getargs(args, "(ss)", &prompt, &dflt)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	strncpy(buf, dflt, sizeof buf); | 	strncpy(buf, dflt, sizeof buf); | ||||||
| 	buf[sizeof buf - 1] = '\0'; | 	buf[sizeof buf - 1] = '\0'; | ||||||
|  |  | ||||||
|  | @ -28,6 +28,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
| #include "modsupport.h" | #include "modsupport.h" | ||||||
| #include "structmember.h" | #include "structmember.h" | ||||||
| 
 | 
 | ||||||
|  | #include <stropts.h> | ||||||
| #include <sys/ioctl.h> | #include <sys/ioctl.h> | ||||||
| #include <sun/audioio.h> | #include <sun/audioio.h> | ||||||
| 
 | 
 | ||||||
|  | @ -255,6 +256,38 @@ sad_drain(self, args) | ||||||
|     return None; |     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[] = { | static struct methodlist sad_methods[] = { | ||||||
|         { "read",	sad_read }, |         { "read",	sad_read }, | ||||||
|         { "write",	sad_write }, |         { "write",	sad_write }, | ||||||
|  | @ -264,6 +297,8 @@ static struct methodlist sad_methods[] = { | ||||||
|         { "getinfo",	sad_getinfo }, |         { "getinfo",	sad_getinfo }, | ||||||
|         { "setinfo",	sad_setinfo }, |         { "setinfo",	sad_setinfo }, | ||||||
|         { "drain",	sad_drain }, |         { "drain",	sad_drain }, | ||||||
|  |         { "flush",	sad_flush }, | ||||||
|  |         { "close",	sad_close }, | ||||||
| 	{NULL,		NULL}		/* sentinel */ | 	{NULL,		NULL}		/* sentinel */ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -33,7 +33,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
| 
 | 
 | ||||||
| int threads_started = 0; | int threads_started = 0; | ||||||
| 
 | 
 | ||||||
| object *ThreadError; | static object *ThreadError; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* Lock objects */ | /* Lock objects */ | ||||||
|  |  | ||||||
|  | @ -78,6 +78,26 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
| #include <errno.h> | #include <errno.h> | ||||||
| #endif | #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 */ | /* Time methods */ | ||||||
| 
 | 
 | ||||||
| static object * | static object * | ||||||
|  | @ -199,7 +219,6 @@ time_millitimer(self, args) | ||||||
| 	object *args; | 	object *args; | ||||||
| { | { | ||||||
| 	long msecs; | 	long msecs; | ||||||
| 	extern long millitimer(); |  | ||||||
| 	if (!getnoarg(args)) | 	if (!getnoarg(args)) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	msecs = millitimer(); | 	msecs = millitimer(); | ||||||
|  | @ -225,7 +244,7 @@ time_times(self, args) | ||||||
| 		err_errno(IOError); | 		err_errno(IOError); | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	} | 	} | ||||||
| 	return mkvalue("dddd", | 	return mkvalue("(dddd)", | ||||||
| 		       (double)t.tms_utime / HZ, | 		       (double)t.tms_utime / HZ, | ||||||
| 		       (double)t.tms_stime / HZ, | 		       (double)t.tms_stime / HZ, | ||||||
| 		       (double)t.tms_cutime / HZ, | 		       (double)t.tms_cutime / HZ, | ||||||
|  | @ -235,6 +254,71 @@ time_times(self, args) | ||||||
| #endif | #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[] = { | static struct methodlist time_methods[] = { | ||||||
| #ifdef DO_MILLI | #ifdef DO_MILLI | ||||||
| 	{"millisleep",	time_millisleep}, | 	{"millisleep",	time_millisleep}, | ||||||
|  | @ -245,6 +329,9 @@ static struct methodlist time_methods[] = { | ||||||
| #endif | #endif | ||||||
| 	{"sleep",	time_sleep}, | 	{"sleep",	time_sleep}, | ||||||
| 	{"time",	time_time}, | 	{"time",	time_time}, | ||||||
|  | 	{"gmtime",	time_gmtime}, | ||||||
|  | 	{"localtime",	time_localtime}, | ||||||
|  | 	{"mktime",	time_mktime}, | ||||||
| 	{NULL,		NULL}		/* sentinel */ | 	{NULL,		NULL}		/* sentinel */ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -252,7 +339,40 @@ static struct methodlist time_methods[] = { | ||||||
| void | void | ||||||
| inittime() | 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 | #endif | ||||||
| 
 | 
 | ||||||
|  | static void | ||||||
| floatsleep(secs) | floatsleep(secs) | ||||||
| 	double secs; | 	double secs; | ||||||
| { | { | ||||||
|  | @ -286,7 +407,7 @@ floatsleep(secs) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| long | static long | ||||||
| millitimer() | millitimer() | ||||||
| { | { | ||||||
| 	return MacTicks * 50 / 3; /* MacTicks * 1000 / 60 */ | 	return MacTicks * 50 / 3; /* MacTicks * 1000 / 60 */ | ||||||
|  | @ -299,7 +420,7 @@ millitimer() | ||||||
| 
 | 
 | ||||||
| #ifdef BSD_TIME | #ifdef BSD_TIME | ||||||
| 
 | 
 | ||||||
| long | static long | ||||||
| millitimer() | millitimer() | ||||||
| { | { | ||||||
| 	struct timeval t; | 	struct timeval t; | ||||||
|  | @ -309,6 +430,7 @@ millitimer() | ||||||
| 	return t.tv_sec*1000 + t.tv_usec/1000; | 	return t.tv_sec*1000 + t.tv_usec/1000; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static void | ||||||
| floatsleep(secs) | floatsleep(secs) | ||||||
| 	double secs; | 	double secs; | ||||||
| { | { | ||||||
|  | @ -325,6 +447,7 @@ floatsleep(secs) | ||||||
| 
 | 
 | ||||||
| #else /* !BSD_TIME */ | #else /* !BSD_TIME */ | ||||||
| 
 | 
 | ||||||
|  | static void | ||||||
| floatsleep(secs) | floatsleep(secs) | ||||||
| 	double secs; | 	double secs; | ||||||
| { | { | ||||||
|  | @ -342,13 +465,14 @@ floatsleep(secs) | ||||||
| #define CLOCKS_PER_SEC 55	/* 54.945 msec per tick (18.2 HZ clock) */ | #define CLOCKS_PER_SEC 55	/* 54.945 msec per tick (18.2 HZ clock) */ | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | static void | ||||||
| floatsleep(secs) | floatsleep(secs) | ||||||
| 	double secs; | 	double secs; | ||||||
| { | { | ||||||
| 	delay(long(secs/1000.0)); | 	delay(long(secs/1000.0)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| long | static long | ||||||
| millitimer() | millitimer() | ||||||
| { | { | ||||||
| 	clock_t ticks; | 	clock_t ticks; | ||||||
|  |  | ||||||
|  | @ -24,6 +24,13 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
| 
 | 
 | ||||||
| /* Access object implementation */ | /* 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 "allobjects.h" | ||||||
| 
 | 
 | ||||||
| #include "structmember.h" | #include "structmember.h" | ||||||
|  |  | ||||||
|  | @ -328,7 +328,7 @@ file_read(f, args) | ||||||
|    < 0: strip trailing '\n', raise EOFError if EOF reached immediately |    < 0: strip trailing '\n', raise EOFError if EOF reached immediately | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| getline(f, n) | getline(f, n) | ||||||
| 	fileobject *f; | 	fileobject *f; | ||||||
| 	int n; | 	int n; | ||||||
|  |  | ||||||
|  | @ -70,7 +70,7 @@ newfloatobject(fval) | ||||||
| 	return (object *) op; | 	return (object *) op; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | static void | ||||||
| float_dealloc(op) | float_dealloc(op) | ||||||
| 	object *op; | 	object *op; | ||||||
| { | { | ||||||
|  | @ -329,7 +329,7 @@ float_nonzero(v) | ||||||
| 	return v->ob_fval != 0.0; | 	return v->ob_fval != 0.0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int | static int | ||||||
| float_coerce(pv, pw) | float_coerce(pv, pw) | ||||||
| 	object **pv; | 	object **pv; | ||||||
| 	object **pw; | 	object **pw; | ||||||
|  |  | ||||||
|  | @ -207,7 +207,7 @@ list_print(op, fp, flags) | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| list_repr(v) | list_repr(v) | ||||||
| 	listobject *v; | 	listobject *v; | ||||||
| { | { | ||||||
|  | @ -291,6 +291,18 @@ list_slice(a, ilow, ihigh) | ||||||
| 	return (object *)np; | 	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 * | static object * | ||||||
| list_concat(a, bb) | list_concat(a, bb) | ||||||
| 	listobject *a; | 	listobject *a; | ||||||
|  | @ -422,6 +434,19 @@ list_ass_slice(a, ilow, ihigh, v) | ||||||
| #undef b | #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 | static int | ||||||
| list_ass_item(a, i, v) | list_ass_item(a, i, v) | ||||||
| 	listobject *a; | 	listobject *a; | ||||||
|  |  | ||||||
|  | @ -261,7 +261,7 @@ divrem1(a, n, prem) | ||||||
|    If base is 8 or 16, add the proper prefix '0' or '0x'. |    If base is 8 or 16, add the proper prefix '0' or '0x'. | ||||||
|    External linkage: used in bltinmodule.c by hex() and oct(). */ |    External linkage: used in bltinmodule.c by hex() and oct(). */ | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| long_format(aa, base) | long_format(aa, base) | ||||||
| 	object *aa; | 	object *aa; | ||||||
| 	int base; | 	int base; | ||||||
|  | @ -1275,7 +1275,7 @@ long_or(a, b) | ||||||
| 	return long_bitwise(a, '|', b); | 	return long_bitwise(a, '|', b); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int | static int | ||||||
| long_coerce(pv, pw) | long_coerce(pv, pw) | ||||||
| 	object **pv; | 	object **pv; | ||||||
| 	object **pw; | 	object **pw; | ||||||
|  |  | ||||||
|  | @ -60,7 +60,7 @@ newstringobject(str) | ||||||
| 	return (object *) op; | 	return (object *) op; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | static void | ||||||
| string_dealloc(op) | string_dealloc(op) | ||||||
| 	object *op; | 	object *op; | ||||||
| { | { | ||||||
|  | @ -676,6 +676,8 @@ formatstring(format, args) | ||||||
| 					   "unsupported format character"); | 					   "unsupported format character"); | ||||||
| 				goto error; | 				goto error; | ||||||
| 			} | 			} | ||||||
|  | 			/* XXX There's a bug somewhere here so that
 | ||||||
|  | 			   XXX '%4d'%-1 yields '-  1' ... */ | ||||||
| 			if (sign) { | 			if (sign) { | ||||||
| 				if (*buf == '-' || *buf == '+') { | 				if (*buf == '-' || *buf == '+') { | ||||||
| 					sign = *buf++; | 					sign = *buf++; | ||||||
|  |  | ||||||
|  | @ -136,7 +136,7 @@ tupleprint(op, fp, flags) | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| object * | static object * | ||||||
| tuplerepr(v) | tuplerepr(v) | ||||||
| 	tupleobject *v; | 	tupleobject *v; | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -28,7 +28,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
| 
 | 
 | ||||||
| #include "node.h" | #include "node.h" | ||||||
| #include "graminit.h" | #include "graminit.h" | ||||||
| #include "errcode.h" |  | ||||||
| #include "sysmodule.h" | #include "sysmodule.h" | ||||||
| #include "bltinmodule.h" | #include "bltinmodule.h" | ||||||
| #include "import.h" | #include "import.h" | ||||||
|  |  | ||||||
|  | @ -1964,6 +1964,8 @@ not(v) | ||||||
| 	INCREF(w); | 	INCREF(w); | ||||||
| 	return w; | 	return w; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /* External interface to call any callable object. The arg may be NULL. */ | /* External interface to call any callable object. The arg may be NULL. */ | ||||||
| 
 | 
 | ||||||
| object * | object * | ||||||
|  |  | ||||||
|  | @ -28,17 +28,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
| #include "cgensupport.h" | #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.
 | /* Functions to extract arguments.
 | ||||||
|    These needs to know the total number of arguments supplied, |    These needs to know the total number of arguments supplied, | ||||||
|    since the argument list is a tuple only of there is more than |    since the argument list is a tuple only of there is more than | ||||||
|  |  | ||||||
|  | @ -393,26 +393,35 @@ static state states_22[3] = { | ||||||
| static arc arcs_23_0[1] = { | static arc arcs_23_0[1] = { | ||||||
| 	{51, 1}, | 	{51, 1}, | ||||||
| }; | }; | ||||||
| static arc arcs_23_1[1] = { | static arc arcs_23_1[2] = { | ||||||
| 	{13, 2}, | 	{22, 2}, | ||||||
|  | 	{13, 3}, | ||||||
| }; | }; | ||||||
| static arc arcs_23_2[2] = { | static arc arcs_23_2[1] = { | ||||||
| 	{21, 1}, | 	{15, 4}, | ||||||
| 	{15, 3}, |  | ||||||
| }; | }; | ||||||
| static arc arcs_23_3[1] = { | static arc arcs_23_3[2] = { | ||||||
| 	{52, 4}, | 	{21, 5}, | ||||||
|  | 	{15, 4}, | ||||||
| }; | }; | ||||||
| static arc arcs_23_4[2] = { | static arc arcs_23_4[1] = { | ||||||
| 	{21, 3}, | 	{52, 6}, | ||||||
| 	{0, 4}, |  | ||||||
| }; | }; | ||||||
| static state states_23[5] = { | static arc arcs_23_5[1] = { | ||||||
|  | 	{13, 3}, | ||||||
|  | }; | ||||||
|  | static arc arcs_23_6[2] = { | ||||||
|  | 	{21, 4}, | ||||||
|  | 	{0, 6}, | ||||||
|  | }; | ||||||
|  | static state states_23[7] = { | ||||||
| 	{1, arcs_23_0}, | 	{1, arcs_23_0}, | ||||||
| 	{1, arcs_23_1}, | 	{2, arcs_23_1}, | ||||||
| 	{2, arcs_23_2}, | 	{1, arcs_23_2}, | ||||||
| 	{1, arcs_23_3}, | 	{2, arcs_23_3}, | ||||||
| 	{2, arcs_23_4}, | 	{1, arcs_23_4}, | ||||||
|  | 	{1, arcs_23_5}, | ||||||
|  | 	{2, arcs_23_6}, | ||||||
| }; | }; | ||||||
| static arc arcs_24_0[1] = { | static arc arcs_24_0[1] = { | ||||||
| 	{13, 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"}, | 	 "\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000"}, | ||||||
| 	{278, "global_stmt", 0, 3, states_22, | 	{278, "global_stmt", 0, 3, states_22, | ||||||
| 	 "\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000"}, | 	 "\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"}, | 	 "\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"}, | ||||||
| 	{280, "accesstype", 0, 2, states_24, | 	{280, "accesstype", 0, 2, states_24, | ||||||
| 	 "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"}, | 	 "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"}, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum