f9c90c5 | Guido van Rossum | 05 August 1997, 02:18:01 UTC | Renamed a local label that was accidentally grandly renamed to 'Py_Cleanup' back to 'cleanup'. | 05 August 1997, 02:18:01 UTC |
fbbd57e | Guido van Rossum | 05 August 1997, 02:16:08 UTC | Added _Fini() routines to free up some memory | 05 August 1997, 02:16:08 UTC |
971a7aa | Guido van Rossum | 05 August 1997, 02:15:12 UTC | Change the Fini function to only remove otherwise unreferenced strings from the interned table. There are references in hard-to-find static variables all over the interpreter, and it's not worth trying to get rid of all those; but "uninterning" isn't fair either and may cause subtle failures later -- so we have to keep them in the interned table. Also get rid of no-longer-needed insert of None in interned dict. | 05 August 1997, 02:15:12 UTC |
1f39c5c | Guido van Rossum | 05 August 1997, 02:11:41 UTC | Added separate free list for cfunction (builtin method) objects, for a few percent speed up. Also add PyCFunction_Fini() to discard it. | 05 August 1997, 02:11:41 UTC |
404b95d | Guido van Rossum | 05 August 1997, 02:09:46 UTC | Provide a dummy empty directory as f_builtins instead of failing, when no valid directory is passed in. This prevents __del__ to fail when invoked after __builtins__ has already been discarded. Also add PyFrame_Fini() to discard the cache of frames. | 05 August 1997, 02:09:46 UTC |
a0d349f | Guido van Rossum | 05 August 1997, 02:06:53 UTC | Added separate free list for instance method objects, for a few percent speed up. Also add PyMethod_Fini() to discard it. | 05 August 1997, 02:06:53 UTC |
e09fb55 | Guido van Rossum | 05 August 1997, 02:04:34 UTC | Added _Py_ResetReferences(), if tracing references. In _Py_PrintReferences(), no longer suppress once-referenced string. Add Py_Malloc and friends and PyMem_Malloc and friends (malloc wrappers for third parties). | 05 August 1997, 02:04:34 UTC |
d085e88 | Guido van Rossum | 05 August 1997, 01:59:22 UTC | Added Py_Malloc and friends as well as PyMem_Malloc and friends. | 05 August 1997, 01:59:22 UTC |
5c159bd | Guido van Rossum | 04 August 1997, 23:55:25 UTC | Plug memory leak (DECREF doc string properly after inserting in dict). | 04 August 1997, 23:55:25 UTC |
7995ed2 | Guido van Rossum | 02 August 1997, 03:19:26 UTC | The reload(sys) test no longer works due to changes in the import semantics. | 02 August 1997, 03:19:26 UTC |
b02158e | Guido van Rossum | 02 August 1997, 03:13:11 UTC | Oops, one more checkin. Use the new tstate/interp interface. | 02 August 1997, 03:13:11 UTC |
25ce566 | Guido van Rossum | 02 August 1997, 03:10:38 UTC | The last of the mass checkins for separate (sub)interpreters. Everything should now work again. See the comments for the .h files mass checkin (e.g. pystate.h) for more detail. | 02 August 1997, 03:10:38 UTC |
40b33c6 | Guido van Rossum | 02 August 1997, 03:07:46 UTC | Removed fatal errors from Py_Initmodule4() (and thus from Py_Initmodule(), which is a macro wrapper around it). The return value is now a NULL pointer if the initialization failed. This may make old modules fail with a SEGFAULT, since they don't expect this kind of failure. That's OK, since (a) it "never" happens, and (b) they would fail with a fatal error otherwise, anyway. Tons of extension modules should now check the return value of Py_Initmodule*() -- that's on my TODO list. | 02 August 1997, 03:07:46 UTC |
aee094c | Guido van Rossum | 02 August 1997, 03:02:27 UTC | Added finalization routines. | 02 August 1997, 03:02:27 UTC |
08c1661 | Guido van Rossum | 02 August 1997, 03:01:42 UTC | Add finialization routines; fixed some memory leaks related to this. Reset the SIGINT handler when the finalization is invoked. | 02 August 1997, 03:01:42 UTC |
05f7c50 | Guido van Rossum | 02 August 1997, 03:00:42 UTC | Free the malloc'ed buffer that holds the command once we're done with it. Instead of calling Py_Exit(sts), call Py_Cleanup() and return sts. | 02 August 1997, 03:00:42 UTC |
eb46d67 | Guido van Rossum | 02 August 1997, 02:59:08 UTC | Avoid function calls to access the current thread state and builtins -- the thread state is passed in as an argument and the builtins are a member thereof. | 02 August 1997, 02:59:08 UTC |
8cf0476 | Guido van Rossum | 02 August 1997, 02:57:45 UTC | Added internal routine PyString_Fini() which deletes all interned strings. For use in Py_Finalize() only. | 02 August 1997, 02:57:45 UTC |
29e46a9 | Guido van Rossum | 02 August 1997, 02:56:48 UTC | Mass checkin (more to follow for other directories). Introduce truly separate (sub)interpreter objects. For now, these must be used by separate threads, created from C. See Demo/pysvr for an example of how to use this. This also rationalizes Python's initialization and finalization behavior: Py_Initialize() -- initialize the whole interpreter Py_Finalize() -- finalize the whole interpreter tstate = Py_NewInterpreter() -- create a new (sub)interpreter Py_EndInterpreter(tstate) -- delete a new (sub)interpreter There are also new interfaces relating to threads and the interpreter lock, which can be used to create new threads, and sometimes have to be used to manipulate the interpreter lock when creating or deleting sub-interpreters. These are only defined when WITH_THREAD is defined: PyEval_AcquireLock() -- acquire the interpreter lock PyEval_ReleaseLock() -- release the interpreter lock PyEval_AcquireThread(tstate) -- acquire the lock and make the thread current PyEval_ReleaseThread(tstate) -- release the lock and make NULL current Other administrative changes: - The header file bltinmodule.h is deleted. - The init functions for Import, Sys and Builtin are now internal and declared in pythonrun.h. - Py_Setup() and Py_Cleanup() are no longer declared. - The interpreter state and thread state structures are now linked together in a chain (the chain of interpreters is a static variable in pythonrun.c). - Some members of the interpreter and thread structures have new, shorter, more consistent, names. - Added declarations for _PyImport_{Find,Fixup}Extension() to import.h. | 02 August 1997, 02:56:48 UTC |
7a2d611 | Guido van Rossum | 02 August 1997, 02:41:13 UTC | Add cast to PyInt_AS_LONG macro, as suggested by Marc Lemburg. | 02 August 1997, 02:41:13 UTC |
2981bc7 | Guido van Rossum | 02 August 1997, 02:40:58 UTC | Add cast to PyFloat_AS_DOUBLE macro, as suggested by Marc Lemburg. | 02 August 1997, 02:40:58 UTC |
d0924f4 | Guido van Rossum | 02 August 1997, 02:06:20 UTC | Add a simple way to enable purify; now you can set the Make variable PURIFY (e.g. in the Setup file or on the make command line) to point to the purify command, to run purify. | 02 August 1997, 02:06:20 UTC |
c46d22e | Guido van Rossum | 02 August 1997, 02:02:22 UTC | Print ps (process status) for us when starting a new thread. Even less shuffling of stdout (only at start of new interpreter). Interact properly with new interpreter initialization conventions (must use Py_Initialize/Py_Finalize *and* Py_NewInterpreter/Py_EndInterpreter). Probably more minor changes. | 02 August 1997, 02:02:22 UTC |
35d4337 | Guido van Rossum | 02 August 1997, 00:09:09 UTC | Functionality enhancement: allow other threads to use Tk commands while one thread is blocked in mainloop(). Also, handle signals (not just interrupts) as soon as they happen. Cleanup: remove support for Tcl/Tk versions 7.4/4.0. (I've confirmed that it works for 7.5/4.1 and 7.6/4.2, as well as 8.0b2.) Coding style change: instead of ``func (args)'', write ``func(args)'' everywhere. Minor functionality change: use PyArg_ParseTuple everywhere. This should only affect the errors reported for bad argument lists; in particular, deletefilehandler() is much clearer about what's going on. (XXX Still to do: Mac and Win ports to 8.0b2.) | 02 August 1997, 00:09:09 UTC |
3e819a7 | Guido van Rossum | 01 August 1997, 19:29:02 UTC | Compatibility with Tcl/Tk 8.0b*. | 01 August 1997, 19:29:02 UTC |
f4e32c7 | Guido van Rossum | 31 July 1997, 19:39:54 UTC | Add definitions for symbolic constants LOCK_{EX,NB,SH,UN}. | 31 July 1997, 19:39:54 UTC |
55b9ab5 | Guido van Rossum | 31 July 1997, 03:54:02 UTC | Extend the "Don Beaudry hack" with "Guido's corollary" -- if the base class has a __class__ attribute, call that to create the new class. This allows us to write metaclasses purely in C! | 31 July 1997, 03:54:02 UTC |
fd16ca4 | Guido van Rossum | 30 July 1997, 22:05:07 UTC | Added mimify docs (Sjoerd). | 30 July 1997, 22:05:07 UTC |
74d25e7 | Guido van Rossum | 30 July 1997, 22:02:28 UTC | Mention decode_base64 in example. | 30 July 1997, 22:02:28 UTC |
bc0cd37 | Fred Drake | 30 July 1997, 15:59:25 UTC | l2h target: l2htut was listed twice and l2hapi was skipped. Fixed. | 30 July 1997, 15:59:25 UTC |
5e06257 | Jack Jansen | 28 July 1997, 13:04:22 UTC | Final set of CW11 projects, before switch to CW Pro 1. | 28 July 1997, 13:04:22 UTC |
ff0ec52 | Guido van Rossum | 27 July 1997, 01:52:50 UTC | Finally plug the memory leak caused by syntax error (including interactive EOF, which leaked *one* byte). | 27 July 1997, 01:52:50 UTC |
6fc06e7 | Guido van Rossum | 26 July 1997, 23:30:18 UTC | Plugged a leak. (The same as the one plugged in compile.c -- forgot to free lnotab). | 26 July 1997, 23:30:18 UTC |
5ec8e4b | Guido van Rossum | 25 July 1997, 22:35:24 UTC | Moved the special compile of getbuildno.o to ../Makefile.in. A dummy getbuildno.o (with a number of 0) still gets built here, to make the library complete. | 25 July 1997, 22:35:24 UTC |
1eec528 | Guido van Rossum | 25 July 1997, 22:34:08 UTC | Build getbuildno.o here, to adequately update it every time a new python executable is built. (It still won't reflect builds of the library only, but since the default make target builds the python executable, that's alright.) | 25 July 1997, 22:34:08 UTC |
630924f | Guido van Rossum | 25 July 1997, 20:59:55 UTC | Use Py_NewInterpreter() and friends. Remove saving/restoring of std files. | 25 July 1997, 20:59:55 UTC |
275558c | Guido van Rossum | 25 July 1997, 20:13:49 UTC | Plug a leak in code_dealloc() (and reordered the deallocs to match the order of the variables in the declarations). Also removed an entry in the TODO list that's done. | 25 July 1997, 20:13:49 UTC |
9a876a4 | Guido van Rossum | 25 July 1997, 15:20:52 UTC | Tweaks by Lars Wirzenius to parse some more forms of illegal dates: the comma after the day name is optional if it is a recognized day name; and the date and month may be swapped. Thus, the following two test dates will now be parsed correctly: Thu, Feb 13 12:16:57 1992 Thu Feb 13 12:16:57 1992 | 25 July 1997, 15:20:52 UTC |
4e5cbcf | Guido van Rossum | 25 July 1997, 14:59:10 UTC | Added createmessage() -- Lars Wirzenius. | 25 July 1997, 14:59:10 UTC |
2e2525f | Guido van Rossum | 25 July 1997, 14:56:01 UTC | Patch by Lars Wirzenius to allow f.readline(length). | 25 July 1997, 14:56:01 UTC |
b065452 | Fred Drake | 25 July 1997, 13:14:35 UTC | Bump up the version number. The date still needs to be set (Guido will have to do that one!), but at least the version will match the release version. (1.5a2 got skipped for this.) | 25 July 1997, 13:14:35 UTC |
12d9eac | Fred Drake | 24 July 1997, 15:39:16 UTC | A couple of grammatical nits. Re-sequenced the function descriptions so that the formatting is described before the assumption is made that the reader has a clue about the formatting. Moved examples to be closer to the functions being demonstrated. Added example of saferepr() result. | 24 July 1997, 15:39:16 UTC |
ed57d76 | Guido van Rossum | 23 July 1997, 18:10:52 UTC | Regenerated; __assert__ becomes assert. | 23 July 1997, 18:10:52 UTC |
ef3d02e | Guido van Rossum | 21 July 1997, 14:54:36 UTC | Removed some variables that are used to exchange data between import.c and importdl.c: the MAXSUFFIXSIZE macro is now defined in importdl.h, and the modules dictionary is now passed using PyImport_GetModuleDict(). Also undefine USE_SHLIB for AIX -- in AIX 4.2 and up, dlfcn.h exists but we don't want to use it. | 21 July 1997, 14:54:36 UTC |
7661185 | Guido van Rossum | 19 July 1997, 23:46:59 UTC | Changed the patch level to 1.5a3, to avoid confusion with a2 (I'm not ready for a release yet). | 19 July 1997, 23:46:59 UTC |
661aebc | Guido van Rossum | 19 July 1997, 23:14:13 UTC | New test for generic Makefile.pre.in | 19 July 1997, 23:14:13 UTC |
a955967 | Guido van Rossum | 19 July 1997, 23:13:10 UTC | Added description of the extend subdirectory. | 19 July 1997, 23:13:10 UTC |
895e105 | Guido van Rossum | 19 July 1997, 22:53:39 UTC | For use with Misc/Makefile.pre.in, the libainstall target must install Modules/python.o. | 19 July 1997, 22:53:39 UTC |
bef03ae | Guido van Rossum | 19 July 1997, 22:52:43 UTC | Adapted to the new build system. | 19 July 1997, 22:52:43 UTC |
ded2e20 | Guido van Rossum | 19 July 1997, 22:00:45 UTC | Change libainstall again: need to install fewer files for "freeze"; add Setup.local to list of installed files. | 19 July 1997, 22:00:45 UTC |
a941451 | Guido van Rossum | 19 July 1997, 21:59:47 UTC | frozenmain.c is now also in the library, with entry point Py_FrozenMain(). | 19 July 1997, 21:59:47 UTC |
b3afce5 | Guido van Rossum | 19 July 1997, 21:58:30 UTC | Updated for new style build/install; much simpler! | 19 July 1997, 21:58:30 UTC |
019db5d | Guido van Rossum | 19 July 1997, 21:54:24 UTC | Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode! | 19 July 1997, 21:54:24 UTC |
a88446a | Guido van Rossum | 19 July 1997, 21:34:11 UTC | Some improvements, e.g. -L/depot/... is not needed. | 19 July 1997, 21:34:11 UTC |
e0c6901 | Guido van Rossum | 19 July 1997, 21:33:10 UTC | Added leading comment and security check. | 19 July 1997, 21:33:10 UTC |
42ded89 | Guido van Rossum | 19 July 1997, 21:29:28 UTC | Reformulate security check using getsockname(). | 19 July 1997, 21:29:28 UTC |
eca991d | Guido van Rossum | 19 July 1997, 21:13:53 UTC | Change security policy -- only accept requests from current host. | 19 July 1997, 21:13:53 UTC |
d1bef00 | Guido van Rossum | 19 July 1997, 21:02:32 UTC | Removed old signature. | 19 July 1997, 21:02:32 UTC |
14b0e70 | Guido van Rossum | 19 July 1997, 21:02:08 UTC | Updated description for embed; added pysvr. | 19 July 1997, 21:02:08 UTC |
5c8b991 | Guido van Rossum | 19 July 1997, 21:00:47 UTC | New example of threaded embedding | 19 July 1997, 21:00:47 UTC |
6e614e3 | Guido van Rossum | 19 July 1997, 20:58:50 UTC | Updated the Makefile to work with the new build strategy. | 19 July 1997, 20:58:50 UTC |
8aea8d9 | Guido van Rossum | 19 July 1997, 20:46:22 UTC | Remove -s option and $PYTHONSUPPRESS environment variable. | 19 July 1997, 20:46:22 UTC |
5624abd | Guido van Rossum | 19 July 1997, 20:45:30 UTC | Emptied (in expectation of a laundry list of what's new in 1.5). | 19 July 1997, 20:45:30 UTC |
ecd3b15 | Guido van Rossum | 19 July 1997, 20:44:33 UTC | Added note about libpython1.5.a. | 19 July 1997, 20:44:33 UTC |
132cd06 | Guido van Rossum | 19 July 1997, 20:44:09 UTC | Some new names. | 19 July 1997, 20:44:09 UTC |
68de379 | Guido van Rossum | 19 July 1997, 20:22:23 UTC | Add the option to pass an open file object to GzipFile. This obviates the need for the StringIO subclass. | 19 July 1997, 20:22:23 UTC |
6576dd6 | Guido van Rossum | 19 July 1997, 20:16:07 UTC | Document new 'quote' flag to cgi.escape(). | 19 July 1997, 20:16:07 UTC |
64c6620 | Guido van Rossum | 19 July 1997, 20:11:53 UTC | Add optional 'quote' flag argument to escape(); if true, translate '"' to '"'. | 19 July 1997, 20:11:53 UTC |
1e8c8a2 | Guido van Rossum | 19 July 1997, 20:02:36 UTC | New dialog routines (Fred Lundh) | 19 July 1997, 20:02:36 UTC |
65c78e1 | Guido van Rossum | 19 July 1997, 20:02:04 UTC | Use dictionary's update() method in _cnfmerge(). | 19 July 1997, 20:02:04 UTC |
7a337c1 | Guido van Rossum | 19 July 1997, 19:59:06 UTC | Removed Py_SuppressPrintingFlag flag; added new PyEval_{Acquire,Release}Thread() calls. | 19 July 1997, 19:59:06 UTC |
496f8f6 | Guido van Rossum | 19 July 1997, 19:57:42 UTC | Removed remaining support for Tk versions below 4.0. | 19 July 1997, 19:57:42 UTC |
9cc8a20 | Guido van Rossum | 19 July 1997, 19:55:50 UTC | Moved PyEval_{Acquire,Release}Thread() to within the same #ifdef WITH_THREAD as PyEval_InitThreads(). Removed use of Py_SuppressPrintingFlag. | 19 July 1997, 19:55:50 UTC |
4c12570 | Guido van Rossum | 19 July 1997, 19:54:25 UTC | Adapted to new build procedure (hopefully correct -- can't test it!). | 19 July 1997, 19:54:25 UTC |
534ac09 | Guido van Rossum | 19 July 1997, 19:51:43 UTC | Removed a bunch of extern declarations of functions that are now properly declared in Python.h. | 19 July 1997, 19:51:43 UTC |
57d8e3f | Guido van Rossum | 19 July 1997, 19:50:52 UTC | Added declarations for Py_{Set,Get}ProgramName() and a bunch of other Py_Get*() functions. | 19 July 1997, 19:50:52 UTC |
5617f32 | Guido van Rossum | 19 July 1997, 19:49:11 UTC | Added decl for PyInt_GetMax(). | 19 July 1997, 19:49:11 UTC |
8fb26ed | Guido van Rossum | 19 July 1997, 19:48:41 UTC | Make it return a _const_ char*. | 19 July 1997, 19:48:41 UTC |
f6ca6aa | Guido van Rossum | 19 July 1997, 19:39:57 UTC | New build procedure. | 19 July 1997, 19:39:57 UTC |
914fbd9 | Guido van Rossum | 19 July 1997, 19:38:43 UTC | New build procedure, using a single library libpython$(VERSION) at this level. The old libraries Modules/libModules.a etc. don't exist any more. The libainstall target is updated to match. | 19 July 1997, 19:38:43 UTC |
1fd74a7 | Guido van Rossum | 19 July 1997, 19:36:02 UTC | The usual | 19 July 1997, 19:36:02 UTC |
642b678 | Guido van Rossum | 19 July 1997, 19:35:41 UTC | Set $VERSION here (fixed to 1.5). Remove some unneeded AC_SUBST() calls. | 19 July 1997, 19:35:41 UTC |
a847889 | Guido van Rossum | 19 July 1997, 19:27:30 UTC | Moved PyEval_InitThreads to inside WITH_THREAD, where it belongs. | 19 July 1997, 19:27:30 UTC |
e6fb204 | Guido van Rossum | 19 July 1997, 19:26:38 UTC | Got rid of "suppres printing" flag. | 19 July 1997, 19:26:38 UTC |
4c04be6 | Guido van Rossum | 19 July 1997, 19:25:33 UTC | This is now the "real" main program -- it calls Py_Main(argc, argv) which is in the library and does all the work. | 19 July 1997, 19:25:33 UTC |
3768fb1 | Guido van Rossum | 19 July 1997, 19:24:41 UTC | Tracking changes to Py_Main(): - Got rid of inspection of some environment variables. - Got rid of Py_GetProgramName() and related logic. - Print the version header *after* successful initialization. | 19 July 1997, 19:24:41 UTC |
ed52aac | Guido van Rossum | 19 July 1997, 19:20:32 UTC | This is no longer the real main program; it now defines Py_Main(), so it can be placed in the library. Other, related changes: - Moved the inspection of some environment variables to Py_Initialize(). - Got rid of -s option. - Moved Py_GetProgramName() and related logic to pythonrun.c; call Py_SetProgramName() instead. - Print the version header *after* successful initialization. | 19 July 1997, 19:20:32 UTC |
ad6dfda | Guido van Rossum | 19 July 1997, 19:17:22 UTC | Moved some stuff here from main.c (part of a big restructuring - wait for more!). - The global flags that can be set from environment variables are now set in Py_Initialize (except the silly Py_SuppressPrint, which no longer exists). This saves duplicate code in frozenmain.c and main.c. - Py_GetProgramName() is now here; added Py_SetProgramName(). An embedding program should no longer provide Py_GetProgramName(), instead it should call Py_SetProgramName() *before* calling Py_Initialize(). | 19 July 1997, 19:17:22 UTC |
0c88e1f | Guido van Rossum | 19 July 1997, 00:02:22 UTC | Remove confusing usage comments at end. | 19 July 1997, 00:02:22 UTC |
618af4b | Guido van Rossum | 18 July 1997, 23:59:26 UTC | Include pystate.h earlier so it can be referenced by ceval.h. | 18 July 1997, 23:59:26 UTC |
75aa0d6 | Guido van Rossum | 18 July 1997, 23:57:50 UTC | Use the new functions PyEval_AcquireThread() and PyEval_ReleaseThread() (in ceval.c) to set/reset the current thread, and at the same time acquire/release the interpreter lock. Much saner. | 18 July 1997, 23:57:50 UTC |
2fca21f | Guido van Rossum | 18 July 1997, 23:56:58 UTC | PyEval_SaveThread() and PyEval_RestoreThread() now return/take a PyThreadState pointer instead of a (frame) PyObject pointer. This makes much more sense. It is backward incompatible, but that's no problem, because (a) the heaviest users are the Py_{BEGIN,END}_ ALLOW_THREADS macros here, which have been fixed too; (b) there are very few direct users; (c) those who use it are there will probably appreciate the change. Also, added new functions PyEval_AcquireThread() and PyEval_ReleaseThread() which allows the threads created by the thread module as well threads created by others (!) to set/reset the current thread, and at the same time acquire/release the interpreter lock. Much saner. | 18 July 1997, 23:56:58 UTC |
c864ad6 | Guido van Rossum | 18 July 1997, 23:50:22 UTC | Nit: round delays to 0.1 second. | 18 July 1997, 23:50:22 UTC |
edca74a | Guido van Rossum | 18 July 1997, 23:29:40 UTC | The usual | 18 July 1997, 23:29:40 UTC |
b5875b6 | Guido van Rossum | 18 July 1997, 23:29:09 UTC | Set OPT to -g -O2 (or -O2 when -g not supported) when using gcc. | 18 July 1997, 23:29:09 UTC |
61c2703 | Guido van Rossum | 18 July 1997, 21:08:07 UTC | added code.py; codehack.py is obsolete | 18 July 1997, 21:08:07 UTC |
1c78cf3 | Guido van Rossum | 18 July 1997, 21:07:34 UTC | Added label{module-spam} | 18 July 1997, 21:07:34 UTC |
ca1182b | Fred Drake | 18 July 1997, 20:44:22 UTC | Remove pprint from the list of undocumented modules. | 18 July 1997, 20:44:22 UTC |
d2b9f81 | Fred Drake | 18 July 1997, 20:43:53 UTC | Add entry for the pprint module. | 18 July 1997, 20:43:53 UTC |
18600a4 | Fred Drake | 18 July 1997, 20:43:27 UTC | Add libpprint.tex to the lib.dvi dependencies. | 18 July 1997, 20:43:27 UTC |