Ejemplo n.º 1
0
int CopyFile(char* path, char* path2)
{
	int ret = 0;
	s32 fd = -1;
	s32 fd2 = -1;
	u64 lenght = 0LL;

	u64 pos = 0ULL;
	u64 readed = 0, writed = 0;

	char *mem = NULL;

	sysFSStat stat;

	ret= sysLv2FsStat(path, &stat);
	if(ret) goto skip;

	if(!memcmp(path, "/dev_hdd0/", 10) && !memcmp(path2, "/dev_hdd0/", 10))
	{
		if(strcmp(path, path2)==0) return ret;

		sysLv2FsUnlink(path2);
		return sysLv2FsLink(path, path2);
	}

    lenght = stat.st_size;

	ret = sysLv2FsOpen(path, 0, &fd, S_IRWXU | S_IRWXG | S_IRWXO, NULL, 0);
	if(ret) goto skip;

	ret = sysLv2FsOpen(path2, SYS_O_WRONLY | SYS_O_CREAT | SYS_O_TRUNC, &fd2, 0777, NULL, 0);
	if(ret) {sysLv2FsClose(fd);goto skip;}

	mem = malloc(0x100000);
	if (mem == NULL) return FAILED;

	while(pos < lenght)
	{
		readed = lenght - pos; if(readed > 0x100000ULL) readed = 0x100000ULL;
		ret=sysLv2FsRead(fd, mem, readed, &writed);
		if(ret<0) goto skip;
		if(readed != writed) {ret = 0x8001000C; goto skip;}

		ret=sysLv2FsWrite(fd2, mem, readed, &writed);
		if(ret<0) goto skip;
		if(readed != writed) {ret = 0x8001000C; goto skip;}

		pos += readed;
	}

skip:

	if(mem) free(mem);
	if(fd >=0) sysLv2FsClose(fd);
	if(fd2>=0) sysLv2FsClose(fd2);
	if(ret>0) ret = SUCCESS;

	return ret;
}
Ejemplo n.º 2
0
int param_sfo_app_ver(char * path, char *app_ver)
{
	s32 fd;
    u64 bytes;
    u64 position = 0LL;
    
    unsigned char *mem = NULL;
	
    if(!sysLv2FsOpen(path, 0, &fd, S_IRWXU | S_IRWXG | S_IRWXO, NULL, 0)) {
		unsigned len, pos, str;
		

        sysLv2FsLSeek64(fd, 0, 2, &position);
		len = (u32) position;

		mem = (unsigned char *) malloc(len+16);
		if(!mem) {sysLv2FsClose(fd); return -2;}

		memset(mem, 0, len+16);

		sysLv2FsLSeek64(fd, 0, 0, &position);
		
        if(sysLv2FsRead(fd, mem, len, &bytes)!=0) bytes =0LL;

        len = (u32) bytes;

		sysLv2FsClose(fd);

		str= (mem[8]+(mem[9]<<8));
		pos= (mem[0xc]+(mem[0xd]<<8));

		int indx=0;

		while(str<len) {
			if(mem[str]==0) break;

            if(!strcmp((char *) &mem[str], "APP_VER")) {
               
				strncpy(app_ver, (char *) &mem[pos], 5);
                app_ver[5] = 0;

                break;
                
			}

			while(mem[str]) str++;str++;
			pos+=(mem[0x1c+indx]+(mem[0x1d+indx]<<8));
			indx+=16;
		}

    if(mem) free(mem);

    return 0;
        
    }

	return -1;

}
Ejemplo n.º 3
0
int CopyFile(const char *source, const char *dest){
	s32 src = -1;
	s32 dst = -1;
	sysFSStat stats;

	char buffer[BLOCK_SIZE];
	u64  i;
	s32  ret;

	ret = sysLv2FsOpen(source, SYS_O_RDONLY, &src, 0, NULL, 0);
	if (ret)
		goto out;

	ret = sysLv2FsOpen(dest, SYS_O_WRONLY | SYS_O_CREAT | SYS_O_TRUNC, &dst, 0, NULL, 0);
	if (ret)
		goto out;

	sysLv2FsChmod(dest, S_IFMT | 0777);

	sysLv2FsFStat(src, &stats);

	for (i = 0; i < stats.st_size;) {
		u64 pos, read, written;

		sysLv2FsLSeek64(src, i, 0, &pos);
		sysLv2FsLSeek64(dst, i, 0, &pos);

		ret = sysLv2FsRead(src, buffer, sizeof(buffer), &read);
		if (ret || !read)
			break;

		ret = sysLv2FsWrite(dst, buffer, read, &written);
		if (ret || !written)
			break;

		i += written;
	}

out:
	if (src >= 0) sysLv2FsClose(src);
	if (dst >= 0) sysLv2FsClose(dst);

	return ret;
}
Ejemplo n.º 4
0
int bdemu_version(s32* bdemu_fd) {
	s32 fd, fd_mm;
	u64 size = 0, size_mm = 0;

	//Open possible BDEMU.BIN files.
	if(sysLv2FsOpen(BDEMU, SYS_O_RDONLY, &fd, 0660, NULL, 0) == 0) {
		sysFSStat stat;
		sysLv2FsFStat(fd, &stat);
		size = stat.st_size;
	}
	if(sysLv2FsOpen(BDEMU_MM, SYS_O_RDONLY, &fd_mm, 0660, NULL, 0) == 0) {
		sysFSStat stat;
		sysLv2FsFStat(fd_mm, &stat);
		size_mm = stat.st_size;
	}

	//Try to get newest version.
	if(size == BDEMU2_SIZE || size_mm == BDEMU2_SIZE) {
		if(size == BDEMU2_SIZE) {
			*bdemu_fd = fd;
		}
		else if(size_mm == BDEMU2_SIZE) {
			*bdemu_fd = fd_mm;
		}

		return 2;
	}
	else if(size == BDEMU1_SIZE || size_mm == BDEMU1_SIZE) {
		if(size == BDEMU1_SIZE) {
			*bdemu_fd = fd;
		}
		else if(size_mm == BDEMU1_SIZE) {
			*bdemu_fd = fd_mm;
		}

		return 1;
	}
	else {
		return 0;
	}
}
Ejemplo n.º 5
0
int Open_Log(char *file)
{
    if(fd_log >= 0) return -666;
    if(!sysLv2FsOpen(file, SYS_O_WRONLY | SYS_O_CREAT | SYS_O_TRUNC, &fd_log, 0777, NULL, 0))
    {
        sysLv2FsChmod(file, FS_S_IFMT | 0777);
        if(WriteToLog(VERSION_NAME)!=SUCCESS) {CloseLog(); return FAILED;}
        WriteToLog("-----[LOG]-----");
        return SUCCESS;
    } 
    fd_log = -1;
    verbose = 0;
    return FAILED;
}