diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/.gitignore | 2 | ||||
-rw-r--r-- | src/Makefile | 20 | ||||
-rw-r--r-- | src/gitto-path.c | 21 |
3 files changed, 39 insertions, 4 deletions
diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..9d22eb4 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,2 @@ +*.o +*.so diff --git a/src/Makefile b/src/Makefile index 61946a0..584374e 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,11 +1,23 @@ DESTDIR ?= /usr/local +CFLAGS = $(shell pkg-config --cflags guile-2.0) -fPIC +LDFLAGS = $(shell pkg-config --libs guile-2.0) -all: +objects = gitto-path.o + +all: libguile-gitto-path.so .PHONY: install uninstall -install: gitto +libguile-gitto-path.so: gitto-path.o + $(CC) $(CFLAGS) -shared -o libguile-gitto-path.so $^ + +install-gitto: gitto install -Dm 755 $^ ${DESTDIR}/bin/$^ +install-libguile-gitto-path: libguile-gitto-path.so + install -Dm 755 $^ \ + $(shell pkg-config guile-2.0 --variable=extensiondir)/$^ +install: install-gitto install-libguile-gitto-path -uninstall: gitto - rm -f ${DESTDIR}/bin/$^ +uninstall: + rm -f ${DESTDIR}/bin/gitto + rm -f $(shell pkg-config guile-2.0 --variable=extensiondir)/libguile-gitto-path.so diff --git a/src/gitto-path.c b/src/gitto-path.c new file mode 100644 index 0000000..ad1400a --- /dev/null +++ b/src/gitto-path.c @@ -0,0 +1,21 @@ +#include <stdlib.h> +#include <libguile.h> + +SCM +realpath_wrapper(SCM str) +{ + char *path = scm_to_locale_string(str); + char *resolved_path = realpath(path, NULL); + SCM scm_resolved_path = scm_from_locale_string(resolved_path); + + free(path); + free(resolved_path); + + return scm_resolved_path; +} + +void +init_gitto() +{ + scm_c_define_gsubr("realpath", 1, 0, 0, realpath_wrapper); +} |