062eb6b72d4a18100a5f0166e7234ab98c112810
2 * Copyright © 2010 Intel Corporation
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
24 #include <sys/types.h>
31 #include "main/mtypes.h"
32 #include "main/shaderobj.h"
37 _mesa_reference_shader(struct gl_context
*ctx
, struct gl_shader
**ptr
,
43 /* Read from fd until EOF and return a string of everything read.
46 load_text_fd (void *ctx
, int fd
)
50 ssize_t text_size
= 0;
51 ssize_t total_read
= 0;
55 if (total_read
+ CHUNK
+ 1 > text_size
) {
56 text_size
= text_size
? text_size
* 2 : CHUNK
+ 1;
57 text
= talloc_realloc_size (ctx
, text
, text_size
);
59 fprintf (stderr
, "Out of memory\n");
63 bytes
= read (fd
, text
+ total_read
, CHUNK
);
65 fprintf (stderr
, "Error while reading: %s\n",
78 text
[total_read
] = '\0';
84 load_text_file(void *ctx
, const char *filename
)
89 if (filename
== NULL
|| strcmp (filename
, "-") == 0)
90 return load_text_fd (ctx
, STDIN_FILENO
);
92 fd
= open (filename
, O_RDONLY
);
94 fprintf (stderr
, "Failed to open file %s: %s\n",
95 filename
, strerror (errno
));
99 text
= load_text_fd (ctx
, fd
);
107 main (int argc
, char *argv
[])
109 char *filename
= NULL
;
110 void *ctx
= talloc(NULL
, void*);
111 char *info_log
= talloc_strdup(ctx
, "");
119 shader
= load_text_file (ctx
, filename
);
123 ret
= preprocess(ctx
, &shader
, &info_log
, NULL
, API_OPENGL
);
125 printf("%s", shader
);
126 fprintf(stderr
, "%s", info_log
);