shutdown関数の追加
[YACASL2.git] / src / casl2.c
index 5ae4825..d47abcd 100644 (file)
@@ -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<OUTFILE>] [-M <memorysize>] [-C <clocks>] FILE ...\n";
+        "Usage: %s [-slLaAtTdh] [-oO<OBJECTFILE>] [-M <MEMORYSIZE>] [-C <CLOCKS>] 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,12 @@ int main(int argc, char *argv[])
             exec();    /* プログラム実行 */
         }
     }
+    shutdown();
     if(cerrno > 0) {
-        freecerr();
-        exit(-1);
+        goto casl2err;
     }
     return 0;
 casl2err:
-    fprintf(stderr, "CASL2 error - %d: %s\n", cerrno, cerrmsg);
+    freecerr();
     exit(-1);
 }