diff --git a/src/libcglue/Makefile.am b/src/libcglue/Makefile.am index 5f2cda9e..807ef9f2 100755 --- a/src/libcglue/Makefile.am +++ b/src/libcglue/Makefile.am @@ -28,7 +28,7 @@ GLUE_OBJS = __dummy_passwd.o __fill_stat.o __psp_heap_blockid.o __psp_free_heap. _write.o _fstat.o _stat.o lstat.o access.o _fcntl.o _lseek.o chdir.o mkdir.o rmdir.o getdents.o _seekdir.o _link.o _unlink.o \ _rename.o _getpid.o _kill.o _sbrk.o _gettimeofday.o _times.o ftime.o clock_getres.o clock_gettime.o clock_settime.o \ _isatty.o symlink.o truncate.o chmod.o fchmod.o fchmodat.o pathconf.o readlink.o utime.o fchown.o getentropy.o getpwuid.o \ - fsync.o getpwnam.o getuid.o geteuid.o basename.o + fsync.o getpwnam.o getuid.o geteuid.o basename.o statvfs.o INIT_OBJS = __libpthreadglue_init.o __libcglue_init.o __libcglue_deinit.o _exit.o abort.o exit.o diff --git a/src/libcglue/glue.c b/src/libcglue/glue.c index 572f3026..a280f10a 100755 --- a/src/libcglue/glue.c +++ b/src/libcglue/glue.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -1027,3 +1028,23 @@ char* basename (char *path) return p + 1; } #endif /* F_basename */ + +#ifdef F_statvfs +int statvfs (const char *__path, struct statvfs *__buf) +{ + SceDevInf inf; + SceDevctlCmd cmd; + + cmd.dev_inf = &inf; + memset(&inf, 0, sizeof(SceDevInf)); + sceIoDevctl(__path, SCE_PR_GETDEV, &cmd, sizeof(SceDevctlCmd), NULL, 0); + + memset(__buf, 0, sizeof(struct statvfs)); + __buf->f_bsize = (inf.sectorSize * inf.sectorCount); + __buf->f_frsize = (inf.sectorSize * inf.sectorCount); + __buf->f_blocks = inf.maxClusters; + __buf->f_bfree = inf.freeClusters; + __buf->f_bavail = inf.freeClusters; + __buf->f_namemax = MAXNAMLEN; +} +#endif /* F_statvfs */