36 Commits

Author SHA1 Message Date
agibert
4634d49ce9 Fix 2.0.5-1 authorship: add M. Regimbeau ! 2004-08-01 23:49:13 +00:00
agibert
6cae72830f Initial creation. 2004-08-01 23:42:30 +00:00
agibert
61dfd5c682 Add Lib_Open and Lib_Close calls. 2004-08-01 23:41:02 +00:00
agibert
898992430e Add Lib_Open and Lib_Close commands,
Code clean up.
2004-08-01 23:38:52 +00:00
agibert
3c40fadbff Add ND_Library_Open() and ND_Library_Close() calls,
Code clean up.
2004-08-01 23:35:39 +00:00
agibert
126de83bc9 Add a check version of executables: *-c (ND_MODE=1). 2004-08-01 23:34:31 +00:00
agibert
8541d83655 Add OpenStruct tracing support in ND_Library_Open(), ND_Library_Close(), ND_DataStruct_Open() and ND_DataStruct_Close(),
Create NDG_Base global structure variable and move all the sparced global variables into it,
ND_Library_Open() call is now mandatory,
Add library open test in *_C() functions,
Code cleaning,
Fix code indentation.
2004-08-01 23:18:37 +00:00
agibert
2274de2cf2 Fix GPL Header. 2004-06-17 22:28:30 +00:00
agibert
fa40487565 Fix an index bug in ND_Tree_Node_Recursive_Add() and ND_List_Sort(),
Fix GPL Header.
2004-06-17 22:28:04 +00:00
agibert
79b8e412a2 Add Cache Value option entry. 2003-07-27 23:14:10 +00:00
agibert
de448e9237 Add 2.0.5-1 entry. 2003-07-27 23:13:17 +00:00
agibert
f3598b72e5 Add 'make _LIBVER_SUPPORT=1 all' example. 2003-07-27 23:10:55 +00:00
agibert
f2f8facb0e Fix FILE_DOC and FILE_LIB. 2003-07-16 23:46:14 +00:00
agibert
d299d7ce87 Remove node.h file installation. 2003-07-16 23:39:46 +00:00
agibert
05877292fa Initial release. 2003-07-16 23:38:10 +00:00
agibert
ee32700240 Exclude CVS directory from distrib generation. 2003-07-16 23:37:37 +00:00
agibert
7c7ecea547 Add include sub directory. 2003-07-16 23:32:06 +00:00
agibert
3b595554f4 Add %{libnode_name} variable. 2003-07-16 23:18:09 +00:00
agibert
352f592518 Rename $(MKD) into $(MKDIR). 2003-07-16 23:17:07 +00:00
agibert
211babbf5b Remove old comments,
Remove unused install chmod.
2003-07-16 22:57:12 +00:00
agibert
adbf463812 Add distrib rule. 2003-07-16 22:55:51 +00:00
agibert
c4617d7c1f Move "node.h" from lib to include. 2003-07-16 00:20:53 +00:00
agibert
2f56c19c82 move "node.h" into "../include". 2003-07-16 00:19:21 +00:00
agibert
3443aba602 Rename "nddemo0.txt" into "nddemo0.dat". 2003-07-16 00:17:02 +00:00
agibert
655e66ee8b Rename "demo0.*" into "nddemo0.*". 2003-07-16 00:16:07 +00:00
agibert
6410c70eb1 Rename "demo0.*" into "nddemo0.*",
Rename "nddemo0.txt" into "nddemo0.dat".
2003-07-16 00:13:20 +00:00
agibert
69d684f700 Update Makefile to Marc new system. 2003-07-15 23:57:50 +00:00
agibert
a10f0b1cf5 Initial release. 2003-07-15 23:53:15 +00:00
agibert
6ded620c00 Add lib subdir to libver,
Change _LIBVER_SUPPORT by LIBVER_SUPPORT.
2003-01-23 00:25:19 +00:00
agibert
0514715693 Add lib subdir to libver,
Change _LIBVER_SUPPORT by LIBVER_SUPPORT,
Fix unexported local symbols by adding -rdynamic flag in linking.
2003-01-23 00:24:36 +00:00
agibert
c4969560a3 Fix bad VER_INFO_EXPORT module name... 2003-01-23 00:23:08 +00:00
agibert
10a6a983c5 Add lib subdir to libver,
Fix unexported local symbols by adding -rdynamic flag in linking.
2003-01-23 00:21:20 +00:00
agibert
78e9d49e45 Improve libver support. 2003-01-17 17:07:41 +00:00
agibert
27c0b3cda7 Minor print-out improvments. 2003-01-17 17:03:33 +00:00
agibert
a0addad286 Fix LibVer support. 2003-01-17 08:06:57 +00:00
agibert
9bb2b42716 Fix libVer support. 2003-01-17 08:04:24 +00:00
27 changed files with 2908 additions and 1465 deletions

25
Makefile Normal file
View File

@@ -0,0 +1,25 @@
# $RCSfile: Makefile,v $
# $Revision: 1.3 $
# $Name: $
# $Date: 2003/07/16 23:32:06 $
# $Author: agibert $
#------------------------------------------------------------------------------
# Main Makefile
#------------------------------------------------------------------------------
SUBDIRS := include lib util demo doc
FILE_DOC := *.txt
include Makefile.var
include Makefile.rule
dir_clean:
$(RM) $(PROG_VERSION_NAME).src.*

359
Makefile.rule Normal file
View File

