From: Dale Weiler Date: Mon, 9 Apr 2012 11:09:57 +0000 (-0400) Subject: Some fixes and command line switches parsing X-Git-Tag: 0.1-rc1~714 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=fe6e142f85defcfec5e8b30d68e7348ab262d727;p=xonotic%2Fgmqcc.git Some fixes and command line switches parsing --- diff --git a/error.c b/error.c index c220d72..1bd792e 100644 --- a/error.c +++ b/error.c @@ -42,7 +42,10 @@ static const int error_color[] = { CON_RED, CON_CYAN, - CON_MAGENTA + CON_MAGENTA, + CON_BLUE, + CON_BROWN, + CON_WHITE }; #endif int error_total = 0; @@ -51,7 +54,8 @@ int error_max = 10; static const char *const error_list[] = { "Parsing Error:", "Lexing Error:", - "Internal Error:" + "Internal Error:", + "Compilation Error:" }; int error(int status, const char *msg, ...) { diff --git a/gmqcc b/gmqcc index 5ee6043..1c50928 100755 Binary files a/gmqcc and b/gmqcc differ diff --git a/gmqcc.h b/gmqcc.h index da17ac0..162eed4 100644 --- a/gmqcc.h +++ b/gmqcc.h @@ -1,7 +1,24 @@ /* - * Compiler error system, this handles the error printing, and managing - * such as after so many errors just stop the compilation, and other - * intereting like colors for the console. + * Copyright (C) 2012 + * Dale Weiler + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ #ifndef DPQCC_HDR #define DPQCC_HDR @@ -166,6 +183,7 @@ struct lex_file *lex_open (const char *); #define ERROR_LEX (SHRT_MAX+0) #define ERROR_PARSE (SHRT_MAX+1) #define ERROR_INTERNAL (SHRT_MAX+2) +#define ERROR_COMPILER (SHRT_MAX+3) int error(int, const char *, ...); /* parse.c */ diff --git a/main.c b/main.c index 8718a72..22662db 100644 --- a/main.c +++ b/main.c @@ -20,15 +20,49 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ +#include +#include +#include +#include #include "gmqcc.h" +int usage(const char *name) { + printf("Usage: %s -f infile -o outfile\n", name); + return 0; +} + int main(int argc, char **argv) { - if (argc <= 1) { - printf("Usage: %s infile.qc outfile\n", *argv); - return -1; + struct stat chk; + const char *ofile = NULL; + const char *ifile = NULL; + int i; + if (argc <= 2) + return usage(*argv); + + for (i=0; i