carl9170 firmware: fix [-Wpacked-not-aligned] warnings
[linux-libre-firmware.git] / as31 / as31 / as31.c
1 /* ----------------------------------------------------------------------
2  * FILE: as31.c
3  * PACKAGE: as31 - 8031/8051 Assembler.
4  *
5  * DESCRIPTION:
6  *      The file contains main(). It handles the arguments and makes
7  *      sure that pass 1 is done before pass 2 etc...
8  *
9  * REVISION HISTORY:
10  *      Jan.    19, 1990 - Created. (Ken Stauffer)
11  *      March,      2001, Paul Stoffregen: see ChangeLog for details
12  *      July,       2003, Bernd Porr: added ".inc" to include asm files.
13  *      March,  23, 2004, Alexander 'E-Razor' Krause: see ChangeLog for details
14  *      May,     6, 2004, Alexander 'E-Razor' Krause: see ChangeLog for details
15  *      May,    18, 2004, Martin Langer: see ChangeLog for details
16  *
17  * AUTHOR:
18  *      All code in this file written by Ken Stauffer (University of Calgary).
19  *      January, 1990. "Written by: Ken Stauffer"
20  */
21
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <string.h>
25
26 #include "as31.h"
27
28
29
30 int main(int argc, char **argv)
31 {
32         char *dashF=NULL, *dashA=NULL, *dashO=NULL;
33         int use_stdout=0, do_lst=0;
34         int r, i;
35
36         if (argc < 2) {
37                 showhelp(argv[0]);
38                 exit(1);
39         }
40
41         for (i=1; i<argc; i++ ) {
42                 if( argv[i][0] != '-' ) break;
43                 if( argv[i][1] == 'l' )
44                         do_lst = 1;
45                 else if( argv[i][1] == 'h' ) {
46                         showhelp(argv[0]);
47                         exit(1);
48                 }
49                 else if( argv[i][1] == 's' )
50                         use_stdout = 1;
51                 else if( argv[i][1] == 'v' ) {
52                         fprintf(stderr, "%s\n", VERSION);
53                         exit(1);
54                 } 
55                 else if( dashF == NULL && argv[i][1] == 'F' )
56                         dashF = argv[i]+2;
57                 else if( dashA == NULL && argv[i][1] == 'A' )
58                         dashA = argv[i]+2;
59                 else if( dashO == NULL && argv[i][1] == 'O' )
60                         dashO = argv[i]+2;
61                 else {
62                         fprintf(stderr,"Duplicate or unknown flag.\n");
63                         exit(1);
64                 }
65         }
66         if (i == argc) {
67                 fprintf(stderr,"Missing input file.\n");
68                 exit(1);
69         }
70
71         r = run_as31(argv[i], do_lst, use_stdout, dashF, dashA, dashO);
72         return r;
73 }
74
75 /* print list with command options */
76
77 void showhelp(const char *cmd)
78 {
79         fprintf(stderr, "AS31 %s\n", VERSION);
80         fprintf(stderr,
81                 "Usage: %s [-h] [-l] [-s] [-v] [-Aarg] [-Ffmt] [-Ofile] file.asm\n\n",
82                 cmd);
83         fprintf(stderr, "  -h       shows this help\n");
84         fprintf(stderr, "  -l       create list file\n");
85         fprintf(stderr, "  -s       send output to stdout\n");
86         fprintf(stderr, "  -v       print version number\n");
87         fprintf(stderr, "  -Aarg    optional output format argument\n");
88         fprintf(stderr, "  -Ffmt    output format ");
89         emitusage();
90         fprintf(stderr, " (default=hex)\n");
91         fprintf(stderr, "  -Ofile   send output to file\n\n");
92         fprintf(stderr, "Look at the manpage for more details.\n");
93 }
94
95 /* the assembler calls here to display any messages */
96
97 void mesg(const char *str)
98 {
99         if (str == NULL) str = "(null)";
100         fprintf(stderr, "%s", str);
101 }
102
103
104