@@ -0,0 +1,359 @@
# $RCSfile: Makefile.rule,v $
# $Revision: 1.4 $
# $Name: $
# $Date: 2003/07/16 23:37:37 $
# $Author: agibert $
#------------------------------------------------------------------------------
# Rule Makefile
#------------------------------------------------------------------------------
# ----------------- DEFAULT RULES ---------------------
default:all
# ----------------- IMPLICITES RULES ---------------------
# Here are all the rules allowing to compile sources files
# c -> o
%.o:%.c
$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
# c -> executable
.c :
$(CC) $(CFLAGS) $(INCLUDE) $< -o $@ -I . $(LIB)
# o -> executable
%:%.o
$(CC) $(LFLAGS) -o $@ $? $(LIB)
# .o -> .so
%.so:%.o
$(CC) $(LDSOFLAGS) -shared -o $@ $? $(LIB)
%.a:%.o
$(AR) -r $@ $?
$(OBJECTS) : $(SRC)
# "depend" rule allow to build the dependancy file
depend:
# "all" Rule
all: dir_all
ifneq ($(SUBDIRS),)
for d in $(SUBDIRS) ; do $(MAKE) all -C $$d/ ; done
endif
dir_all: $(TARGETS)
# "clean" Rule
clean: dir_clean
ifneq ($(SUBDIRS),)
for d in $(SUBDIRS) ; do $(MAKE) clean -C $$d/ ; done
endif
dir_clean:
@(command="$(RM) $(TARGETS) $$(echo $(SRC) | sed "s/\.c/\.o/g") ;" ; \
echo $$command ; \
eval $$command ;)
# "pre_install" Rule
# This empty rule can be overiden in module Makefile in order to run pre-install commands.
pre_install:
# "post_install" Rule
# This empty rule can be overiden in module Makefile in order to run post-install commands.
post_install:
# "install" Rule
install: dir_install
ifneq ($(SUBDIRS),)
for d in $(SUBDIRS) ; do $(MAKE) install -C $$d/ ; done
endif
dir_install: dir_all
$(MAKE) pre_install
ifneq ($(FILE_BIN),)
@if test ! -d $(PATH_BIN) ; then $(MKDIR) $(PATH_BIN) ; fi
$(INSTALLBIN) $(FILE_BIN) $(PATH_BIN)
endif
ifneq ($(FILE_BINSUID),)
@if test ! -d $(PATH_BINSUID) ; then $(MKDIR) $(PATH_BINSUID) ; fi
$(INSTALLBINSUID) $(FILE_BINSUID) $(PATH_BINSUID)
endif
ifneq ($(FILE_CGI),)
@if test ! -d $(PATH_CGI) ; then $(MKDIR) $(PATH_CGI) ; fi
$(INSTALLCGI) $(FILE_CGI) $(PATH_CGI)
endif
ifneq ($(FILE_DOC),)
@if test ! -d $(PATH_DOC) ; then $(MKDIR) $(PATH_DOC) ; fi
$(INSTALLDOC) $(FILE_DOC) $(PATH_DOC)
endif
ifneq ($(FILE_ETC),)
@if test ! -d $(PATH_ETC) ; then $(MKDIR) $(PATH_ETC) ; fi
$(INSTALLETC) $(FILE_ETC) $(PATH_ETC)
endif
ifneq ($(FILE_HOME),)
@if test ! -d $(PATH_HOME) ; then $(MKDIR) $(PATH_HOME) ; fi
$(INSTALLHOME) $(FILE_HOME) $(PATH_HOME)
endif
ifneq ($(FILE_HOMEBIN),)
@if test ! -d $(PATH_HOMEBIN) ; then $(MKDIR) $(PATH_HOMEBIN) ; fi
$(INSTALLHOMEBIN) $(FILE_HOMEBIN) $(PATH_HOMEBIN)
endif
ifneq ($(FILE_LIB),)
@if test ! -d $(PATH_LIB) ; then $(MKDIR) $(PATH_LIB) ; fi
$(INSTALLLIB) $(FILE_LIB) $(PATH_LIB)
endif
ifneq ($(FILE_HOMELIB),)
@if test ! -d $(PATH_HOMELIB) ; then $(MKDIR) $(PATH_HOMELIB) ; fi
$(INSTALLHOMELIB) $(FILE_HOMELIB) $(PATH_HOMELIB)
endif
ifneq ($(FILE_INCLUDE),)
@if test ! -d $(PATH_INCLUDE) ; then $(MKDIR) $(PATH_INCLUDE) ; fi
$(INSTALLINCLUDE) $(FILE_INCLUDE) $(PATH_INCLUDE)
endif
ifneq ($(FILE_MAN),)
@for d in $(FILE_MAN) ; do \
if test ! -d $(PATH_MAN)/$(FILE_MAN) ; then \
$(MKDIR) $(PATH_MAN)/$(FILE_MAN) ; \
fi ; \
$(INSTALLMAN) $(FILE_MAN)/* $(PATH_MAN)/$(FILE_MAN) ; \
done
endif
ifneq ($(FILE_WEBCONF),)
@if test ! -d $(PATH_WEBCONF) ; then $(MKDIR) $(PATH_WEBCONF) ; fi
$(INSTALLWEBCONF) $(FILE_WEBCONF) $(PATH_WEBCONF)
endif
ifneq ($(FILE_WEBCONFSSL),)
@if test ! -d $(PATH_WEBCONFSSL) ; then $(MKDIR) $(PATH_WEBCONFSSL) ; fi
$(INSTALLWEBCONFSSL) $(FILE_WEBCONFSSL) $(PATH_WEBCONFSSL)
endif
ifneq ($(FILE_HTML),)
@if test ! -d $(PATH_HTML) ; then $(MKDIR) $(PATH_HTML) ; fi
$(INSTALLHTML) $(FILE_HTML) $(PATH_HTML)
endif
ifneq ($(FILE_WEBICONS),)
@if test ! -d $(PATH_WEBICONS) ; then $(MKDIR) $(PATH_WEBICONS) ; fi
$(INSTALLWEBICONS) $(FILE_WEBICONS) $(PATH_WEBICONS)
endif
$(MAKE) post_install
# "pre_uninstall" Rule
# This empty rule can be overiden in module Makefile in order to run pre-uninstall commands.
pre_uninstall:
# "post_uninstall" Rule
# This empty rule can be overiden in module Makefile in order to run post-uninstall commands.
post_uninstall:
# "uninstall" Rule
uninstall: dir_uninstall
ifneq ($(SUBDIRS),)
for d in $(SUBDIRS) ; do $(MAKE) uninstall -C $$d/ ; done
endif
dir_uninstall:
$(MAKE) pre_uninstall
ifneq ($(FILE_BIN),)
@(if test -d $(PATH_BIN) ; then \
$(CD) $(PATH_BIN) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_BIN)" ; \
echo "$(RM) $(FILE_BIN)" ; \
fi ; \
$(RM) $(FILE_BIN) ; \
fi)
endif
ifneq ($(FILE_BINSUID),)
@(if test -d $(PATH_BINSUID) ; then \
$(CD) $(PATH_BINSUID) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_BINSUID)" ; \
echo "$(RM) $(FILE_BINSUID)" ; \
fi ; \
$(RM) $(FILE_BINSUID) ; \
fi)
endif
ifneq ($(FILE_CGI),)
@(if test -d $(PATH_CGI) ; then \
$(CD) $(PATH_CGI) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_CGI)" ; \
echo "$(RM) $(FILE_CGI)" ; \
fi ; \
$(RM) $(FILE_CGI) ; \
fi)
endif
ifneq ($(FILE_DOC),)
@(if test -d $(PATH_DOC) ; then \
$(CD) $(PATH_DOC) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_DOC)" ; \
echo "$(RM) $(FILE_DOC)" ; \
fi ; \
$(RM) $(FILE_DOC) ; \
fi)
endif
ifneq ($(FILE_ETC),)
@(if test -d $(PATH_ETC) ; then \
$(CD) $(PATH_ETC) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_ETC)" ; \
echo "$(RM) $(FILE_ETC)" ; \
fi ; \
$(RM) $(FILE_ETC) ; \
fi)
endif
ifneq ($(FILE_HOME),)
@(if test -d $(PATH_HOME) ; then \
$(CD) $(PATH_HOME) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_HOME)" ; \
echo "$(RM) $(FILE_HOME)" ; \
fi ; \
$(RM) $(FILE_HOME) ; \
fi)
endif
ifneq ($(FILE_HOMEBIN),)
@(if test -d $(PATH_HOMEBIN) ; then \
$(CD) $(PATH_HOMEBIN) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_HOMEBIN)" ; \
echo "$(RM) $(FILE_HOMEBIN)" ; \
fi ; \
$(RM) $(FILE_HOMEBIN) ; \
fi)
endif
ifneq ($(FILE_LIB),)
@(if test -d $(PATH_LIB) ; then \
$(CD) $(PATH_LIB) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_LIB)" ; \
echo "$(RM) $(FILE_LIB)" ; \
fi ; \
$(RM) $(FILE_LIB) ; \
fi)
endif
ifneq ($(FILE_HOMELIB),)
@(if test -d $(PATH_HOMELIB) ; then \
$(CD) $(PATH_HOMELIB) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_HOMELIB)" ; \
echo "$(RM) $(FILE_HOMELIB)" ; \
fi ; \
$(RM) $(FILE_HOMELIB) ; \
fi)
endif
ifneq ($(FILE_INCLUDE),)
@(if test -d $(PATH_INCLUDE) ; then \
$(CD) $(PATH_INCLUDE) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_INCLUDE)" ; \
echo "$(RM) $(FILE_INCLUDE)" ; \
fi ; \
$(RM) $(FILE_INCLUDE) ; \
fi)
endif
ifneq ($(FILE_MAN),)
@(if test -d $(PATH_MAN) ; then \
$(CD) $(PATH_MAN) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_MAN)" ; \
echo "$(RM) $(FILE_MAN)" ; \
fi ; \
$(RM) $(FILE_MAN) ; \
fi)
endif
ifneq ($(FILE_WEBCONF),)
@(if test -d $(PATH_WEBCONF) ; then \
$(CD) $(PATH_WEBCONF) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_WEBCONF)" ; \
echo "$(RM) $(FILE_WEBCONF)" ; \
fi ; \
$(RM) $(FILE_WEBCONF) ; \
fi)
endif
ifneq ($(FILE_WEBCONFSSL),)
@(if test -d $(PATH_WEBCONFSSL) ; then \
$(CD) $(PATH_WEBCONFSSL) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_WEBCONFSSL)" ; \
echo "$(RM) $(FILE_WEBCONFSSL)" ; \
fi ; \
$(RM) $(FILE_WEBCONFSSL) ; \
fi)
endif
ifneq ($(FILE_HTML),)
@(if test -d $(PATH_HTML) ; then \
$(CD) $(PATH_HTML) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_HTML)" ; \
echo "$(RM) $(FILE_HTML)" ; \
fi ; \
$(RM) $(FILE_HTML) ; \
fi)
endif
ifneq ($(FILE_WEBICONS),)
@(if test -d $(PATH_WEBICONS) ; then \
$(CD) $(PATH_WEBICONS) ; \
(echo $(MAKEFLAGS) | grep s) > /dev/null ; \
if [ $$? -ne 0 ] ; then \
echo "$(CD) $(PATH_WEBICONS)" ; \
echo "$(RM) $(FILE_WEBICONS)" ; \
fi ; \
$(RM) $(FILE_WEBICONS) ; \
fi)
endif
$(MAKE) post_uninstall
# "distrib" Rule
distrib:
$(MAKE) clean
$(MKDIR) $(TMP_DIR)/$(PROG_VERSION_NAME)
$(TAR) cf - . | $(TAR) xvpf - -C $(TMP_DIR)/$(PROG_VERSION_NAME)
$(TAR) cvf - -C $(TMP_DIR) --exclude CVS $(PROG_VERSION_NAME) | $(GZIP) -9 >$(PROG_VERSION_NAME).src.tgz
$(TAR) cvf - -C $(TMP_DIR) --exclude CVS $(PROG_VERSION_NAME) | $(BZIP2) -9 >$(PROG_VERSION_NAME).src.tbz2
$(MV) $(TMP_DIR)/$(PROG_VERSION_NAME) .
$(ZIP) -r -m -9 $(PROG_VERSION_NAME).src.zip $(PROG_VERSION_NAME) -x \*/CVS/\*
$(RM) -r $(PROG_VERSION_NAME)

