aboutsummaryrefslogtreecommitdiff
path: root/bpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'bpeg.c')
-rw-r--r--bpeg.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/bpeg.c b/bpeg.c
index e4e585c..eb5e7a7 100644
--- a/bpeg.c
+++ b/bpeg.c
@@ -32,6 +32,7 @@
* ; <name> = <pat> <name> is defined to be <pat>
*/
#include <fcntl.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -78,7 +79,9 @@ int main(int argc, char *argv[])
int fd;
if ((fd=open("/etc/xdg/bpeg/builtins.bpeg", O_RDONLY)) >= 0)
load_grammar(g, readfile(fd));
- if ((fd=open("/etc/xdg/bpeg/builtins.bpeg", O_RDONLY)) >= 0)
+ char path[PATH_MAX] = {0};
+ sprintf(path, "%s/.config/bpeg/builtins.bpeg", getenv("HOME"));
+ if ((fd=open(path, O_RDONLY)) >= 0)
load_grammar(g, readfile(fd));
int i, npatterns = 0;
@@ -100,12 +103,19 @@ int main(int argc, char *argv[])
rule = "replace-all";
} else if (FLAG("--grammar") || FLAG("-g")) {
int fd;
- const char *grammarfile = flag;
- if (streq(grammarfile, "-")) {
+ if (streq(flag, "-")) {
fd = STDIN_FILENO;
} else {
- fd = open(grammarfile, O_RDONLY);
- check(fd >= 0, "Couldn't open file: %s", argv[2]);
+ fd = open(flag, O_RDONLY);
+ if (fd < 0) {
+ sprintf(path, "%s/.config/bpeg/%s.bpeg", getenv("HOME"), flag);
+ fd = open(path, O_RDONLY);
+ }
+ if (fd < 0) {
+ sprintf(path, "/etc/xdg/bpeg/%s.bpeg", flag);
+ fd = open(path, O_RDONLY);
+ }
+ check(fd >= 0, "Couldn't find grammar: %s", flag);
}
load_grammar(g, readfile(fd));
} else if (FLAG("--define") || FLAG("-d")) {