diff options
author | Suleyman Farajli <suleyman@farajli.net> | 2025-01-05 23:48:47 +0400 |
---|---|---|
committer | Suleyman Farajli <suleyman@farajli.net> | 2025-01-05 23:48:47 +0400 |
commit | eac82a359927bd544c7713dc9044cfec5d834172 (patch) | |
tree | 2498b2e6e8ebba901c57be097c2ff78b473055e6 | |
parent | 2c2885e65933091ed3b30864f3b9b8fcfa529467 (diff) |
better error messages for main function
-rw-r--r-- | src/main.go | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/main.go b/src/main.go index 142a96d..e45500a 100644 --- a/src/main.go +++ b/src/main.go @@ -583,23 +583,29 @@ func compile(ops[] Operation, w io.Writer) { func main() { argv := os.Args; argc := len(argv); + progname := argv[0] suffix := ".gorth" if argc != 2 { - /* FIXME: better error message*/ - panic("Invaid usage"); + fmt.Fprintf(os.Stderr, "%s: Error: expected one input file.\n", progname) + os.Exit(1) } srcFile := argv[argc - 1] if !strings.HasSuffix(srcFile, suffix) || len(srcFile) < 7 { - /* FIXME: better error message*/ - panic("Doesn't look like a gorth file") + fmt.Fprintf(os.Stderr, "%s: Error: invalid file format '%s'.\n", progname, srcFile) + os.Exit(1) + } + _, err := os.Stat(srcFile) + if err != nil { + fmt.Fprintf(os.Stderr, "%s: Error: failed to stat file '%s'.\n", progname, srcFile) + os.Exit(1) } assemFile := srcFile[:len(srcFile) - 6] + ".s" file, err := os.Create(assemFile) if err != nil { /* FIXME: better error message*/ - panic("failed to create file") + fmt.Fprintf(os.Stderr, "%s: Error: failed create output file '%s'.\n", progname, file) } tokens := tokenize(argv[argc - 1]) tokens = preprocess(tokens) |