86
Makefile.var Normal file
View File

@@ -0,0 +1,86 @@
# $RCSfile: Makefile.var,v $
# $Revision: 1.2 $
# $Name: $
# $Date: 2003/07/16 22:55:51 $
# $Author: agibert $
#------------------------------------------------------------------------------
# Variable Makefile
#------------------------------------------------------------------------------
PROG_NAME=libnode
PROG_VERSION_NAME=libnode-2.0.5-1
CC=/usr/bin/gcc
AR=/usr/bin/ar
CD=cd
MKDIR=/bin/mkdir -p
RM=/bin/rm -f
MV=/bin/mv
TAR=tar
GZIP=gzip
BZIP2=bzip2
ZIP=zip
PATH_WEB=$(addprefix /var/httpd/, $(PROG_NAME))
INSTALLBIN=/usr/bin/install -m 755
INSTALLBINSUID=/usr/bin/install -m 4755
INSTALLCGI=/usr/bin/install -m 555
INSTALLDOC=/usr/bin/install -m 444
INSTALLETC=/usr/bin/install -m 600
INSTALLHOME=/usr/bin/install -m 400
INSTALLHOMEBIN=/usr/bin/install -m 750
INSTALLLIB=/usr/bin/install -m 755
INSTALLHOMELIB=/usr/bin/install -m 755
INSTALLINCLUDE=/usr/bin/install -m 644
INSTALLMAN=/usr/bin/install -m 644
INSTALLWEBCONF=/usr/bin/install -m 644
INSTALLWEBCONFSSL=/usr/bin/install -m 644
INSTALLHTML=/usr/bin/install -m 444
INSTALLWEBICONS=/usr/bin/install -m 444
ifeq ($(ROOT),)
HOME_DIR := /
else
HOME_DIR := $(ROOT)
endif
PATH_BIN := $(addprefix $(HOME_DIR),/usr/bin)
PATH_BINSUID := $(PATH_BIN)
PATH_CGI := $(addprefix $(HOME_DIR),$(addprefix $(PATH_WEB),/cgi-bin))
PATH_DOC := $(addprefix $(HOME_DIR),$(addprefix /usr/share/doc/,$(PROG_VERSION_NAME)))
PATH_ETC := $(addprefix $(HOME_DIR),$(addprefix /etc/,$(MODULE)))
PATH_HOME := $(addprefix $(HOME_DIR),$(addprefix $(addprefix /var/lib/, $(PROG_NAME)), $(MODULE)))
PATH_HOMEBIN := $(addprefix $(HOME_DIR), $(addprefix $(addprefix /var/lib/, $(PROG_NAME)), /bin))
PATH_LIB := $(addprefix $(HOME_DIR),/usr/lib)
PATH_HOMELIB := $(addprefix $(HOME_DIR), $(addprefix $(addprefix /var/lib/, $(PROG_NAME)), /lib))
PATH_INCLUDE := $(addprefix $(HOME_DIR),/usr/include)
PATH_MAN := $(addprefix $(HOME_DIR),/usr/share/man)
PATH_WEBCONF := $(addprefix $(HOME_DIR),/etc/httpd/conf/vhosts)
PATH_WEBCONFSSL := $(addprefix $(HOME_DIR),/etc/httpd/conf/ssl)
PATH_HTML := $(addprefix $(HOME_DIR),$(addprefix $(addprefix $(PATH_WEB),/html/),$(MODULE)))
PATH_WEBICONS := $(addprefix $(HOME_DIR),$(addprefix $(PATH_WEB),/icons))
PATH_LOG := $(addprefix $(HOME_DIR),/var/log)
TMP_DIR=/tmp
CFLAGS=
ifeq ($(DEBUG), YES)
CFLAGS += -g -D_DEBUG
endif
ifeq ($(DEBUG), Y)
CFLAGS += -g -D_DEBUG
endif
ifeq ($(OPTIM), YES)
CFLAGS += -O3
endif
ifeq ($(OPTIM), Y)
CFLAGS += -O3
endif

View File

@@ -1,7 +1,7 @@
# $RCSfile: ReadMe.txt,v $
# $Revision: 2.5 $
# $Revision: 2.6 $
# $Name: $
# $Date: 2002/08/02 12:34:32 $
# $Date: 2003/07/27 23:10:55 $
# $Author: agibert $
@@ -19,7 +19,8 @@ This release of LibNode supports the following OS:
The support of LibVer is now optional.
The support of LibVer is now optional (To enable it, use: make _LIBVER_SUPPORT=1 all).
LibShm and LibDataStr are no more supported.

View File

@@ -1,13 +1,24 @@
# $RCSfile: ReleaseNotes.txt,v $
# $Revision: 2.10 $
# $Revision: 2.12 $
# $Name: $
# $Date: 2002/07/29 15:04:09 $
# $Date: 2004/08/01 23:49:13 $
# $Author: agibert $
--------------------------------------------------------------------------------
LibNode V 2.0.5-1 - A. Gibert / M. Regimbeau - 28/07/03
--------------------------------------------------------------------------------
All: Add a new Makefile system (Makefile.rule and Makefile.var),
Add 'make distrib' support,
Add libnode.spec file,
Move node.h from lib directory to include directory.
--------------------------------------------------------------------------------
LibNode V 2.0.4-1 - A. Gibert - 29/07/02
--------------------------------------------------------------------------------

View File

@@ -1,13 +1,14 @@
# $RCSfile: ToDo.txt,v $
# $Revision: 2.2 $
# $Revision: 2.3 $
# $Name: $
# $Date: 2002/08/02 12:30:06 $
# $Date: 2003/07/27 23:14:10 $
# $Author: agibert $
- Add Cache Value option,
- More debug !
- New English documentation (man/tex),
- Improve API consitency,

