アセンブルの整理
[YACASL2.git] / src / assemble.c
index 67664ef..fc7aed1 100644 (file)
@@ -634,19 +634,20 @@ void addcerrlist_assemble()
 
 /**
  * 指定された名前のファイルをアセンブル
- * 2回実行される
+ * 1回目ではラベルを登録し、2回目ではラベルからアドレスを読み込む
+ * アセンブル完了時はtrue、エラー発生時はfalseを返す
  */
-bool assemble(const char *file, PASS pass)
+bool assemblefile(const char *file, PASS pass)
 {
     int lineno = 0;
-    bool status = true;
-    char *line = malloc_chk(LINESIZE + 1, "assemble.line");
+    char *line;
     FILE *fp;
 
     if((fp = fopen(file, "r")) == NULL) {
         perror(file);
         return false;
     }
+    line = malloc_chk(LINESIZE + 1, "assemble.line");
     while(fgets(line, LINESIZE, fp)) {
         lineno++;
         if((pass == FIRST && asmode.src == true) ||
@@ -661,11 +662,10 @@ bool assemble(const char *file, PASS pass)
     if(cerr->num > 0) {
         fprintf(stderr, "Assemble error - %d: %s\n", cerr->num, cerr->msg);
         printline(stderr, file, lineno, line);
-        status = false;
     }
     FREE(line);
     fclose(fp);
-    return status;
+    return (cerr->num == 0) ? true : false;
 }
 
 /**