Example #1
0
void *vpl_realloc(void *ptr, size_t size)
{
	void *p;

	if(size == 0 && ptr != NULL) {
		vpl_free(ptr);

		return NULL;
	}

	p = vpl_alloc(size);

	if(p == NULL) {
		return p;
	}

	if(ptr == NULL) {
		memset(p, 0, size);
	} else {
		memcpy(p, ptr, size);
		vpl_free(ptr);
	}

	return p;
}
Example #2
0
static void set_translate_table_item(char ***table, char *linebuf, int pos, int nr_trans)
{
	if(*table == NULL) {
		*table = (char**)vpl_alloc(sizeof(char*) * nr_trans);
		memset(*table, 0, sizeof(char*) * nr_trans);
	}

	(*table)[pos] = vpl_strdup(linebuf);
}
Example #3
0
int load_translate_table(char ***table, char *file, int nr_trans)
{
	SceUID fd;
	char linebuf[128];
	char *read_alloc_buf;
	int i;

	if (table == NULL) {
		return -1;
	}

	*table = NULL;

	linebuf[sizeof(linebuf)-1] = '\0';
	fd = sceIoOpen(file, PSP_O_RDONLY, 0);

	if(fd < 0) {
		return fd;
	}

	read_alloc_buf = vpl_alloc(READ_BUF_SIZE + 64);

	if(read_alloc_buf == NULL) {
		sceIoClose(fd);
		return -1;
	}

	read_buf = (void*)(((u32)read_alloc_buf & (~(64-1))) + 64);
	i = 0;

	while(i < nr_trans) {
		if (read_lines(fd, linebuf, sizeof(linebuf)-1) < 0) {
			break;
		}

//		printf("linebuf %s\n", linebuf);
		set_translate_table_item(table, linebuf, i, nr_trans);
		i++;
	}

	if (i < nr_trans) {
		sceIoClose(fd);
		vpl_free(read_alloc_buf);
		return -1;
	}

	sceIoClose(fd);
	vpl_free(read_alloc_buf);

	return 0;
}
Example #4
0
char *vpl_strdup(const char *str)
{
	int len;
	char *p;

	len = strlen(str) + 1;
		
	p = vpl_alloc(len);

	if(p == NULL) {
		return p;
	}

	strcpy(p, str);

	return p;
}