[physfs] Question regarding PHYSFS_getRealDir and PHYSFS_isDirectory
Eric Stevens
estevens05 at gmail.com
Mon Mar 1 07:40:33 EST 2010
Hello Indy,
You are correct, and I've made that correction. Thank you.
Eric
On Sun, Feb 28, 2010 at 11:57 PM, Indy Sams <indy at driftsolutions.com> wrote:
> 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.
>
> _______________________________________________
> physfs mailing list
> physfs at icculus.org
> http://icculus.org/mailman/listinfo/physfs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://icculus.org/pipermail/physfs/attachments/20100301/31544a6e/attachment.htm>
More information about the physfs
mailing list