Exemplo n.º 1
0
int SDL_main(int argc, char *argv[])
{
	int vm;
	unsigned int size;
	uint8_t *data;
	char *srcfile = "profile3.dat";
	
	if(!vmfile_search(srcfile, &vm))
		vm = 1;

	FILE *fp;
	fp = fopen(srcfile, "rb");
	if (!fp)
	{
		stat("failed to open!");
		return 1;
	}

	fseek(fp, 0L, SEEK_END);
	size = ftell(fp);
	fseek(fp, 0L, SEEK_SET);
	
	data = (uint8_t*)malloc(size);
	
	if(!data) {
		fclose(fp);
		return 1;
	}

	memset(data, 0, size);

	fread(data, 1, size, fp);
	fclose(fp);

	save_to_vmu(vm, srcfile, (const char*)data, size);

	free(data);
	return 0;
}
Exemplo n.º 2
0
VMFILE *vm_fileopen(const char *fname, const char *mode)
{
	VMFILE *ret;
	int size = 0;
	int cnt = 0;
	int vm = 0;
	int i;

	for (i=0; i<MAX_FILES; i++)
		if(fh[i].used == 0)
			break;
	
	if (i>=MAX_FILES)
		return NULL;

	fh[i].used = 1;
	memset(fh[i]._buffer, 0, MAX_SIZE);
	char *_buffer = fh[i]._buffer;

	if (!strncmp(mode, "rb", 2)) {

		if (!vmfile_search(fname, &vm)) {
#ifndef NOSERIAL
			printf("Can't open %s", fname);
#endif

			goto _exit;
		}
		if (!load_from_vmu(vm, fname, _buffer, &size)) {
#ifndef NOSERIAL
			printf("load failed rb %s", fname);
#endif

			goto _exit;
		}

	} else if (!strncmp(mode, "wb", 2)) {

		if (!vmfile_search(fname, &vm)) {
#ifndef NOSERIAL
			printf("Create %s", fname);
#endif
		}

	} else if (!strncmp(mode, "r+", 2)) {

		if (!vmfile_search(fname, &vm)) {
#ifndef NOSERIAL
			printf("Can't open %s", fname);
#endif

			goto _exit;
		}

		if (!load_from_vmu(vm, fname, _buffer, &size)) {
			goto _exit;
		}
		
		cnt = size;

	} else {
#ifndef NOSERIAL
		fprintf(stderr,"vmu error");
#endif
		goto _exit;
	}

	ret = &fh[i]._iob;

	memset(ret->filename, 0, 32);
	strncpy(ret->filename, fname, 32);

	ret->_fd = i;
	ret->_base = _buffer;
	ret->_ptr = ret->_base;
	ret->_cnt = cnt;
	ret->_vm = vm;

	return ret;
_exit:
	fh[i].used = 0;
	return NULL;
}