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.
28 #include "main/mtypes.h"
29 #include "main/shaderobj.h"
34 _mesa_reference_shader(struct gl_context
*ctx
, struct gl_shader
**ptr
,
40 /* Read from fp until EOF and return a string of everything read.
43 load_text_fp (void *ctx
, FILE *fp
)
48 size_t total_read
= 0;
52 if (total_read
+ CHUNK
+ 1 > text_size
) {
53 text_size
= text_size
? text_size
* 2 : CHUNK
+ 1;
54 text
= reralloc_size (ctx
, text
, text_size
);
56 fprintf (stderr
, "Out of memory\n");
60 bytes
= fread (text
+ total_read
, 1, CHUNK
, fp
);
68 text
[total_read
] = '\0';
74 load_text_file(void *ctx
, const char *filename
)
79 if (filename
== NULL
|| strcmp (filename
, "-") == 0)
80 return load_text_fp (ctx
, stdin
);
82 fp
= fopen (filename
, "r");
84 fprintf (stderr
, "Failed to open file %s: %s\n",
85 filename
, strerror (errno
));
89 text
= load_text_fp (ctx
, fp
);
97 main (int argc
, char *argv
[])
99 char *filename
= NULL
;
100 void *ctx
= ralloc(NULL
, void*);
101 char *info_log
= ralloc_strdup(ctx
, "");
109 shader
= load_text_file (ctx
, filename
);
113 ret
= preprocess(ctx
, &shader
, &info_log
, NULL
, API_OPENGL
);
115 printf("%s", shader
);
116 fprintf(stderr
, "%s", info_log
);