From eac82a359927bd544c7713dc9044cfec5d834172 Mon Sep 17 00:00:00 2001 From: Suleyman Farajli Date: Sun, 5 Jan 2025 23:48:47 +0400 Subject: better error messages for main function --- src/main.go | 16 +++++++++++----- 1 file 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) -- cgit v1.2.3