X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcasl2.c;h=493238ed8c1dd70f831b5b3e58ef9fde9cd7e014;hb=b2ffb8eaafe3d8de6e9d6674d45ff97ef2874019;hp=5ae4825b8d5c7eccfcdc77606dd893eebe58c6fc;hpb=406fd6490ad76b4573b6ce9f8d322d92f13d27d8;p=YACASL2.git diff --git a/src/casl2.c b/src/casl2.c index 5ae4825..493238e 100644 --- a/src/casl2.c +++ b/src/casl2.c @@ -29,7 +29,7 @@ CERRARRAY cerr_casl2[] = { }; bool addcerrlist_casl2() { - return addcerrlist_casl2(ARRAYSIZE(cerr_casl2), cerr_casl2); + return addcerrlist(sizeof(cerr_casl2), cerr_casl2); } /* 指定されたファイルにアセンブル結果を書込 */ @@ -64,7 +64,7 @@ int main(int argc, char *argv[]) WORD beginptr[argc]; char *objfile = NULL; const char *usage = - "Usage: %s [-slLaAtTdh] [-oO] [-M ] [-C ] FILE ...\n"; + "Usage: %s [-slLaAtTdh] [-oO] [-M ] [-C ] FILE ...\n"; while((opt = getopt_long(argc, argv, "tTdslLao::O::AM:C:h", longopts, NULL)) != -1) { switch(opt) { @@ -117,12 +117,11 @@ int main(int argc, char *argv[]) } } - #if 0 addcerrlist_casl2(); - #endif /* ソースファイルが指定されていない場合は終了 */ if(argv[optind] == NULL) { setcerr(126, NULL); /* source file is not specified */ + fprintf(stderr, "CASL2 error - %d: %s\n", cerrno, cerrmsg); goto casl2err; } /* COMET II仮想マシンのリセット */ @@ -145,7 +144,7 @@ int main(int argc, char *argv[]) fprintf(stdout, "\nAssemble %s (%d)\n", argv[i], pass); } if((status = assemble(argv[i], pass)) == false) { - exit(-1); + goto casl2err; } } if(pass == FIRST && asmode.label == true) { @@ -166,12 +165,13 @@ int main(int argc, char *argv[]) exec(); /* プログラム実行 */ } } + /* COMET II仮想マシンのシャットダウン */ + shutdown(); if(cerrno > 0) { - freecerr(); - exit(-1); + goto casl2err; } return 0; casl2err: - fprintf(stderr, "CASL2 error - %d: %s\n", cerrno, cerrmsg); + freecerr(); exit(-1); }