void test_read_file(char *filename) { long size; char *content; content = io_read_file(filename, &size); assert(content != NULL); assert(size != 0); free(content); }
void test_write_file() { long size; char *content; io_write_file(TEST_PATH, TEST_CONTENT); content = io_read_file(TEST_PATH, &size); assert(strncmp(TEST_CONTENT, content, size) == 0); free(content); remove(TEST_PATH); }
int shader_load(GLenum type, const char *file, GLuint *id) { GLuint shader; GLint status, len; char *data; assert((type == GL_VERTEX_SHADER || type == GL_FRAGMENT_SHADER) && file != NULL && id != NULL); data = io_read_file(file); if (!data) return 0; shader = glCreateShader(type); glShaderSource(shader, 1, (const GLchar **)&data, NULL); glCompileShader(shader); #ifdef DEBUG_GL fprintf(stderr, "Compile %s\n", file); fprintf(stderr, "Shader {\n%s\n}", *((const GLchar **)&data)); #endif // DEBUG_GL free(data); glGetShaderiv(shader, GL_COMPILE_STATUS, &status); if (status == GL_FALSE) { glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &len); data = malloc(len); if (!data) { puts("Insufficient memory!"); glDeleteShader(shader); return 0; } glGetShaderInfoLog(shader, len, NULL, data); fputs("*** SHADER COMPILATION FAILED ***\n", stderr); fprintf(stderr, "%s\n", data); free(data); return 0; } *id = shader; return 1; }
wavefront_obj_t *wavefront_load(const char *file) { wavefront_obj_t *obj; char *data; data = io_read_file(file); if (!data) return NULL; obj = malloc(sizeof(wavefront_obj_t)); memset(obj, 0, sizeof(wavefront_obj_t)); if(wavefront_parse(obj, data)) { free(obj); return NULL; } free(data); return obj; }