From: Zoran V. <zv...@ar...> - 2005-10-04 15:34:11
|
Hi friends, I have made the TclVFS changes finally, believe or or not! Before wholesale commit, I will however tag the current CVS state as before-tcl-vfs (any better idea?) so you/we can backoff if we found some serious, non-fixable problem. I have replaced most of the internal direct OS calls with TclVFS pendants. Things dealing with temporary/debug files are however left unchanged. The tcl/compat.tcl now contains most of the ns_xxxxxx file-fiddling calls once done in C and actually augmented with the modern [file] command implementation. Please inspect and see if I missed something. Generally, things there are *removed* from the C-code. Those Tcl commands are really ment for back-compat and should really not be used; use the [file] instead. I haven't done the ns_symlink(a) and ns_truncate(b) because of the: (a) potential incombatiblity and (b) lack of appropriate functionality on the Tcl level Majority of VFS changes are rather unimportant for the speed *except* the adpeval.c and fastpath.c. There, I first try the OS then TclVFS path. I believe you will see no performance penalty whoatsoever. That is, if you do not use Tcl virtual filesystem mappings, everything should work as before. Vlad, I rewrote the ParseRanges() in order to better understand it. I hope I did not screw anything. Do a quick glance there (after I commit) and doublecheck. Oh yes, if interested, I can give you diffs of files which have been changed in advance. Anybody? Caveat emptor: I did rewrite the nslog/nslog.c to use Tcl_Obj interface and have found that this part was *utterly* MT-unsafe, generally speaking. This has been now improved. Please take care to inspect your access.log files and check if everything is still as it should be. This is the list of changed files so far: M include/ns.h M include/nscheck.h M nsd/adpeval.c M nsd/adprequest.c M nsd/binder.c M nsd/config.c M nsd/conn.c M nsd/driver.c M nsd/fastpath.c M nsd/init.c M nsd/log.c M nsd/modload.c M nsd/nsconf.c M nsd/nsmain.c M nsd/pidfile.c M nsd/rollfile.c M nsd/tclcmds.c M nsd/tclfile.c M nsd/tclimg.c M nsd/urlopen.c M nslog/nslog.c M tcl/compat.tcl Again, please pay attention to nsd/adpeval.c and nsd/fastpath.c. Any objections to commit? Cheers Zoran |