Re: file io within starpack's vfs
jemptymethod <[email protected]> Fri, 5 Feb 2010 11:45:05 -0800 (PST)
| Newsgroups | gmane.comp.lang.tcl.starkit |
|---|---|
| Message-ID | <[email protected]> |
On Feb 5, 7:00 am, Pat Thoyts <[email protected]> wrote: > On 5 February 2010 11:26, jemptymethod <[email protected]> wrote: > > > I'm surprised that I can do file io within the vfs when I wrap up a > > starpack as an .exe. Surprised but pleased: I thought that for this > > scenario I was going to have to deploy tclkit and a .kit file. > > > What if the data I want to write within the vfs becomes "too large". > > Can the .exe expand in size? > > > Any clarification on the inner workings of starkits/starpacks would be > > appreciated. > > Not on windows. The image file (ie: tclkit.exe) is locked by the OS > when it loads the file to execute it. If you start tclkit you can do a > few tests in the console: > % cd [info nameofexecutable] > % glob * > boot.tcl config.tcl lib tclkit.ico > % set f [open junk w] > rechan89 > % puts $f [string repeat a 10240] > % close $f > % glob * > boot.tcl config.tcl junk lib tclkit.ico > > At the point it looks like you saved your new file - but if you exit > and restart it will have gone. The 'rechan89' channel shown above is > an in-memory stream. If we try to commit it to the database that > provides the virtual filesystem we will get an access denied error. > > On unix you can modify the running image file. However on both systems > the image may be located somewhere the user does not have write > access. For this reason it is usualy best to store data in the users > home directory or a subdirectory of that. Or on windows under > $env(APPDATA). > > If you dig around on the wiki.tcl.tk site you can find out more about > metakit virtual filesystems. If you are using metakit. If it was > tclkit-gui or tclkit-cli then that is a readonly version that can > access the database but not change it. Its also possible to base > starkits on zip files and use the zip vfs to load them. But the usual > 'tclkit' uses a metakit database as the vfs with zlib compressed blobs > for the files. The database is appended to the end of the executable > image for a starpack. Thanks for the excellent information and suggestions! -- You received this message because you are subscribed to the "starkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/starkit?hl=en