Hi,

You could try only loading what is necessary:

bool AppEcksdee::ProcessMounts ()
{
  csRef<iConfigIterator> it = app_cfg->Enumerate ("Ecksdee.Mount.");
  if (it)
    while (it->Next ())
    {
      const char* vp = it->GetKey (true);
      csString virtualpath = "/";
      virtualpath += vp;
      vfs->Mount (virtualpath, it->GetStr ());
    }

  return true;
}

Here if I specify a mount in the config file it gets loaded, like

Ecksdee.Mount.fonts/ttf = /usr/foo/bar

This way you can add config files and when you ProcessMounts () you'll have 
the new mount points.

On Sunday 25 February 2007 16:16, Mildred wrote:
> Hi,
>
> I managed to print all mountpoints of a basic application. Here is my
> vfs.cfg file that specify few mountpoints:
>
>
> VFS.Mount./config=$(XDG_CONFIG_HOME:$(HOME)$/.config)$/wot3d$/
> VFS.Mount./=$*
>
>
> And here are all mounted VFS dir when I start my application:
>
> virtual                 real
>
> /                       /mnt/data7/WoT/maps/baseapp/./
> /aws/                   /mnt/data14/crystal/data/awsdef.zip
> /aws/                   /mnt/data14/crystal/data/aws/
> /cdrom/                 /mnt/cdrom/
> /ceguitest/             /mnt/data14/crystal/data/ceguitest/
> /config/                /home/mildred/.config/wot3d/
> /config/                /home/mildred/.config/wot3d/
> /data/                  /mnt/data14/crystal/data/
> /fonts/ttf/             /mnt/data14/crystal/data/ttf/
> /fonts/ttf/             /usr/X11R6/lib/X11/fonts/Truetype/
> /fonts/ttf/             /usr/X11R6/lib/X11/fonts/TTF/
> /fonts/ttf/             /mnt/data14/crystal/data/ttf-dejavu.zip
> /fonts/ttf/             /mnt/data14/crystal/data/ttf-vera.zip
> /fonts/unifont/         /mnt/data14/crystal/data/unifont.zip
> /lev/castle/            /mnt/data14/crystal/data/castle/
> /lev/flarge/            /mnt/data14/crystal/data/flarge/
> /lev/isomap/            /mnt/data14/crystal/data/isomap.zip
> /lev/isomap/            /mnt/data14/crystal/data/isomap/
> /lev/parallaxtest/      /mnt/data14/crystal/data/parallaxtest/
> /lev/partsys/           /mnt/data14/crystal/data/partsys/
> /lev/projectortest/     /mnt/data14/crystal/data/projectortest/
> /lev/r3dsmtest/         /mnt/data14/crystal/data/r3dsmtest/
> /lev/r3dtest/           /mnt/data14/crystal/data/r3dtest/
> /lev/stenciltest/       /mnt/data14/crystal/data/stenciltest/
> /lev/terrain/           /mnt/data14/crystal/data/terrain/
> /lev/terraina/          /mnt/data14/crystal/data/terraina/
> /lev/terrainf/          /mnt/data14/crystal/data/terrainf/
> /lev/terrainp/          /mnt/data14/crystal/data/terrainp/
> /lev/unittest/          /mnt/data14/crystal/data/unittest/
> /lib/cubemap/           /mnt/data14/crystal/data/cube/
> /lib/g2dtest/           /mnt/data14/crystal/data/g2dtest/
> /lib/kwartz/            /mnt/data14/crystal/data/kwartz.zip
> /lib/startme/           /mnt/data14/crystal/data/startme.zip
> /lib/std/               /mnt/data14/crystal/data/standard.zip
> /lib/stdtex/            /mnt/data14/crystal/data/standard.zip
> /lib/teapot/            /mnt/data14/crystal/data/teapot.zip
> /partedit2/             /mnt/data14/crystal/data/partedit2/
> /pythonscript/          /home/mildred/
> /scripts/               /mnt/data14/crystal/scripts/
> /shader/                /mnt/data14/crystal/data/shader/
> /this/                  ./
> /tmp/                   /tmp/
> /varia/                 /mnt/data14/crystal/data/varia/
> /~/                     /home/mildred/
> /cellib/sounds/        
> /mnt/data7/WoT/maps/baseapp/.//data/sounds/sounds_ws.zip /cellib/images/   
>      /mnt/data7/WoT/maps/baseapp/.//data/images/ /cellib/objects/       
> /mnt/data7/WoT/maps/baseapp/.//data/
> /cellib/lev/            /mnt/data7/WoT/maps/baseapp/.//data/
> /cellib/track4/         /mnt/data7/WoT/maps/baseapp/.//data/track4.zip
> /cellib/library/        /mnt/data7/WoT/maps/baseapp/.//data/library/
> /celconfig/             /mnt/data7/WoT/maps/baseapp/.//data/config/
>
>
> I think it is a little bit too much. I think about downloading maps
> from the internet and those maps may include files from everywhere in
> the VFS (except if there is a way to chroot in the VFS).
> So I think about mounting only what is necessary. So is there a way not
> to load those default mountpoints, only those I specified in my own
> vfs.cfg directory ?
>
> Actually, I loop over all those mountpoints to unmount them manually,
> and then I mount manually exactly what I want, but then it means I
> can't use vfs.cfg, and especially the $* variable. I don't like
> specifying in the source code some static path :(
>
> Also, if you hared something about restricting the files opened when
> loading a map for example, I'm really interested. Actually i think
> about unmounting everything except the map directory, load the map and
> then restore all mountpoints. I wonder if there is a better solution.
>
> Thanks.
> Mildred

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Crystal-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: mailto:[EMAIL PROTECTED]

Reply via email to