[Python-checkins] python/dist/src/Modules timemodule.c,2.134,2.135
gvanrossum@users.sourceforge.net
gvanrossum@users.sourceforge.net
Fri, 14 Mar 2003 13:51:39 -0800
- Previous message: [Python-checkins] python/dist/src/Misc ACKS,1.228,1.229 NEWS,1.695,1.696
- Next message: [Python-checkins] python/dist/src configure,1.381,1.382 configure.in,1.392,1.393 pyconfig.h.in,1.72,1.73
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv14617/Modules
Modified Files:
timemodule.c
Log Message:
- New function time.tzset() provides access to the C library tzet()
function, if supported. (SF patch #675422, by Stuart Bishop.)
Index: timemodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/timemodule.c,v
retrieving revision 2.134
retrieving revision 2.135
diff -C2 -d -r2.134 -r2.135
*** timemodule.c 19 Jan 2003 04:54:58 -0000 2.134
--- timemodule.c 14 Mar 2003 21:51:36 -0000 2.135
***************
*** 555,637 ****
#endif /* HAVE_MKTIME */
! static PyMethodDef time_methods[] = {
! {"time", time_time, METH_VARARGS, time_doc},
! #ifdef HAVE_CLOCK
! {"clock", time_clock, METH_VARARGS, clock_doc},
! #endif
! {"sleep", time_sleep, METH_VARARGS, sleep_doc},
! {"gmtime", time_gmtime, METH_VARARGS, gmtime_doc},
! {"localtime", time_localtime, METH_VARARGS, localtime_doc},
! {"asctime", time_asctime, METH_VARARGS, asctime_doc},
! {"ctime", time_ctime, METH_VARARGS, ctime_doc},
! #ifdef HAVE_MKTIME
! {"mktime", time_mktime, METH_VARARGS, mktime_doc},
! #endif
! #ifdef HAVE_STRFTIME
! {"strftime", time_strftime, METH_VARARGS, strftime_doc},
! #endif
! {"strptime", time_strptime, METH_VARARGS, strptime_doc},
! {NULL, NULL} /* sentinel */
! };
! PyDoc_STRVAR(module_doc,
! "This module provides various functions to manipulate time values.\n\
! \n\
! There are two standard representations of time. One is the number\n\
! of seconds since the Epoch, in UTC (a.k.a. GMT). It may be an integer\n\
! or a floating point number (to represent fractions of seconds).\n\
! The Epoch is system-defined; on Unix, it is generally January 1st, 1970.\n\
! The actual value can be retrieved by calling gmtime(0).\n\
! \n\
! The other representation is a tuple of 9 integers giving local time.\n\
! The tuple items are:\n\
! year (four digits, e.g. 1998)\n\
! month (1-12)\n\
! day (1-31)\n\
! hours (0-23)\n\
! minutes (0-59)\n\
! seconds (0-59)\n\
! weekday (0-6, Monday is 0)\n\
! Julian day (day in the year, 1-366)\n\
! DST (Daylight Savings Time) flag (-1, 0 or 1)\n\
! If the DST flag is 0, the time is given in the regular time zone;\n\
! if it is 1, the time is given in the DST time zone;\n\
! if it is -1, mktime() should guess based on the date and time.\n\
! \n\
! Variables:\n\
! \n\
! timezone -- difference in seconds between UTC and local standard time\n\
! altzone -- difference in seconds between UTC and local DST time\n\
! daylight -- whether local time should reflect DST\n\
! tzname -- tuple of (standard time zone name, DST time zone name)\n\
! \n\
! Functions:\n\
\n\
! time() -- return current time in seconds since the Epoch as a float\n\
! clock() -- return CPU time since process start as a float\n\
! sleep() -- delay for a number of seconds given as a float\n\
! gmtime() -- convert seconds since Epoch to UTC tuple\n\
! localtime() -- convert seconds since Epoch to local time tuple\n\
! asctime() -- convert time tuple to string\n\
! ctime() -- convert time in seconds to string\n\
! mktime() -- convert local time tuple to seconds since Epoch\n\
! strftime() -- convert time tuple to string according to format specification\n\
! strptime() -- parse string to time tuple according to format specification");
! PyMODINIT_FUNC
! inittime(void)
! {
! PyObject *m;
! char *p;
! m = Py_InitModule3("time", time_methods, module_doc);
! /* Accept 2-digit dates unless PYTHONY2K is set and non-empty */
! p = Py_GETENV("PYTHONY2K");
! PyModule_AddIntConstant(m, "accept2dyear", (long) (!p || !*p));
! /* Squirrel away the module's dictionary for the y2k check */
! moddict = PyModule_GetDict(m);
! Py_INCREF(moddict);
#if defined(HAVE_TZNAME) && !defined(__GLIBC__) && !defined(__CYGWIN__)
tzset();
--- 555,615 ----
#endif /* HAVE_MKTIME */
! #ifdef HAVE_WORKING_TZSET
! void inittimezone(PyObject *module);
+ static PyObject *
+ time_tzset(PyObject *self, PyObject *args)
+ {
+ PyObject* m;
! if (!PyArg_ParseTuple(args, ":tzset"))
! return NULL;
!
! m = PyImport_ImportModule("time");
! if (m == NULL) {
! return NULL;
! }
!
! tzset();
!
! /* Reset timezone, altzone, daylight and tzname */
! inittimezone(m);
! Py_DECREF(m);
!
! Py_INCREF(Py_None);
! return Py_None;
! }
!
! PyDoc_STRVAR(tzset_doc,
! "tzset(zone)\n\
\n\
! Initialize, or reinitialize, the local timezone to the value stored in\n\
! os.environ['TZ']. The TZ environment variable should be specified in\n\
! standard Uniz timezone format as documented in the tzset man page\n\
! (eg. 'US/Eastern', 'Europe/Amsterdam'). Unknown timezones will silently\n\
! fall back to UTC. If the TZ environment variable is not set, the local\n\
! timezone is set to the systems best guess of wallclock time.\n\
! Changing the TZ environment variable without calling tzset *may* change\n\
! the local timezone used by methods such as localtime, but this behaviour\n\
! should not be relied on.");
! #endif /* HAVE_WORKING_TZSET */
+ void inittimezone(PyObject *m) {
+ /* This code moved from inittime wholesale to allow calling it from
+ time_tzset. In the future, some parts of it can be moved back
+ (for platforms that don't HAVE_WORKING_TZSET, when we know what they
+ are), and the extranious calls to tzset(3) should be removed.
+ I havn't done this yet, as I don't want to change this code as
+ little as possible when introducing the time.tzset and time.tzsetwall
+ methods. This should simply be a method of doing the following once,
+ at the top of this function and removing the call to tzset() from
+ time_tzset():
! #ifdef HAVE_TZSET
! tzset()
! #endif
! And I'm lazy and hate C so nyer.
! */
#if defined(HAVE_TZNAME) && !defined(__GLIBC__) && !defined(__CYGWIN__)
tzset();
***************
*** 713,716 ****
--- 691,784 ----
#endif /* __CYGWIN__ */
#endif /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/
+ }
+
+
+ static PyMethodDef time_methods[] = {
+ {"time", time_time, METH_VARARGS, time_doc},
+ #ifdef HAVE_CLOCK
+ {"clock", time_clock, METH_VARARGS, clock_doc},
+ #endif
+ {"sleep", time_sleep, METH_VARARGS, sleep_doc},
+ {"gmtime", time_gmtime, METH_VARARGS, gmtime_doc},
+ {"localtime", time_localtime, METH_VARARGS, localtime_doc},
+ {"asctime", time_asctime, METH_VARARGS, asctime_doc},
+ {"ctime", time_ctime, METH_VARARGS, ctime_doc},
+ #ifdef HAVE_MKTIME
+ {"mktime", time_mktime, METH_VARARGS, mktime_doc},
+ #endif
+ #ifdef HAVE_STRFTIME
+ {"strftime", time_strftime, METH_VARARGS, strftime_doc},
+ #endif
+ {"strptime", time_strptime, METH_VARARGS, strptime_doc},
+ #ifdef HAVE_WORKING_TZSET
+ {"tzset", time_tzset, METH_VARARGS, tzset_doc},
+ #endif
+ {NULL, NULL} /* sentinel */
+ };
+
+
+ PyDoc_STRVAR(module_doc,
+ "This module provides various functions to manipulate time values.\n\
+ \n\
+ There are two standard representations of time. One is the number\n\
+ of seconds since the Epoch, in UTC (a.k.a. GMT). It may be an integer\n\
+ or a floating point number (to represent fractions of seconds).\n\
+ The Epoch is system-defined; on Unix, it is generally January 1st, 1970.\n\
+ The actual value can be retrieved by calling gmtime(0).\n\
+ \n\
+ The other representation is a tuple of 9 integers giving local time.\n\
+ The tuple items are:\n\
+ year (four digits, e.g. 1998)\n\
+ month (1-12)\n\
+ day (1-31)\n\
+ hours (0-23)\n\
+ minutes (0-59)\n\
+ seconds (0-59)\n\
+ weekday (0-6, Monday is 0)\n\
+ Julian day (day in the year, 1-366)\n\
+ DST (Daylight Savings Time) flag (-1, 0 or 1)\n\
+ If the DST flag is 0, the time is given in the regular time zone;\n\
+ if it is 1, the time is given in the DST time zone;\n\
+ if it is -1, mktime() should guess based on the date and time.\n\
+ \n\
+ Variables:\n\
+ \n\
+ timezone -- difference in seconds between UTC and local standard time\n\
+ altzone -- difference in seconds between UTC and local DST time\n\
+ daylight -- whether local time should reflect DST\n\
+ tzname -- tuple of (standard time zone name, DST time zone name)\n\
+ \n\
+ Functions:\n\
+ \n\
+ time() -- return current time in seconds since the Epoch as a float\n\
+ clock() -- return CPU time since process start as a float\n\
+ sleep() -- delay for a number of seconds given as a float\n\
+ gmtime() -- convert seconds since Epoch to UTC tuple\n\
+ localtime() -- convert seconds since Epoch to local time tuple\n\
+ asctime() -- convert time tuple to string\n\
+ ctime() -- convert time in seconds to string\n\
+ mktime() -- convert local time tuple to seconds since Epoch\n\
+ strftime() -- convert time tuple to string according to format specification\n\
+ strptime() -- parse string to time tuple according to format specification\n\
+ tzset() -- change the local timezone");
+
+
+ PyMODINIT_FUNC
+ inittime(void)
+ {
+ PyObject *m;
+ char *p;
+ m = Py_InitModule3("time", time_methods, module_doc);
+
+ /* Accept 2-digit dates unless PYTHONY2K is set and non-empty */
+ p = Py_GETENV("PYTHONY2K");
+ PyModule_AddIntConstant(m, "accept2dyear", (long) (!p || !*p));
+ /* Squirrel away the module's dictionary for the y2k check */
+ moddict = PyModule_GetDict(m);
+ Py_INCREF(moddict);
+
+ /* Set, or reset, module variables like time.timezone */
+ inittimezone(m);
+
#ifdef MS_WINDOWS
/* Helper to allow interrupts for Windows.
***************
*** 902,903 ****
--- 970,973 ----
return 0;
}
+
+
- Previous message: [Python-checkins] python/dist/src/Misc ACKS,1.228,1.229 NEWS,1.695,1.696
- Next message: [Python-checkins] python/dist/src configure,1.381,1.382 configure.in,1.392,1.393 pyconfig.h.in,1.72,1.73
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]