summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuleyman Farajli <suleyman@farajli.net>2025-01-05 23:48:47 +0400
committerSuleyman Farajli <suleyman@farajli.net>2025-01-05 23:48:47 +0400
commiteac82a359927bd544c7713dc9044cfec5d834172 (patch)
tree2498b2e6e8ebba901c57be097c2ff78b473055e6
parent2c2885e65933091ed3b30864f3b9b8fcfa529467 (diff)
better error messages for main function
-rw-r--r--src/main.go16
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)