[physfs] Question regarding PHYSFS_getRealDir and PHYSFS_isDirectory
Indy Sams
indy at driftsolutions.com
Sun Feb 28 23:57:52 EST 2010
Hello Eric,
One thing I notice is you aren't including the directory in your call to PHYSFS_isDirectory in get_dir_listing().
For example, you are using:
PHYSFS_isDirectory("modules")
instead of:
PHYSFS_isDirectory("userdir/modules")
The 2nd version should give you the results you are looking for.
Sunday, February 28, 2010, 11:14:14 PM, you wrote:
ES> PHYSFS_getRealDir:
ES> I understand that calling this with a fake directory will result
ES> in returning the first archive mounted to the fake directory's
ES> location. My question is if I've mounted a real directory as a
ES> fake VFS directory, like mounting /home/user to VFS:/myusr, why
ES> shouldn't it return the real directory of /myusr as /home/usr? If
ES> I create a file inside /myuser, the file is real and not just in the VFS.
ES> PHYSFS_isDirectory:
ES> Using the /myuser example above, if I call this on /myuser I get
ES> a list of nothing but files, instead of a mix of files and
ES> directories as I would expect. Even if this was a fake directory
ES> instead of a real file system I would think that directories would
ES> show up correctly. Is this the correct behavior?
ES> This is all using 2.0 stable. Here's some test code and the
ES> output, in case I'm just being thick - nothing new
ES> #include "physfs.h"
ES> #include <stdio.h>
ES> void get_dir_listing(const char* path)
ES> {
ES> char** rc;
ES> char** i;
ES>
ES> rc = PHYSFS_enumerateFiles(path);
ES>
ES> for (i = rc; *i != NULL; i++)
ES> {
ES> if (PHYSFS_isDirectory(*i))
ES> printf("Directory [%s]\n", *i);
ES> else
ES> printf("File [%s]\n", *i);
ES> }
ES>
ES> PHYSFS_freeList(rc);
ES> }
ES> int main(int argc, char** argv)
ES> {
ES> PHYSFS_init(argv[0]);
ES> PHYSFS_mount("/home/estevens/games/tome3", NULL, 0);
ES> PHYSFS_mount("/home/estevens/.t-engine/3.0", "/userdir", 1);
ES>
ES> printf("\nreal dir of /userdir/log: %s\n",
ES> PHYSFS_getRealDir("/userdir/log"));
ES> printf("\nContents of '/'\n");
ES> get_dir_listing("/");
ES> printf("\nContents of '/userdir'\n");
ES> get_dir_listing("/userdir");
ES>
ES> PHYSFS_deinit();
ES>
ES> return 0;
ES> }
ES> The output:
ES> real dir of /userdir/log: /home/estevens/.t-engine/3.0
ES> Contents of '/'
ES> Directory [game]
ES> Directory [game.mod1]
ES> File [tome.cfg]
ES> File [tree.txt]
ES> Directory [userdir]
ES> Contents of '/userdir' (all are directories)
ES> File [log]
ES> File [modules]
ES> File [settings]
ES> File [tmp]
Best regards,
Indy Sams
mailto:indy at driftsolutions.com
P.S. This is what part of the alphabet would look like if Q & R were eliminated.
More information about the physfs
mailing list