View File

@@ -1,10 +1,53 @@
all: demo0 demo0-static
SRC := nddemo0.c
TARGETS := nddemo0 nddemo0-c nddemo0-static nddemo0-static-c
FILE_BIN := nddemo0 nddemo0-c nddemo0-static nddemo0-static-c
FILE_LIB := nddemo0.dat
demo0-static: demo0.c ../lib/node.h ../lib/libnode.a Makefile
gcc -g -o demo0-static -I ../lib -ldl demo0.c ../lib/libnode.a
demo0: demo0.c ../lib/node.h ../lib/libnode.so Makefile
gcc -g -o demo0 -I ../lib -L ../lib -ldl -lnode demo0.c
clean:
rm -f demo0 demo0-static
include ../Makefile.var
include ../Makefile.rule
DEP_STATIC = ../lib/libnode.a
DEP_DYNAMIC = ../lib/libnode.so
INCLUDE = -I . -I ../include
LIBDIR = -L . -L ../lib
LIB_STATIC = ../lib/libnode.a
LIB_DYNAMIC = -lnode
ifdef _LIBVER_SUPPORT
DEP_STATIC += ../../libver/ver.h ../../libver/libver.a
DEP_DYNAMIC += ../../libver/ver.h ../../libver/libver.so
INCLUDE += -I ../../libver/lib
LIBDIR += -L ../../libver/lib
ifeq ($(OSTYPE),linux-gnu)
LIB_STATIC += ../../libver/lib/libver.a
LIB_DYNAMIC += -lver
else
LIB_STATIC += -ldl ../../libver/lib/libver.a
LIB_DYNAMIC += -ldl -lver
endif
CFLAGS += -D_LIBVER_SUPPORT -rdynamic
endif
ND_CHECK_FLAGS = -DND_MODE=0
ND_NOCHECK_FLAGS = -DND_MODE=1
nddemo0: nddemo0.c $(DEP_DYNAMIC)
$(CC) -o $@ $(CFLAGS) $(ND_NOCHECK_FLAGS) $(INCLUDE) $(LIBDIR) $(LIB_DYNAMIC) $<
nddemo0-c: nddemo0.c $(DEP_DYNAMIC)
$(CC) -o $@ $(CFLAGS) $(ND_CHECK_FLAGS) $(INCLUDE) $(LIBDIR) $(LIB_DYNAMIC) $<
nddemo0-static: nddemo0.c $(DEP_STATIC)
$(CC) -o $@ $(CFLAGS) $(ND_NOCHECK_FLAGS) $(INCLUDE) $< $(LIB_STATIC)
nddemo0-static-c: nddemo0.c $(DEP_STATIC)
$(CC) -o $@ $(CFLAGS) $(ND_CHECK_FLAGS) $(INCLUDE) $< $(LIB_STATIC)

View File

@@ -1,9 +1,9 @@
/*---------------------------------------------------------------------------------*/
/* $RCSfile: nddemo0.c,v $ */
/*---------------------------------------------------------------------------------*/
/* $Revision: 2.1 $ */
/* $Revision: 2.7 $ */
/* $Name: $ */
/* $Date: 2002/02/28 22:00:35 $ */
/* $Date: 2004/08/01 23:35:39 $ */
/* $Author: agibert $ */
/*---------------------------------------------------------------------------------*/
@@ -21,7 +21,7 @@
/* GNU Lesser General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with Foobar; if not, write to the Free Software */
/* along with LibNode; if not, write to the Free Software */
/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*---------------------------------------------------------------------------------*/
@@ -31,12 +31,12 @@
#include <stdio.h>
#include <errno.h>
#include <node.h>
//#include <windows.h>
#define DEMO_FILE_NAME "demo0.txt"
#define DEMO_FILE_NAME "nddemo0.dat"
#define STRING_LEN (short)1024
#define STRING_SIZE (short)(STRING_LEN + 1)
#define VAL_LEN (short)64
@@ -94,7 +94,7 @@ NDT_Status Manager_Demo_DS( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_No
Command_Name = "NDD_CMD_MANAGER_VERSION";
*Version_Name_Ptr = "$Revision: 2.1 $ $Name: $ $Date: 2002/02/28 22:00:35 $ $Author: agibert $";
*Version_Name_Ptr = "$Revision: 2.7 $ $Name: $ $Date: 2004/08/01 23:35:39 $ $Author: agibert $";
return( NDS_OK);
}
@@ -563,6 +563,16 @@ void Demo( char *Demo_File_Name, short Optimized_Mode)
FILE *demo_file;
printf( "Open library: ");
if( ( status = ND_Library_Open( NDD_TRUE)) != NDS_OK)
{
printf( "ND_Library_Open() failed (%d) !\n", status);
}
else
{
printf( "Ok !\n");
printf( "Create demo DataStructure: ");
if( Optimized_Mode)
@@ -574,8 +584,6 @@ void Demo( char *Demo_File_Name, short Optimized_Mode)
index_type_ptr = index_type_final_tab;
}
if( ( status = ND_DataStruct_Open( &demo_ds_ptr, INDEX_NB, index_type_ptr, "Manager_Demo_DS", Manager_Demo_DS, NULL, NULL, NULL, NULL,0, NULL)) != NDS_OK)
{
printf( "ND_DataStruct_Open() failed (%d) !\n", status);
@@ -641,7 +649,6 @@ void Demo( char *Demo_File_Name, short Optimized_Mode)
}
printf( "Close demo DataStructure: ");
if( ( status = ND_DataStruct_Close( demo_ds_ptr)) != NDS_OK)
@@ -653,6 +660,18 @@ void Demo( char *Demo_File_Name, short Optimized_Mode)
printf( "Ok !\n");
}
}
printf( "Close library: ");
if( ( status = ND_Library_Close()) != NDS_OK)
{
printf( "ND_Library_Close() failed (%d) !\n", status);
}
else
{
printf( "Ok !\n");
}
}
}
@@ -670,34 +689,4 @@ int main( int argc, char **argv)
printf( "\n\n\n\n\nOptimized Demo\n--------------\n\n\n");
Demo( DEMO_FILE_NAME, 1);
{
/*
HMODULE my_module;
char buf[256];
FARPROC my_function;
my_module = GetModuleHandle( NULL);
printf( "Module_Handle: (%p)\n", my_module);
buf[0] = '\0';
GetModuleFileName( my_module, buf, 255);
printf( "Module_Name: (%s)\n", buf);
my_function = GetProcAddress( my_module, "zob");
printf( "Function_Addr: (%p)\n", my_function);
my_function();
*/
}
}
/*
__declspec(dllexport) void zob(void)
{
printf( "Zoby la mouche qui pête...!!!\n");
}
*/

View File

@@ -1,9 +1,9 @@
#---------------------------------------------------------------------------------
# $RCSfile: nddemo0.dat,v $
#---------------------------------------------------------------------------------
# $Revision: 2.0 $
# $Revision: 2.1 $
# $Name: $
# $Date: 2001/11/26 10:53:34 $
# $Date: 2003/07/16 00:17:02 $
# $Author: agibert $
#---------------------------------------------------------------------------------
ggg 1 xxxxxx example

View File

