glsl/apps: Always write out error condition.
authorMichal Krol <michal@vmware.com>
Wed, 16 Sep 2009 20:04:22 +0000 (22:04 +0200)
committerMichal Krol <michal@vmware.com>
Wed, 16 Sep 2009 20:04:22 +0000 (22:04 +0200)
src/glsl/apps/process.c

index a11f9741f5ae2f81479e89190b55b5d50e6f7464..678b1005f89d6e7320fdb0710c335f1a04f06ea3 100644 (file)
@@ -64,14 +64,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;
    }
@@ -82,36 +94,41 @@ 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)) {
-      sl_pp_context_destroy(&context);
-      free(tokens);
-      return -1;
-   }
+      fprintf(out, "$ERROR: `%s'\n", context.error_msg);
 
-   out = fopen(argv[2], "wb");
-   if (!out) {
       sl_pp_context_destroy(&context);
       free(tokens);
-      return 1;
+      fclose(out);
+      return -1;
    }
 
    if (sl_pp_process(&context, &tokens[tokens_eaten], &outtokens)) {