@@ -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); |
@@ -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: |
@@ -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, |