Пример #1
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;
	}
}
Пример #2
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;
}
Пример #3
0
	dst->st_ctime = src->st_ctime;
	dst->st_size = src->st_size;
	dst->st_blksize = src->st_blksize;

}

int
_DEFUN(__librt_fstat_r,(r,fd,st),
	   struct _reent *r _AND
	   int fd _AND
	   struct stat *st)
{
	s32 ret = 0;
	sysFSStat stat;

	ret = sysLv2FsFStat(fd,&stat);
	if(!ret && st) convertLv2Stat(st,&stat);
	
	return lv2errno_r(r,ret);
}

int
_DEFUN(__librt_fstat64_r,(r,fd,st),
	   struct _reent *r _AND
	   int fd _AND
	   struct stat *st)
{
	s32 ret = 0;
	sysFSStat stat;

	ret = sysLv2FsFStat(fd,&stat);