Use guile-snarf

Because it looks cooler.

This way its easy to keep all the information about the function in
one place, and it makes it easier/more interesting to add new
functions later.
This commit is contained in:
Tom Willemsen 2012-08-01 21:12:09 +02:00
parent f7016aea18
commit 2f0fd8d03e
3 changed files with 12 additions and 6 deletions

1
src/.gitignore vendored
View file

@ -1,2 +1,3 @@
*.o
*.so
*.x

View file

@ -8,6 +8,10 @@ all: libguile-gitto-path.so
.PHONY: install uninstall
%.x: %.c
guile-snarf -o $@ $< $(CFLAGS)
gitto-path.o: gitto-path.x
libguile-gitto-path.so: gitto-path.o
$(CC) $(CFLAGS) -shared -o libguile-gitto-path.so $^

View file

@ -20,14 +20,15 @@
#include <stdlib.h>
#include <libguile.h>
SCM
realpath_wrapper(SCM str)
SCM_DEFINE(realpath_wrapper, "realpath", 1, 0, 0,
(SCM path),
"Transform PATH into an absolute path.")
{
char *path = scm_to_locale_string(str);
char *resolved_path = realpath(path, NULL);
char *relative_path = scm_to_locale_string(path);
char *resolved_path = realpath(relative_path, NULL);
SCM scm_resolved_path = scm_from_locale_string(resolved_path);
free(path);
free(relative_path);
free(resolved_path);
return scm_resolved_path;
@ -36,5 +37,5 @@ realpath_wrapper(SCM str)
void
init_gitto()
{
scm_c_define_gsubr("realpath", 1, 0, 0, realpath_wrapper);
#include "gitto-path.x"
}