- fd = 2;
- }
- next_vec();
- write_pos = buffer;
- write_int(length);
- writev(fd, iovecs, cur_vec-iovecs);
-}
-
-GLenum cur_error = GL_NO_ERROR;
-
-static void check_error()
-{
- GLenum (*orig_glGetError)() = 0;
- GLenum code;
- if(!orig_glGetError)
- orig_glGetError = glsym("glGetError");
- code = orig_glGetError();
- if(code!=GL_NO_ERROR)
- {
- begin_packet(FUNC_GLDERROR);
- write_int(code);
- send_packet();
- if(cur_error==GL_NO_ERROR)
- cur_error = code;
- }
-}
-
-GLenum APIENTRY glGetError()
-{
- GLenum ret = cur_error;
- cur_error = GL_NO_ERROR;
- begin_packet(FUNC_GLGETERROR);
- write_int(ret);
- send_packet();
- return ret;
-}
-
-void (*glXGetProcAddress(const GLubyte *procname))(void)
-{
- void *handle = 0;
- void (*ret)() = 0;
-
- if(glsym((const char *)procname))
- {
- handle = dlopen(NULL, RTLD_LAZY);
- ret = dlsym(handle, (const char *)procname);
+ {
+ var = getenv("GLWRAP_FILE");
+ if(var)
+ {
+ fd = open(var, O_WRONLY|O_CREAT|O_TRUNC, 0644);
+ if(fd==-1)
+ {
+ fprintf(stderr, "Couldn't open dumpfile %s for output: %s", var, strerror(errno));
+ abort();
+ }
+ }
+ else
+ fd = 2;
+ }