Mercurial > baum
changeset 62:80df58d240b2 default tip
merge
author | meillo@marmaro.de |
---|---|
date | Thu, 13 Nov 2008 13:19:42 +0100 (2008-11-13) |
parents | 73de2151aebd (current diff) be637b2ea482 (diff) |
children | |
files | baum.c |
diffstat | 5 files changed, 45 insertions(+), 57 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Thu Nov 13 13:15:11 2008 +0100 +++ b/.hgtags Thu Nov 13 13:19:42 2008 +0100 @@ -1,3 +1,4 @@ 69a7cf2f0c06a5e0f0609f80c875e2ceb7ffa9c2 0.1 3903effae5efcba191a6b459da457a3cff897c22 0.2 f9fc4c4f9e3d666dad2bd1efa627fb646334433c 0.3 +7adeee76ce3e24c4ab12f16d48ed4eab09a7daed 0.4
--- a/Makefile Thu Nov 13 13:15:11 2008 +0100 +++ b/Makefile Thu Nov 13 13:19:42 2008 +0100 @@ -9,7 +9,7 @@ DOCS=LICENSE README ChangeLog TODO examples # paths -PREFIX = /usr +PREFIX = /usr/local BINDIR = ${PREFIX}/bin MANDIR = ${PREFIX}/share/man @@ -26,9 +26,10 @@ DEP = baum.h +.PHONY: all +all: options $(NAME) -all: options build - +.PHONY: options options: @echo build options: @echo "CC = ${CC}" @@ -37,56 +38,48 @@ @echo "LDFLAGS = ${LDFLAGS}" @echo -build: options ${NAME} ${NAME}: $(OBJ) ${DEP} $(CC) $(LDFLAGS) $(OBJ) -o $@ + ${OBJ}: ${DEP} -car: clean all -debug: all - gdb ${NAME} - +.PHONY: strip strip: ${NAME} @echo stripping ${NAME} @strip ${NAME} -dist: build changelog + +.PHONY: dist +dist: all changelog @echo "generating tarball" @mkdir -p ${NV} @cp -rf ${SRC} ${DEP} ${NAME}.1 Makefile ${DOCS} ${NV} @fakeroot tar -czhof ${NV}.tar.gz ${NV} @rm -rf ${NV} -deb: dist - @mkdir -p Packages - @cp ${NV}.tar.gz Packages/ - @( \ - cd Packages/ ;\ - tar -xzf ${NV}.tar.gz ;\ - mv ${NV}.tar.gz ${NAME}_${VERSION}.orig.tar.gz ;\ - cd ${NV}/ ;\ - cp -r ../../debian/ . ;\ - debuild ;\ - ) - @rm -rf Packages/${NV} +.PHONY: changelog changelog: @echo generating changelog from mercurial log @hg log -v --style changelog > ChangeLog -install: build strip + +.PHONY: install +install: all strip @echo installing executable file to ${DESTDIR}${BINDIR} @mkdir -p ${DESTDIR}${BINDIR} @cp ${NAME} ${DESTDIR}${BINDIR} @chmod 755 ${DESTDIR}${BINDIR}/${NAME} @echo installing manual page to ${DESTDIR}${MANDIR}/man1 @mkdir -p ${DESTDIR}${MANDIR}/man1 - @sed 's/VERSION/${VERSION}/g' < ${NAME}.1 > ${DESTDIR}${MANDIR}/man1/${NAME}.1 + @cp ${NAME}.1 ${DESTDIR}${MANDIR}/man1 @chmod 644 ${DESTDIR}${MANDIR}/man1/${NAME}.1 + +.PHONY: uninstall uninstall: @echo removing executable file from ${DESTDIR}${BINDIR} @rm -f ${DESTDIR}${BINDIR}/${NAME} @@ -94,17 +87,11 @@ @rm -f ${DESTDIR}${MANDIR}/man1/${NAME}.1 +.PHONY: clean clean: rm -f *.o + +.PHONY: realclean realclean: clean - rm -f ${NAME} - -distclean: realclean - @rm -f ${NAME}-*.tar.gz ChangeLog - -debclean: distclean - @cd Packages/${NV}/ ; debuild clean ; - - -.PHONY: all dist deb changelog clean distclean debclean build install uninstall + rm -f ${NAME} ChangeLog
--- a/actions.c Thu Nov 13 13:15:11 2008 +0100 +++ b/actions.c Thu Nov 13 13:19:42 2008 +0100 @@ -11,9 +11,26 @@ unsigned char action_if(struct Node* node); unsigned char action_while(struct Node* node); +struct action { + char* name; + unsigned char (*func)(struct Node* node); +}; + +struct action actions[] = { + {"print", action_print}, + {"sum", action_sum}, + {"number", action_number}, + {"create", action_create}, + {"times", action_times}, + {"if", action_if}, + {"while", action_while}, +}; + unsigned char action(struct Node* node) { + int i; + if (node == NULL) { if (option_verbose) { fprintf(stderr, "warning: action of non existing node\n"); @@ -21,31 +38,14 @@ return 0; } - if (strcmp(node->name, "print") == 0) { - return action_print(node); - - } else if (strcmp(node->name, "sum") == 0) { - return action_sum(node); - - } else if (strcmp(node->name, "number") == 0) { - return action_number(node); + for (i = 0; i < (sizeof(actions)/sizeof(actions[0])); i++) { + if (strcmp(actions[i].name, node->name) == 0) { + return (actions[i].func)(node); + } + } - } else if (strcmp(node->name, "create") == 0) { - return action_create(node); - - } else if (strcmp(node->name, "times") == 0) { - return action_times(node); - - } else if (strcmp(node->name, "if") == 0) { - return action_if(node); - - } else if (strcmp(node->name, "while") == 0) { - return action_while(node); - - } else { fprintf(stderr, "unknown kind of node\n"); exit(4); - } }