YACASL2
Loading...
Searching...
No Matches
casl2rev.c
Go to the documentation of this file.
1#define _GNU_SOURCE
2#include "package.h"
3#include "disassemble.h"
4#include "load.h"
5
9static struct option longopts[] = {
10 {"version", no_argument, NULL, 'v' },
11 {"help", no_argument, NULL, 'h'},
12 {0, 0, 0, 0},
13};
14
23int main(int argc, char *argv[])
24{
25 int opt = 0;
26 int stat = 0;
27 const char *version = PACKAGE_VERSION;
28 const char *cmdversion = "disassemble of YACASL2 version %s\n";
29 const char *usage = "Usage: %s [-vh] FILE\n";
30
31 /* エラーの定義 */
32 cerr_init();
34
35 /* オプションの処理 */
36 while((opt = getopt_long(argc, argv, "vh", longopts, NULL)) != -1) {
37 switch(opt) {
38 case 'v':
39 fprintf(stdout, cmdversion, version);
40 goto casl2revfin;
41 case 'h':
42 fprintf(stdout, usage, argv[0]);
43 goto casl2revfin;
44 case '?':
45 fprintf(stderr, usage, argv[0]);
46 setcerr(212, ""); /* invalid option */
47 goto casl2revfin;
48 }
49 }
50 if(argv[optind] == NULL) {
51 setcerr(211, ""); /* object file not specified */
52 fprintf(stderr, "disassemble error - %d: %s\n", cerr->num, cerr->msg);
53 goto casl2revfin;
54 }
55 disassemble_file(argv[optind]); /* プログラム実行 */
56casl2revfin:
57 if(cerr->num > 0) {
58 stat = 1;
59 }
60 freecerr(); /* エラーの解放 */
61 return stat;
62}
static struct option longopts[]
casl2コマンドのオプション
Definition casl2.c:24
int main(int argc, char *argv[])
casl2revコマンドのメイン
Definition casl2rev.c:23
CERR * cerr
現在のエラー
Definition cerr.c:9
void freecerr()
エラーリストと現在のエラーを解放する
Definition cerr.c:72
void cerr_init()
エラーを初期化する
Definition cerr.c:3
void setcerr(int num, const char *str)
現在のエラーを設定する
Definition cerr.c:45
bool disassemble_file(const char *file)
CASL IIのオブジェクトファイルを逆アセンブルし、標準出力へ出力する
void addcerrlist_load()
アセンブル結果読み込みエラーをエラーリストに追加する
Definition load.c:15
#define PACKAGE_VERSION
Definition version.h:4