hdd listing
Posted: Fri Nov 04, 2005 8:14 am
I am trying to list the partitions on the hd but it is not working correctly. The sizes and number of partitions looks correct but the names dont work.
Can someone please help me and tell where I am going wrong.
Here is some test code:
Can someone please help me and tell where I am going wrong.
Here is some test code:
Code: Select all
#include <tamtypes.h>
#include <sifrpc.h>
#include <debug.h>
#include <loadfile.h>
#include <iopheap.h>
#include <iopcontrol.h>
#include <kernel.h>
#include <fileXio_rpc.h>
#include <libhdd.h>
#include <string.h>
#define RESET_IOP
extern u8 *iomanx_irx;
extern int size_iomanx_irx;
extern u8 *filexio_irx;
extern int size_filexio_irx;
extern u8 *ps2dev9_irx;
extern int size_ps2dev9_irx;
extern u8 *ps2atad_irx;
extern int size_ps2atad_irx;
extern u8 *ps2hdd_irx;
extern int size_ps2hdd_irx;
int main()
{
#ifdef RESET_IOP
SifInitRpc(0);
SifIopReset("rom0:UDNL rom0:EELOADCNF", 0);
while (SifIopSync())
;
#endif
SifInitRpc(0);
init_scr();
scr_printf("HDD Test\n");
int ret;
ret = SifExecModuleBuffer(&iomanx_irx, size_iomanx_irx, 0, NULL, &ret);
scr_printf("Loaded iomanX.irx %d\n", ret);
ret = SifExecModuleBuffer(&ps2dev9_irx, size_ps2dev9_irx, 0, NULL, &ret);
scr_printf("Loaded ps2dev9.irx %d\n", ret);
ret = SifExecModuleBuffer(&ps2atad_irx, size_ps2atad_irx, 0, NULL, &ret);
scr_printf("Loaded ps2atad.irx %d\n", ret);
ret = SifExecModuleBuffer(&ps2hdd_irx, size_ps2hdd_irx, 0, NULL, &ret);
scr_printf("Loaded ps2hdd.irx %d\n", ret);
ret = SifExecModuleBuffer(&filexio_irx, size_filexio_irx, 0, NULL, &ret);
scr_printf("Loaded fileXio.irx %d\n", ret);
ret = fileXioInit();
scr_printf("fileXioInit %d\n", ret);
int fd;
fd = fileXioDopen("hdd0:/");
scr_printf("fileXioDopen %d\n", ret);
while (1)
{
iox_dirent_t l_dir_entry __attribute__((aligned(64)));
ret = fileXioDread(fd, &l_dir_entry);
if (ret == 0)
break;
if (( l_dir_entry.stat.attr & ATTR_SUB_PARTITION) ||
( l_dir_entry.stat.mode == FS_TYPE_EMPTY) ||
( l_dir_entry.stat.mode == 0x1337) ||
(strncmp(l_dir_entry.name, "__", 2) == 0))
continue;
scr_printf("fileXioDread %d\t", ret);
scr_printf("\"%s\"%c\t%x\t%x\t%d\n",
l_dir_entry.name,
FIO_S_ISDIR(l_dir_entry.stat.mode) ? '/' : ' ',
l_dir_entry.stat.mode,
l_dir_entry.stat.attr,
l_dir_entry.stat.size);
}
ret = fileXioDclose(fd);
scr_printf("fileXioDclose %d\n", ret);
return 0;
}