@@ -1,24 +1,24 @@
# Microsoft Developer Studio Project File - Name="demo0" - Package Owner=<4>
# Microsoft Developer Studio Project File - Name="nddemo0" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=demo0 - Win32 Debug
CFG=nddemo0 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "demo0.mak".
!MESSAGE NMAKE /f "nddemo0.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "demo0.mak" CFG="demo0 - Win32 Debug"
!MESSAGE NMAKE /f "nddemo0.mak" CFG="nddemo0 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "demo0 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "demo0 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "nddemo0 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "nddemo0 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
@@ -28,7 +28,7 @@ CFG=demo0 - Win32 Debug
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "demo0 - Win32 Release"
!IF "$(CFG)" == "nddemo0 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -52,7 +52,7 @@ LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libnode.lib /nologo /subsystem:console /incremental:yes /machine:I386
!ELSEIF "$(CFG)" == "demo0 - Win32 Debug"
!ELSEIF "$(CFG)" == "nddemo0 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
@@ -74,24 +74,24 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libnoded.lib /nologo /subsystem:console /debug /machine:I386 /out:"demo0d.exe" /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libnoded.lib /nologo /subsystem:console /debug /machine:I386 /out:"nddemo0d.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "demo0 - Win32 Release"
# Name "demo0 - Win32 Debug"
# Name "nddemo0 - Win32 Release"
# Name "nddemo0 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\demo0.c
SOURCE=.\nddemo0.c
!IF "$(CFG)" == "demo0 - Win32 Release"
!IF "$(CFG)" == "nddemo0 - Win32 Release"
!ELSEIF "$(CFG)" == "demo0 - Win32 Debug"
!ELSEIF "$(CFG)" == "nddemo0 - Win32 Debug"
# ADD CPP /MDd

View File

