Browse Source

glsl/apps: Always write out error condition.

tags/7.8-rc1
Michal Krol 16 years ago
parent
commit
69bdd47dba
3 changed files with 60 additions and 18 deletions
  1. 15
    6
      src/glsl/apps/purify.c
  2. 21
    7
      src/glsl/apps/tokenise.c
  3. 24
    5
      src/glsl/apps/version.c

+ 15
- 6
src/glsl/apps/purify.c View File

@@ -54,14 +54,26 @@ main(int argc,
size = ftell(in);
fseek(in, 0, SEEK_SET);

out = fopen(argv[2], "wb");
if (!out) {
fclose(in);
return 1;
}

inbuf = malloc(size + 1);
if (!inbuf) {
fprintf(out, "$OOMERROR\n");

fclose(out);
fclose(in);
return 1;
}

if (fread(inbuf, 1, size, in) != size) {
fprintf(out, "$READERROR\n");

free(inbuf);
fclose(out);
fclose(in);
return 1;
}
@@ -72,18 +84,15 @@ main(int argc,
memset(&options, 0, sizeof(options));

if (sl_pp_purify(inbuf, &options, &outbuf)) {
fprintf(out, "$PURIFYERROR\n");

free(inbuf);
fclose(out);
return 1;
}

free(inbuf);

out = fopen(argv[2], "wb");
if (!out) {
free(outbuf);
return 1;
}

fwrite(outbuf, 1, strlen(outbuf), out);

free(outbuf);

+ 21
- 7
src/glsl/apps/tokenise.c View File

@@ -60,14 +60,26 @@ main(int argc,
size = ftell(in);
fseek(in, 0, SEEK_SET);

out = fopen(argv[2], "wb");
if (!out) {
fclose(in);
return 1;
}

inbuf = malloc(size + 1);
if (!inbuf) {
fprintf(out, "$OOMERROR\n");

fclose(out);
fclose(in);
return 1;
}

if (fread(inbuf, 1, size, in) != size) {
fprintf(out, "$READERROR\n");

free(inbuf);
fclose(out);
fclose(in);
return 1;
}
@@ -78,32 +90,34 @@ main(int argc,
memset(&options, 0, sizeof(options));

if (sl_pp_purify(inbuf, &options, &outbuf)) {
fprintf(out, "$PURIFYERROR\n");

free(inbuf);
fclose(out);
return 1;
}

free(inbuf);

if (sl_pp_context_init(&context)) {
fprintf(out, "$CONTEXERROR\n");

free(outbuf);
fclose(out);
return 1;
}

if (sl_pp_tokenise(&context, outbuf, &tokens)) {
fprintf(out, "$ERROR: `%s'\n", context.error_msg);

sl_pp_context_destroy(&context);
free(outbuf);
fclose(out);
return 1;
}

free(outbuf);

out = fopen(argv[2], "wb");
if (!out) {
sl_pp_context_destroy(&context);
free(tokens);
return 1;
}

for (i = 0; tokens[i].token != SL_PP_EOF; i++) {
switch (tokens[i].token) {
case SL_PP_WHITESPACE:

+ 24
- 5
src/glsl/apps/version.c View File

@@ -60,14 +60,26 @@ main(int argc,
size = ftell(in);
fseek(in, 0, SEEK_SET);

out = fopen(argv[2], "wb");
if (!out) {
fclose(in);
return 1;
}

inbuf = malloc(size + 1);
if (!inbuf) {
fprintf(out, "$OOMERROR\n");

fclose(out);
fclose(in);
return 1;
}

if (fread(inbuf, 1, size, in) != size) {
fprintf(out, "$READERROR\n");

free(inbuf);
fclose(out);
fclose(in);
return 1;
}
@@ -78,39 +90,46 @@ main(int argc,
memset(&options, 0, sizeof(options));

if (sl_pp_purify(inbuf, &options, &outbuf)) {
fprintf(out, "$PURIFYERROR\n");

free(inbuf);
fclose(out);
return 1;
}

free(inbuf);

if (sl_pp_context_init(&context)) {
fprintf(out, "$CONTEXERROR\n");

free(outbuf);
fclose(out);
return 1;
}

if (sl_pp_tokenise(&context, outbuf, &tokens)) {
fprintf(out, "$ERROR: `%s'\n", context.error_msg);

sl_pp_context_destroy(&context);
free(outbuf);
fclose(out);
return 1;
}

free(outbuf);

if (sl_pp_version(&context, tokens, &version, &tokens_eaten)) {
fprintf(out, "$ERROR: `%s'\n", context.error_msg);

sl_pp_context_destroy(&context);
free(tokens);
fclose(out);
return -1;
}

sl_pp_context_destroy(&context);
free(tokens);

out = fopen(argv[2], "wb");
if (!out) {
return 1;
}

fprintf(out,
"%u\n%u\n",
version,

Loading…
Cancel
Save