Code: Select all
int fioRecursiveDelete(u8* folder)
{
int ret;
fio_dirent_t dirbuf;
u8 path[1025];
int fd, rv;
printf("fioRecursiveDelete %s\n", folder);
if ((fd= fioDopen(folder)) < 0) return fd;
while((rv=fioDread(fd, &dirbuf)))
{
strcpy(path,folder);
strcat(path,"/");
strcat(path,(char *)&dirbuf.name);
printf("File: %s Attr:%04x\n", path, dirbuf.stat.mode);
if(dirbuf.stat.mode & FIO_SO_IFREG) {printf("Deleteing %s\n", path);ret = fioRemove(path);}
else if((dirbuf.stat.mode & FIO_SO_IFDIR) && (strncmp((char *)&dirbuf.name,".",1)))
{
if ((ret = fioRecursiveDelete(path) < 0)) goto error1;
if ((ret = FileRmdir(path)) < 0) goto error1;
}
}
ret = 0;
error1:
fioDclose(fd);
FileRmdir(folder);
return ret;
}
And here's some sample output:
Code: Select all
fioRecursiveDelete mc0:/BASLUS-20827MANHUNT
dopen name mc0:/BASLUS-20827MANHUNT
dopen fd = 2
File: mc0:/BASLUS-20827MANHUNT/. Attr:0027
File: mc0:/BASLUS-20827MANHUNT/.. Attr:0027
File: mc0:/BASLUS-20827MANHUNT/icon.sys Attr:0017
Deleteing mc0:/BASLUS-20827MANHUNT/icon.sys
remove file mc0:/BASLUS-20827MANHUNT/icon.sys
mkdir name mc0:/BASLUS-20827MANHUNT/icon.sys
File: mc0:/BASLUS-20827MANHUNT/PS2VIEW.ICO Attr:0017
Deleteing mc0:/BASLUS-20827MANHUNT/PS2VIEW.ICO
remove file mc0:/BASLUS-20827MANHUNT/PS2VIEW.ICO
mkdir name mc0:/BASLUS-20827MANHUNT/PS2VIEW.ICO
File: mc0:/BASLUS-20827MANHUNT/BASLUS-20827MANHUNT Attr:0017
Deleteing mc0:/BASLUS-20827MANHUNT/BASLUS-20827MANHUNT
remove file mc0:/BASLUS-20827MANHUNT/BASLUS-20827MANHUNT
File: mc0:/BASLUS-20827MANHUNT/MANHUNT0.SAV Attr:0017
Deleteing mc0:/BASLUS-20827MANHUNT/MANHUNT0.SAV
remove file mc0:/BASLUS-20827MANHUNT/MANHUNT0.SAV
mkdir name mc0:/BASLUS-20827MANHUNT/MANHUNT0.SAV
rmdir name mc0:/BASLUS-20827MANHUNT
Once I get this basic stuff done, it shouldn't be long before I can release the program. And, once I finish this thing, I can start work on a PS2 HD based game.