@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
###############################################################################
Project: "demo0"=.\demo0.dsp - Package Owner=<4>
Project: "nddemo0"=.\nddemo0.dsp - Package Owner=<4>
Package=<5>
{{{

5
doc/Makefile Normal file
View File

@@ -0,0 +1,5 @@
FILE_DOC := libnode.doc
FILE_MAN := man3
include ../Makefile.var
include ../Makefile.rule

6
include/Makefile Normal file
View File

@@ -0,0 +1,6 @@
FILE_INCLUDE := node.h
include ../Makefile.var
include ../Makefile.rule

View File

@@ -1,9 +1,9 @@
/*---------------------------------------------------------------------------------*/
/* $RCSfile: node.h,v $ */
/*---------------------------------------------------------------------------------*/
/* $Revision: 2.5 $ */
/* $Revision: 2.7 $ */
/* $Name: $ */
/* $Date: 2002/02/28 21:53:47 $ */
/* $Date: 2004/08/01 23:18:37 $ */
/* $Author: agibert $ */
/*---------------------------------------------------------------------------------*/
@@ -21,7 +21,7 @@
/* GNU Lesser General Public License for more details. */
/* */
/* You should have received a copy of the GNU Lesser General Public License */
/* along with Foobar; if not, write to the Free Software */
/* along with LibNode; if not, write to the Free Software */
/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*---------------------------------------------------------------------------------*/
@@ -309,10 +309,6 @@ typedef struct NDT_Node
char ND_Error_Msg [512];
typedef int NDT_Recursive_Mode;
typedef int NDT_Recursive_Depth;
typedef int NDT_Recursive_Offset;
@@ -339,7 +335,7 @@ typedef int NDT_Recursive_Offset;
#define ND_Library_Open ND_Library_Open_I
#define ND_Library_Close ND_Library_Close_I
#define ND_Library_Stderr_Set ND_Library_Stderr_Set_I
#define ND_Library_StdErr_Set ND_Library_Stderr_Set_I
#define ND_DataStruct_Open ND_DataStruct_Open_I
#define ND_DataStruct_Close ND_DataStruct_Close_I
@@ -389,7 +385,7 @@ typedef int NDT_Recursive_Offset;
#define ND_Library_Open ND_Library_Open_C
#define ND_Library_Close ND_Library_Close_C
#define ND_Library_Stderr_Set ND_Library_Stderr_Set_C
#define ND_Library_StdErr_Set ND_Library_Stderr_Set_C
#define ND_DataStruct_Open ND_DataStruct_Open_C
#define ND_DataStruct_Close ND_DataStruct_Close_C
@@ -472,8 +468,8 @@ NDD_DLL_API NDT_Status ND_Library_Close_C( void);
/*------------------------------------------------------------------------------*/
/* Définition de la sortie standard des messages d'erreur de la librairie */
/*------------------------------------------------------------------------------*/
NDD_DLL_API NDT_Status ND_Library_Stderr_Set_I( FILE *Out);
NDD_DLL_API NDT_Status ND_Library_Stderr_Set_C( FILE *Out);
NDD_DLL_API NDT_Status ND_Library_StdErr_Set_I( FILE *Out);
NDD_DLL_API NDT_Status ND_Library_StdErr_Set_C( FILE *Out);

View File

@@ -1,18 +1,22 @@
SRC := libnode.c
TARGETS := libnode.a libnode.so
FILE_LIB := libnode.a libnode.so
include ../Makefile.var
include ../Makefile.rule
DEP = libnode.h ../include/node.h Makefile
INCLUDE = -I . -I ../include
ifdef _LIBVER_SUPPORT
INCLUDE_VER = ../../libver/ver.h
LIB_VER = -I ../../libver
DEP += ../../libver/ver.h
INCLUDE += -I ../../libver/lib
endif
all: libnode.a libnode.so
libnode.o: libnode.c node.h libnode.h $(INCLUDE_VER) Makefile
gcc -c -g -o libnode.o -I . $(LIB_VER) libnode.c
libnode.a: libnode.o
ar -r libnode.a libnode.o
libnode.so: libnode.o
ld -shared -o libnode.so libnode.o
clean:
rm -f libnode.o libnode.a libnode.so
libnode.o : libnode.c $(DEP)

File diff suppressed because it is too large Load Diff

View File

@@ -126,7 +126,7 @@ SOURCE=.\libnode.h
# End Source File
# Begin Source File
SOURCE=.\node.h
SOURCE=..\include\node.h
# End Source File
# End Group
# Begin Group "Resource Files"

View File

@@ -1,9 +1,9 @@
/*---------------------------------------------------------------------------------*/
/* $RCSfile: libnode.h,v $ */
/*---------------------------------------------------------------------------------*/
/* $Revision: 2.4 $ */
/* $Revision: 2.5 $ */
/* $Name: $ */
/* $Date: 2002/07/29 14:53:51 $ */
/* $Date: 2004/08/01 23:18:38 $ */
/* $Author: agibert $ */
/*---------------------------------------------------------------------------------*/
@@ -21,7 +21,7 @@
/* GNU Lesser General Public License for more details. */
/* */
/* You should have received a copy of the GNU Lesser General Public License */
/* along with Foobar; if not, write to the Free Software */
/* along with LibNode; if not, write to the Free Software */
/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*---------------------------------------------------------------------------------*/
@@ -43,13 +43,9 @@
#ifdef __linux
# define NDD_PRINTF_PTR_PREFIX ""
#else
# define NDD_PRINTF_PTR_PREFIX "0x"
#endif
@@ -58,24 +54,52 @@
#define NDD_HUGE_LONG (long)0xFFFFFFL
/* Sortie standard des messages d'erreur */
FILE * ND_stderr;
/* Table des symboles locale */
struct Symbol {
struct NDT_Symbol;
typedef struct NDT_Symbol
{
void *Ptr;
char *Name;
struct Symbol * Next;
} * Symbol_Table = NULL;
struct NDT_Symbol *Next;
} NDT_Symbol;
/* LibNode Global Base Structure */
typedef struct NDT_Base
{
int Open_Status;
int Debug_Mode;
char Err_String[512];
FILE *Err_Stream;
int Sig_Trapped;
NDT_Symbol *Symbol_First_Ptr;
NDT_Index_Type OpenStruct_Index_Type[1];
NDT_Root *OpenStruct_Ptr;
} NDT_Base;
NDT_Base NDG_Base =
{
NDD_FALSE,
NDD_TRUE,
"",
(FILE *)-1,
0,
(NDT_Symbol *)NULL,
{ NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_FIFO},
(NDT_Root *)NULL
};
NDT_Root * Tmp_Root;
//extern char * strdup (const char *);
//extern int sigrelse (int sig);
int Sig_Trapped;
/*------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------*/
@@ -88,7 +112,14 @@ int Sig_Trapped;
/*------------------------------------------------------------------------------*/
/* (I) va_list Arguments : Liste d'arguments contextuels */
/*------------------------------------------------------------------------------*/
NDT_Status Default_Manager( NDT_Root *, NDT_Index_Id, NDT_Command, va_list);
NDT_Status ND_Default_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list);
/*------------------------------------------------------------------------------*/
/* OpenStruct Manager */
/*------------------------------------------------------------------------------*/
/* (I) va_list Arguments : Liste d'arguments contextuels */
/*------------------------------------------------------------------------------*/
NDT_Status ND_OpenStruct_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list);
/*------------------------------------------------------------------------------*/
/* Redéfinition de la fonction malloc() avec retour de type NDT_Status */
@@ -114,7 +145,7 @@ NDT_Status ND_Node_Alloc (NDT_Root * Root, NDT_Node ** New_Node);
/* (I) Root : adresse de la racine dans laquelle on détruit un noeud */
/* (I) Node : pointeur sur le noeud à détruire */
/*------------------------------------------------------------------------------*/
NDT_Status ND_Node_Free (NDT_Root * Root, NDT_Node * Node);
NDT_Status ND_Node_Free( NDT_Root *, NDT_Node *);
/*------------------------------------------------------------------------------*/
/* Création d'une nouvelle structure de données */
@@ -144,7 +175,7 @@ NDT_Status ND_Node_Root_Alloc( NDT_Root **, NDT_Index_Nb, NDT_Index_Type[], ch
/*------------------------------------------------------------------------------*/
/* (I) Root : pointeur sur la racine à détruire */
/*------------------------------------------------------------------------------*/
NDT_Status ND_Node_Root_Free (NDT_Root * Root);
NDT_Status ND_Node_Root_Free( NDT_Root *);
/*------------------------------------------------------------------------------*/
/* Ajout d'un noeud à une liste chaînée */
@@ -214,14 +245,14 @@ NDT_Status ND_Tree_Equalize (NDT_Root *, NDT_Index_Id);
/*------------------------------------------------------------------------------*/
/* (I) Node : pointeur sur le noeud */
/*------------------------------------------------------------------------------*/
long ND_Tree_MaxDepth_Get (NDT_Node *Node);
long ND_Tree_MaxDepth_Get( NDT_Node *);
/*------------------------------------------------------------------------------*/
/* Retourne la profondeur de la plus petite branche à partir d'un noeud */
/*------------------------------------------------------------------------------*/
/* (I) Node : pointeur sur le noeud */
/*------------------------------------------------------------------------------*/
long ND_Tree_MinDepth_Get (NDT_Node *Node);
long ND_Tree_MinDepth_Get( NDT_Node *);
/*------------------------------------------------------------------------------*/
/* Ajout d'un noeud à un arbre binaire */
@@ -242,7 +273,7 @@ NDT_Status ND_Tree_List_Add (NDT_Root *, NDT_Index_Id, NDT_Root *, NDT_Index_Id
/*------------------------------------------------------------------------------*/
/* Fonction de comparaison de noeuds (pour le quick sort) */
/*------------------------------------------------------------------------------*/
int ND_Node_Compare (void ** Node1, void ** Node2);
int ND_Node_Compare( void **, void **);
/*------------------------------------------------------------------------------*/
/* Ordonne une liste chaînée selon l'algorithme du tri à bulle */
@@ -273,17 +304,17 @@ NDT_Node * ND_Tree_Recursive_Make (long, long, NDT_Node *);
void ND_Tree_Node_Recursive_Add( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Node **, long , NDT_Node *);
NDT_Node * ND_Tree_Node_First_Recursive_Get (NDT_Node * Node);
NDT_Node * ND_Tree_Node_First_Recursive_Get( NDT_Node *);
NDT_Node * ND_Tree_Node_Last_Recursive_Get (NDT_Node * Node);
NDT_Node * ND_Tree_Node_Last_Recursive_Get( NDT_Node *);
NDT_Node * ND_Tree_Node_Recursive_Find (NDT_Node * Node, void * Value, va_list);
NDT_Node * ND_Tree_Node_Recursive_Find( NDT_Node *, void *, va_list);
NDT_Node * ND_Tree_Parent_Next_Recursive_Get( NDT_Node * Node);
NDT_Node * ND_Tree_Parent_Previous_Recursive_Get (NDT_Node * Node);
NDT_Node * ND_Tree_Parent_Previous_Recursive_Get( NDT_Node *);
void ND_Tree_Recursive_Print (NDT_Node * Node, long Depth, FILE *);
void ND_Tree_Recursive_Print( NDT_Node *, long, FILE *);
void ND_Tree_Link_Recursive_Check( NDT_Node *Node, int *, int *, FILE *);
@@ -293,4 +324,4 @@ void ND_Error_Print (void);
void ND_Signal_Trap( int);
NDT_Status ND_Address_Check (void * Address);
NDT_Status ND_Address_Check(void *);

56
libnode.spec Normal file
View File

@@ -0,0 +1,56 @@
Name: libnode
Version: 2.0.5
Release: 1
%define libnode_name %{name}-%{version}-%{release}
%define source %{libnode_name}.src.tgz
Summary: Manages generic list and/or tree node structures
Copyright: GPL
Group: Application/Utilitaires
Distribution: Rx3 OpenSource
Vendor: Rx3
Packager: arnaud.gibert@rx3.net
Source: ftp://ftp.rx3.org/pub/%{source}
Url: http://www.rx3.org/dvp/libnode/download/
BuildRoot: %{_tmppath}/%{libnode_name}-buildroot
AutoReqProv: no
%description
Manages generic list and/or tree node structures
%files
/usr
%build
rm -rf %{libnode_name}
tar -xzvvf /usr/src/RPM/SOURCES/%{source}
cd %{libnode_name}
make clean
make all
%install
cd %{libnode_name}
make install ROOT=$RPM_BUILD_ROOT
%clean
rm -rf %{libnode_name}
rm -rf $RPM_BUILD_ROOT
%changelog
* Tue Jul 15 2003 Arnaud G. Gibert <arnaud@rx3.net> - 2.0.5-1
- Add release in libnode dir name support.
* Tue Jul 15 2003 Marc Regimbeau <marc.regimbeau@flomaco.net> - 2.0.4-2
- Initial release of this spec file.

View File

@@ -1,17 +1,53 @@
SRC := ndbench.c
TARGETS := ndbench ndbench-c ndbench-static ndbench-static-c
FILE_BIN := ndbench ndbench-c ndbench-static ndbench-static-c
FILE_LIB := *.ndb
FILE_DOC := ndbench.xls
include ../Makefile.var
include ../Makefile.rule
DEP_STATIC = ../lib/libnode.a
DEP_DYNAMIC = ../lib/libnode.so
INCLUDE = -I . -I ../include
LIBDIR = -L . -L ../lib
LIB_STATIC = ../lib/libnode.a
LIB_DYNAMIC = -lnode
ifdef _LIBVER_SUPPORT
DEP_VER_STATIC = ../../libver/ver.h ../../libver/libver.a
DEP_VER_DYNAMIC = ../../libver/ver.h ../../libver/libver.so
LIB_VER_STATIC = -I ../../libver ../../libver/libver.a
LIB_VER_DYNAMIC = -I ../../libver -L ../../libver -lver
DEP_STATIC += ../../libver/ver.h ../../libver/libver.a
DEP_DYNAMIC += ../../libver/ver.h ../../libver/libver.so
INCLUDE += -I ../../libver/lib
LIBDIR += -L ../../libver/lib
ifeq ($(OSTYPE),linux-gnu)
LIB_STATIC += ../../libver/lib/libver.a
LIB_DYNAMIC += -lver
else
LIB_STATIC += -ldl ../../libver/lib/libver.a
LIB_DYNAMIC += -ldl -lver
endif
all: ndbench ndbench-static
CFLAGS += -D_LIBVER_SUPPORT -rdynamic
endif
ndbench-static: ndbench.c $(DEP_VER_STATIC) ../lib/node.h ../lib/libnode.a Makefile
gcc -g -o ndbench-static -I ../lib ndbench.c -ldl $(LIB_VER_STATIC) ../lib/libnode.a
ND_CHECK_FLAGS = -DND_MODE=0
ND_NOCHECK_FLAGS = -DND_MODE=1
ndbench: ndbench.c $(DEP_VER_DYNAMIC) ../lib/node.h ../lib/libnode.so Makefile
gcc -g -o ndbench -ldl $(LIB_VER_DYNAMIC) -I ../lib -L ../lib -lnode ndbench.c
clean:
rm -f ndbench ndbench-static
ndbench: ndbench.c $(DEP_DYNAMIC)
$(CC) -o $@ $(CFLAGS) $(ND_NOCHECK_FLAGS) $(INCLUDE) $(LIBDIR) $(LIB_DYNAMIC) $<
ndbench-c: ndbench.c $(DEP_DYNAMIC)
$(CC) -o $@ $(CFLAGS) $(ND_CHECK_FLAGS) $(INCLUDE) $(LIBDIR) $(LIB_DYNAMIC) $<
ndbench-static: ndbench.c $(DEP_STATIC)
$(CC) -o $@ $(CFLAGS) $(ND_NOCHECK_FLAGS) $(INCLUDE) $< $(LIB_STATIC)
ndbench-static-c: ndbench.c $(DEP_STATIC)
$(CC) -o $@ $(CFLAGS) $(ND_CHECK_FLAGS) $(INCLUDE) $< $(LIB_STATIC)

View File

@@ -1,9 +1,9 @@
/*---------------------------------------------------------------------------------*/
/* $RCSfile: ndbench.c,v $ */
/*---------------------------------------------------------------------------------*/
/* $Revision: 2.4 $ */
/* $Revision: 2.7 $ */
/* $Name: $ */
/* $Date: 2002/07/29 14:55:57 $ */
/* $Date: 2004/08/01 23:38:52 $ */
/* $Author: agibert $ */
/*---------------------------------------------------------------------------------*/
@@ -21,7 +21,7 @@
/* GNU Lesser General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with Foobar; if not, write to the Free Software */
/* along with LibNode; if not, write to the Free Software */
/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*---------------------------------------------------------------------------------*/
@@ -41,19 +41,13 @@
#ifdef _WIN32
# include <sys/timeb.h>
#else
# include <sys/time.h>
#endif
#ifdef _LIBVER_SUPPORT
# include <ver.h>
#endif
@@ -64,43 +58,45 @@
/* Defines */
/*---------------------------------------------------------------------------------*/
#ifdef _LIBVER
VER_INFO_EXPORT( ndbench, "$Revision: 2.4 $", "$Name: $", __FILE__, "$Author: agibert $")
#ifdef _LIBVER_SUPPORT
VER_INFO_EXPORT( ndbench, "$Revision: 2.7 $", "$Name: $", __FILE__, "$Author: agibert $");
# define USAGE "Usage : %s [ --help | --version [-v] | --batch_run <batch_file_name>]\n"
#else
# define USAGE "Usage : %s [ --help | --batch_run <batch_file_name>]\n"
#endif
#define ND_MODE 1
#include <node.h>
#define USAGE "Usage : %s [ --help | --version [-v] | --batch_run <batch_file_name>]\n"
#define QUIT 0
#define DS_OPEN 1
#define DS_CLOSE 2
#define DS_FLUSH 3
#define DS_CHECK 4
#define DS_REORG 5
#define DS_INFO_PRINT 6
#define DS_VALUE_ADD 7
#define DS_VALUE_REMOVE 8
#define DS_VALUE_PRINT 9
#define DS_VALUE_FIND 10
#define INDEX_LIST_OPEN 11
#define INDEX_TREE_OPEN 12
#define INDEX_CLOSE 13
#define INDEX_FLUSH 14
#define INDEX_CHECK 15
#define INDEX_LIST_SUBTYPE_SET 16
#define INDEX_LIST_TO_TREE 17
#define INDEX_TREE_SUBTYPE_SET 18
#define INDEX_TREE_TO_LIST 19
#define INDEX_REORG 20
#define INDEX_INFO_PRINT 21
#define INDEX_VALUE_PRINT 22
#define BATCH_RUN 23
#define LIB_OPEN 1
#define LIB_CLOSE 2
#define DS_OPEN 3
#define DS_CLOSE 4
#define DS_FLUSH 5
#define DS_CHECK 6
#define DS_REORG 7
#define DS_INFO_PRINT 8
#define DS_VALUE_ADD 9
#define DS_VALUE_REMOVE 10
#define DS_VALUE_PRINT 11
#define DS_VALUE_FIND 12
#define INDEX_LIST_OPEN 13
#define INDEX_TREE_OPEN 14
#define INDEX_CLOSE 15
#define INDEX_FLUSH 16
#define INDEX_CHECK 17
#define INDEX_LIST_SUBTYPE_SET 18
#define INDEX_LIST_TO_TREE 19
#define INDEX_TREE_SUBTYPE_SET 20
#define INDEX_TREE_TO_LIST 21
#define INDEX_REORG 22
#define INDEX_INFO_PRINT 23
#define INDEX_VALUE_PRINT 24
#define BATCH_RUN 25
#define COMMAND_NB 24
#define COMMAND_NB 26
#define INDEX_NB 32
@@ -116,6 +112,11 @@ VER_INFO_EXPORT( ndbench, "$Revision: 2.4 $", "$Name: $", __FILE__, "$Author: a
#define BUF_LEN 99
#define BUF_SIZE (BUF_LEN + 1)
/*---------------------------------------------------------------------------------*/
@@ -216,6 +217,8 @@ void Batch_Run( NDT_Root **, FILE *, FILE *, short);
Command Command_Tab[] =
{
{ QUIT, "Quit", "Quit", ( DS_STATE_OPENED | DS_STATE_CLOSED), ( NDD_INDEX_TYPE_LIST | NDD_INDEX_TYPE_TREE)},
{ LIB_OPEN, "Lib_Open", "Open Library", ( DS_STATE_OPENED | DS_STATE_CLOSED), ( NDD_INDEX_TYPE_LIST | NDD_INDEX_TYPE_TREE)},
{ LIB_CLOSE, "Lib_Close", "Close Library", ( DS_STATE_OPENED | DS_STATE_CLOSED), ( NDD_INDEX_TYPE_LIST | NDD_INDEX_TYPE_TREE)},
{ DS_OPEN, "DS_Open", "Open DataStructure", ( DS_STATE_CLOSED), ( NDD_INDEX_TYPE_LIST | NDD_INDEX_TYPE_TREE)},
{ DS_CLOSE, "DS_Close", "Close DataStructure", ( DS_STATE_OPENED), ( NDD_INDEX_TYPE_LIST | NDD_INDEX_TYPE_TREE)},
{ DS_FLUSH, "DS_Flush", "Flush DataStructure", ( DS_STATE_OPENED), ( NDD_INDEX_TYPE_LIST | NDD_INDEX_TYPE_TREE)},
@@ -262,7 +265,7 @@ NDT_Status Module_Manager( NDT_Root *Root_Ptr, NDT_Index_Id Index_Id, NDT_Nod
Command_Name = "NDD_CMD_MANAGER_VERSION";
*Version_Name_Ptr = "$Revision: 2.4 $ $Name: $ $Date: 2002/07/29 14:55:57 $ $Author: agibert $";
*Version_Name_Ptr = "$Revision: 2.7 $ $Name: $ $Date: 2004/08/01 23:38:52 $ $Author: agibert $";
return( NDS_OK);
}
@@ -549,7 +552,7 @@ void Command_Get( int *choice, char **arg1, char **arg2, FILE *File_Output,
fprintf( File_Output, "\nChoice ? ");
}
if( fgets( buf, 99, File_Input) != NULL)
if( fgets( buf, BUF_LEN, File_Input) != NULL)
{
while( ( buf[ strlen( buf) - 1] == '\r') || ( buf[ strlen( buf) - 1] == '\n') || ( buf[ strlen( buf) - 1] == '\t') || ( buf[ strlen( buf) - 1] == ' '))
{
@@ -663,7 +666,7 @@ void Command_Index_Range_Get( FILE *File_Output, int *Low, int *High, char
if( Arg == NULL)
{
fprintf( File_Output, "%s: %s range (?-?) : ", Command_Tab[Choice].Name, Obj_Name);
fgets( buf, 99, File_Input);
fgets( buf, BUF_LEN, File_Input);
Arg = buf;
}
@@ -702,7 +705,7 @@ void Command_Exec( NDT_Root **DS_Ptr_Ptr, FILE *File_Output, int Choice, cha
{
int low, high, i, j, nb_removed, Nb_Detected, Nb_Corrected;
T_Module Ref_Module, *Module_Ptr;
char buf[100];
char buf[BUF_SIZE];
NDT_Index_Type index_subtype;
@@ -715,6 +718,40 @@ void Command_Exec( NDT_Root **DS_Ptr_Ptr, FILE *File_Output, int Choice, cha
break;
}
case LIB_OPEN:
{
Command_Exec_Begin_Print( File_Output, Choice);
if( Arg1 == NULL)
{
fprintf( File_Output, "Library_Open: Debug Mode ( 0:OFF | 1:ON) ? ");
fgets( buf, BUF_LEN, File_Input);
Arg1 = buf;
}
Choice = atoi( Arg1);
t_start( t_exec);
ND_Library_Open( Choice);
t_stop( t_exec);
Command_Exec_End_Print( File_Output, Choice, t_exec, 1);
break;
}
case LIB_CLOSE:
{
Command_Exec_Begin_Print( File_Output, Choice);
t_start( t_exec);
ND_Library_Close();
t_stop( t_exec);
Command_Exec_End_Print( File_Output, Choice, t_exec, 1);
break;
}
case DS_OPEN:
{
Command_Exec_Begin_Print( File_Output, Choice);
@@ -805,7 +842,7 @@ void Command_Exec( NDT_Root **DS_Ptr_Ptr, FILE *File_Output, int Choice, cha
if( Arg2 == NULL)
{
fprintf( File_Output, "DS_Value_Add: Add order ( 0:croissant | 1:decroissant) ? ");
fgets( buf, 99 ,stdin);
fgets( buf, BUF_LEN ,stdin);
Arg2 = buf;
}
@@ -879,7 +916,7 @@ void Command_Exec( NDT_Root **DS_Ptr_Ptr, FILE *File_Output, int Choice, cha
if( Arg2 == NULL)
{
fprintf( File_Output, "\nDS_Value_Remove: Remove order (croissant=0 | decroissant=1) ? ");
fgets( buf, 99, File_Input);
fgets( buf, BUF_LEN, File_Input);
Arg2 = buf;
}
@@ -1060,7 +1097,7 @@ void Command_Exec( NDT_Root **DS_Ptr_Ptr, FILE *File_Output, int Choice, cha
if( Arg2 == NULL)
{
fprintf( File_Output, "Index_List_SubType_Set: List SubType ( 0:FIFO | 1:LIFO | 2:Sorted) ? ");
fgets( buf, 99, File_Input);
fgets( buf, BUF_LEN, File_Input);
Arg2 = buf;
}
@@ -1131,7 +1168,7 @@ void Command_Exec( NDT_Root **DS_Ptr_Ptr, FILE *File_Output, int Choice, cha
if( Arg2 == NULL)
{
fprintf( File_Output, "Index_Tree_SubType_Set: Tree SubType (0:UnBalanced | 1:Balanced) ? ");
fgets( buf, 99, stdin);
fgets( buf, BUF_LEN, stdin);
Arg2 = buf;
}
@@ -1320,7 +1357,7 @@ void Command_Exec( NDT_Root **DS_Ptr_Ptr, FILE *File_Output, int Choice, cha
{
fprintf( File_Output, "Batch_Run: Batch file name ? ");
fgets( buf, 99, stdin);
fgets( buf, BUF_LEN, stdin);
buf[ strlen( buf) - 1] = '\0';
Arg1 = buf;
}
@@ -1397,7 +1434,6 @@ void Batch_Run( NDT_Root **DS_Ptr_Ptr, FILE *File_Output, FILE *File_Input,
int main( int argc, char ** argv)
{
NDT_Root *ds_ptr = NULL;
int Debug = NDD_TRUE;
/* Args Parsing */
@@ -1409,37 +1445,31 @@ int main( int argc, char ** argv)
fprintf( stderr, USAGE, argv[0]);
return( 1);
}
#ifdef _LIBVER_SUPPORT
else if( !strcmp( argv[1], "--version"))
{
if( argc >= 3 && !strcmp( argv[2], "-v"))
{
#ifdef _LIBVER_SUPPORT
return( VER_Object_Print( stdout, VERD_VERBOSE));
#endif
}
else
{
#ifdef _LIBVER_SUPPORT
return( VER_Object_Print( stdout, VERD_MINIMAL));
}
}
#endif
}
}
else if( !strcmp( argv[1], "--batch_run"))
{
/* Batch Mode */
ND_Library_Open( Debug);
Command_Exec( &ds_ptr, stdout, BATCH_RUN, argv[2], NULL, stdin);
ND_Library_Close();
return( 0);
}
else
{
fprintf( stderr, USAGE, argv[0]);
return(0);
return( -1);
}
}
@@ -1447,11 +1477,7 @@ int main( int argc, char ** argv)
/* Interactive Mode */
ND_Library_Open( Debug);
Batch_Run( &ds_ptr, stdout, stdin, 1);
ND_Library_Close();
return( 0);
}

10
util/test-10.ndb Normal file
View File

@@ -0,0 +1,10 @@
Lib_Open 0
DS_Open
Index_List_Open 0-0
DS_Value_Add 1-10 0
DS_Value_Find 1-10
Index_List_To_Tree 0-0
DS_Value_Find 1-10
DS_Check
DS_Close
Lib_Close

View File

@@ -1,3 +1,4 @@
Lib_Open 0
DS_Open
Index_List_Open 0-0
DS_Value_Add 1-100000 0
@@ -6,3 +7,4 @@ Index_List_To_Tree 0-0
DS_Value_Find 1-100000
DS_Check
DS_Close
Lib_Close

View File

@@ -1,3 +1,4 @@
Lib_Open 0
DS_Open
Index_List_Open 0-0
DS_Value_Add 1-10000 0
@@ -6,3 +7,4 @@ Index_List_To_Tree 0-0
DS_Value_Find 1-10000
DS_Check
DS_Close
Lib_Close

View File

@@ -1,3 +1,4 @@
Lib_Open 0
DS_Open
Index_List_Open 0-0
DS_Value_Add 1-1000000 0
@@ -6,3 +7,4 @@ Index_List_To_Tree 0-0
DS_Value_Find 1-1000000
DS_Check
DS_Close
Lib_Close

View File

@@ -1,3 +1,5 @@
Batch_Run test-error.ndb
Batch_Run test-10.ndb
Batch_Run test-10K.ndb
Batch_Run test-100K.ndb
Batch_Run test-1M.ndb

11
util/test-error.ndb Normal file
View File

@@ -0,0 +1,11 @@
DS_Open
Lib_Open 0
DS_Open
Index_List_Open 0-0
DS_Value_Add 1-10 0
Lib_Close
Lib_Open 1
DS_Open
Index_List_Open 0-0
DS_Value_Add 1-10 0
Lib_Close