[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