X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcasl2.c;h=1f18a40194e9134c89e0f63b2f59e6db38399f3d;hb=de18494f8acd2f8ca87b86c54bfee1c2094c0d83;hp=d17922ca607d618dc77109e159c669611af73319;hpb=d1f82970bf7d41db2fea11b08cd8e308f6cb8138;p=YACASL2.git diff --git a/src/casl2.c b/src/casl2.c index d17922c..1f18a40 100644 --- a/src/casl2.c +++ b/src/casl2.c @@ -4,10 +4,10 @@ #define _GNU_SOURCE #include +#include "cmem.h" +#include "cerr.h" #include "assemble.h" #include "exec.h" -#include "cerr.h" -#include "cmem.h" /** * casl2コマンドのオプション @@ -33,7 +33,7 @@ static struct option longopts[] = { /** * casl2のエラー定義 */ -static CERR cerr_casl2[] = { +CERR cerr_casl2[] = { { 126, "no source file" }, }; @@ -61,7 +61,9 @@ int main(int argc, char *argv[]) "Usage: %s [-slLaAtTdh] [-oO[]] [-M ] [-C ] FILE1[ FILE2 ...]\n"; cerr_init(); - addcerrlist(sizeof(cerr_casl2), cerr_casl2); + addcerrlist(ARRAYSIZE(cerr_casl2), cerr_casl2); + addcerrlist_assemble(); + addcerrlist_exec(); /* オプションの処理 */ while((opt = getopt_long(argc, argv, "tTdslLao::O::AM:C:h", longopts, NULL)) != -1) { switch(opt) { @@ -141,6 +143,7 @@ int main(int argc, char *argv[]) fprintf(stdout, "\nAssemble %s (%d)\n", argv[i], pass); } if((res = assemble(argv[i], pass)) == false) { + freecerr(); /* エラーの解放 */ exit(-1); } } @@ -161,6 +164,7 @@ int main(int argc, char *argv[]) if(res == true) { if(objfile != NULL) { outassemble(objfile); + free_chk(objfile, "objfile"); } if(asmode.onlyassemble == false) { create_code_type(); /* 命令のコードとタイプがキーのハッシュ表を作成 */ @@ -173,8 +177,6 @@ int main(int argc, char *argv[]) if(cerr->num > 0) { status = -1; } - free_chk(objfile, "objfile"); - /* エラーの解放 */ - freecerr(); + freecerr(); /* エラーの解放 */ return status; }