Exemplo n.º 1
0
int has_directories(const char *base, const char *path)
{
    SceIoDirent dir;
    char buffer[256];
    int ret = 0;
    SceUID fd;

    sce_paf_private_snprintf(buffer, 256, "%s/%s", base, path);
    kprintf("checking %s\n", buffer);
    fd = sceIoDopen(buffer);
    if(fd >= 0) {
        sce_paf_private_memset(&dir, 0, sizeof(SceIoDirent));
        while(sceIoDread(fd, &dir) > 0) {
            if (FIO_S_ISDIR(dir.d_stat.st_mode) && dir.d_name[0] != '.') {
                ret = 1;
                break;
            }
        }
        sceIoDclose(fd);
    } else {
        ret = -1;
    }

    return ret;
}
Exemplo n.º 2
0
void testSet() {
	u8 data1[1024], data2[1024];
	u8 *result;

	printf("sce_paf_private_memset:\n");

	resetData(data1, data2);
	result = sce_paf_private_memset(data1, 2, 256);
	printf("2: %d vs %d, %d\n", checksumData(data1), checksumData(data2), result == data1);

	resetData(data1, data2);
	result = sce_paf_private_memset(data1, 255, 1);
	printf("255: %d vs %d, %d\n", checksumData(data1), checksumData(data2), result == data1);

	resetData(data1, data2);
	result = sce_paf_private_memset(data1, 1024, 1);
	printf("1024: %d vs %d, %d\n", checksumData(data1), checksumData(data2), result == data1);

	resetData(data1, data2);
	result = sce_paf_private_memset(data1, 255, 0);
	printf("0 bytes long: %d vs %d, %d\n", checksumData(data1), checksumData(data2), result == data1);

	printf("NULL 0 bytes long: %08X\n", (unsigned int) sce_paf_private_memset(NULL, 1024, 0));
	printf("Invalid 0 bytes long: %08X\n", (unsigned int) sce_paf_private_memset((u8 *) 0xDEADBEEF, 1024, 0));
}
Exemplo n.º 3
0
int is_game_folder(const char *base, const char *path)
{
    SceIoStat stat;
    char buffer[256];

    for(u32 i = 0; i < ITEMSOF(eboot_types); i++) {
        sce_paf_private_memset(&stat, 0 , sizeof(SceIoStat));
        sce_paf_private_snprintf(buffer, 256, "%s/%s/%s", base, path, eboot_types[i]);
        if(sceIoGetstat(buffer, &stat) >= 0) {
            return 1;
        }
    }
    return 0;
}
Exemplo n.º 4
0
void IndexCategories(Category *head[], const char *path, int location)
{
    SceIoDirent dir;
    SceUID fd;
    u64 mtime;
    char full_path[16];
    int match;

    sce_paf_private_strcpy(full_path, path);
    SET_DEVICENAME(full_path, location);

    if((fd = sceIoDopen(full_path)) < 0) {
        return;
    }

    kprintf("Indexing categories from %s, loc: %i\n", path, location);
    match = 0;
    sce_paf_private_memset(&dir, 0, sizeof(SceIoDirent));

    while(1) {
        if(sceIoDread(fd, &dir) <= 0) {
            kprintf("End of directory list\n");
            sceIoDclose(fd);
            break;
        }
        kprintf("checking [%s], length: %i\n", dir.d_name, sce_paf_private_strlen(dir.d_name));
        if (FIO_S_ISDIR(dir.d_stat.st_mode) && dir.d_name[0] != '.') {
            if(!config.prefix && !is_game_folder(full_path, dir.d_name)) {
                if(has_directories(full_path, dir.d_name) > 0) {
                    match = 1;
                }
            } else if(config.prefix && sce_paf_private_strncmp(dir.d_name, "CAT_", 4) == 0) {
                if(has_directories(full_path, dir.d_name) > 0) {
                    sce_paf_private_strcpy(dir.d_name, dir.d_name + 4);
                    match = 1;
                }
            }
            if(match) {
                match = 0;
                sceRtcGetTick((pspTime *) &dir.d_stat.st_mtime, &mtime);
                kprintf("Adding category: [%s]\n", dir.d_name);
                AddCategory(head, dir.d_name, mtime, location);
            }
        }
    }
}