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.
