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