13 void get_output_name(char *buf, size_t buflen, const char *inputname,
16 size_t last_dot = 0xffffffff;
18 for(const char *c = inputname; *c != 0; ++c) {
23 if(last_dot == 0xffffffff)
26 if(last_dot >= buflen)
27 panic("filename too long");
28 memcpy(buf, inputname, last_dot);
30 size_t extlen = strlen(newext) + 1;
31 if(extlen + last_dot >= buflen)
32 panic("filename too long");
33 memcpy(buf+last_dot, newext, extlen);
38 void compile(const char *fname)
43 FILE *in = fopen(fname, "r");
45 fprintf(stderr, "Couldn't open '%s': %s\n", fname, strerror(errno));
49 lexer_init(&lexer, in, fname);
52 lexer_next_token(&lexer, &token);
53 print_token(stdout, &token);
55 } while(token.type != T_EOF);
57 lexer_destroy(&lexer);
61 int main(int argc, char **argv)
66 for(int i = 1; i < argc; ++i) {