1 typedef unsigned int size_t;
2 typedef struct _IO_FILE FILE;
3 extern struct _IO_FILE *stdin;
5 __LC_CTYPE = 0, __LC_NUMERIC = 1, __LC_TIME = 2, __LC_COLLATE =
6 3, __LC_MONETARY = 4, __LC_MESSAGES = 5, __LC_ALL = 6, __LC_PAPER =
7 7, __LC_NAME = 8, __LC_ADDRESS = 9, __LC_TELEPHONE =
8 10, __LC_MEASUREMENT = 11, __LC_IDENTIFICATION = 12
10 typedef struct yasm_objfmt_base {
11 const char *extension;
13 static char *obj_filename = ((void *)0), *in_filename = ((void *)0);
14 static const yasm_objfmt_module *cur_objfmt_module = ((void *)0);
15 static int preproc_only = 0;
16 static int generate_make_dependencies = 0;
17 static char *replace_extension(const char *orig, const char *ext,
19 static int do_preproc_only(FILE * in)
21 const char *base_filename;
22 if (!obj_filename || generate_make_dependencies) {
23 if (generate_make_dependencies && !obj_filename) {
25 obj_filename = yasm__xstrdup("yasm.out");
27 if (base_filename[0] == '\0')
29 yasm__xstrdup("yasm.out");
32 replace_extension(base_filename,
40 static int do_assemble(FILE * in)
42 const char *base_filename;
45 obj_filename = yasm__xstrdup("yasm.out");
47 if (base_filename[0] == '\0')
48 obj_filename = yasm__xstrdup("yasm.out");
51 replace_extension(base_filename,
53 extension, "yasm.out");
57 int main(int argc, char *argv[])
59 FILE *in = ((void *)0);
61 return do_preproc_only(in);
62 return do_assemble(in);
64 static char *replace_extension(const char *orig, const char *ext,
68 out = yasm_xmalloc(strlen(orig) + (ext ? (strlen(ext) + 2) : 1));
70 if (ext && __extension__( {
71 size_t __s1_len, __s2_len;
72 (__builtin_constant_p(outext)
73 && __builtin_constant_p(ext)
75 strlen(outext), __s2_len =
77 (!((size_t) (const void *)
79 (size_t) (const void *)(outext)
80 == 1) || __s1_len >= 4)
82 (!((size_t) (const void *)
84 (size_t) (const void *)(ext) ==
87 4)) ? __builtin_strcmp(outext,
89 : (__builtin_constant_p(outext)
91 ((size_t) (const void *)
93 (size_t) (const void *)(outext) ==
98 4) ? (__builtin_constant_p(ext)
100 ((size_t) (const void *)
105 __builtin_strcmp(outext,
124 (((__const unsigned char *)(__const char *)(outext))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) {
127 ))): (__builtin_constant_p(ext) && ((size_t) (const void *)((ext) + 1) - (size_t) (const void *)(ext) == 1) && (__s2_len = strlen(ext), __s2_len < 4) ? (__builtin_constant_p(outext) && ((size_t) (const void *)((outext) + 1) - (size_t) (const void *)(outext) == 1) ? __builtin_strcmp(outext, ext) : (__extension__( {
148 ((__const unsigned char *)(__const char *)(ext))[0]; if (__s2_len > 0 && __result == 0) {
151 ))): __builtin_strcmp(outext, ext))));}
153 print_error(dcgettext
155 "file name already ends in `.%s': output will be in `%s'",
156 __LC_MESSAGES), ext, def);