! Get filesystem statistics for the SD card * * @param[in,out] r newlib reentrancy struct * @param[in] path Path to filesystem to get statistics of * @param[out] buf Buffer to fill * * @returns 0 for success * @returns -1 for error */
| 1197 | * @returns -1 for error |
| 1198 | */ |
| 1199 | static int |
| 1200 | sdmc_statvfs(struct _reent *r, |
| 1201 | const char *path, |
| 1202 | struct statvfs *buf) |
| 1203 | { |
| 1204 | Result rc; |
| 1205 | FS_ArchiveResource resource; |
| 1206 | bool writable = false; |
| 1207 | |
| 1208 | rc = FSUSER_GetSdmcArchiveResource(&resource); |
| 1209 | |
| 1210 | if(R_SUCCEEDED(rc)) |
| 1211 | { |
| 1212 | buf->f_bsize = resource.clusterSize; |
| 1213 | buf->f_frsize = resource.clusterSize; |
| 1214 | buf->f_blocks = resource.totalClusters; |
| 1215 | buf->f_bfree = resource.freeClusters; |
| 1216 | buf->f_bavail = resource.freeClusters; |
| 1217 | buf->f_files = 0; //??? how to get |
| 1218 | buf->f_ffree = resource.freeClusters; |
| 1219 | buf->f_favail = resource.freeClusters; |
| 1220 | buf->f_fsid = 0; //??? how to get |
| 1221 | buf->f_flag = ST_NOSUID; |
| 1222 | buf->f_namemax = 0; //??? how to get |
| 1223 | |
| 1224 | rc = FSUSER_IsSdmcWritable(&writable); |
| 1225 | if(R_FAILED(rc) || !writable) |
| 1226 | buf->f_flag |= ST_RDONLY; |
| 1227 | |
| 1228 | return 0; |
| 1229 | } |
| 1230 | |
| 1231 | r->_errno = archive_translate_error(rc); |
| 1232 | return -1; |
| 1233 | } |
| 1234 | |
| 1235 | /*! Truncate an open file |
| 1236 | * |
nothing calls this directly
no test coverage detected