#define DRD64_ERROR_PTN_NOMEMORY 0x00070000
#define DRD64_ERROR_PTN_SOCKET 0x00080000
#define DRD64_ERROR_PTN_INETADDR 0x00090000
+#define DRD64_ERROR_PTN_BUG 0x00ff0000
#define DRD64_ERROR_PTN_FUNCTION 0x00ff0000
#define DRD64_ERROR_MODULE_MARSHALD 0x01000000
#define DRD64_ERROR_MODULE_DEBUGD 0x02000000
#define DRD64_ERROR_MODULE_SERVER 0x03000000
-#define DRD64_ERROR_MODULE_LIBGOBLIN 0x11000000
-#define DRD64_ERROR_MODULE_LIBDRD64 0x12000000
-#define DRD64_ERROR_MODULE_LIBARCH 0x20000000
+#define DRD64_ERROR_MODULE_LIBDRD64 0x10000000
+#define DRD64_ERROR_MODULE_LIBARCH 0x21000000
+#define DRD64_ERROR_MODULE_LIBBROWNIE 0x22000000
#define DRD64_ERROR_MODULE_LIBASM 0x30000000
-#define DRD64_ERROR_MODULE_UI 0x71000000
+#define DRD64_ERROR_MODULE_DRCC 0x40000000
+#define DRD64_ERROR_MODULE_LIBGOBLIN 0x50000000
+#define DRD64_ERROR_MODULE_LIBEDITTEXT 0x61000000
+#define DRD64_ERROR_MODULE_LIBFILETYPE 0x62000000
+#define DRD64_ERROR_MODULE_RESERVE 0x70000000
/* [Location] Archtechture Code ======= ___**_____ */
#define DRD64_ERROR_ARCH_NODEPEND 0x00000000
DWord dw_error;
DWord dw_location;
int i_system_errno;
- Value v_value;
- char str_string[DRD64_MAX_PATH+1];
+ QWord qw_value[2];
} Drd64_ErrorInfo;
/* drd64_libbrownie_error.c Functions ========================*/
LIBBROWNIE_FUNC
- int
- Drd64_LibBrownie_Error_SetErrorInfo(
- DWord dw_errcode,
- DWord dw_errlocation,
- int i_syserrno );
-
+ int LibBrownie_Error_SetErrorInfo(
+ DWord dw_errcode, DWord dw_errlocation, int i_syserrno,
+ QWord qw_value1, QWord qw_value2 );
LIBBROWNIE_FUNC
- int
- Drd64_LibBrownie_Error_InitErrorSystem(
- int i_max_errorinfo );
-
+ Drd64_ErrorInfo *LibBrownie_Error_GetErrorInfo( int i_history_id );
LIBBROWNIE_FUNC
- void
- Drd64_LibBrownie_Error_TermErrorSystem(
- void );
-
+ int LibBrownie_Error_InitErrorSystem( int i_max_errorinfo );
LIBBROWNIE_FUNC
- Drd64_ErrorInfo *
- Drd64_LibBrownie_Error_GetErrorInfo(
- int i_history_id );
+ void LibBrownie_Error_TermErrorSystem( void );
/* drd64_libbrownie_inetaddr.c Functions =====================*/
# Section 1 : Setting Build Command ####################################
MAKE = make
-CC = gcc
+CC = cc
SUPER_HEADER = ../include/drd64_packet.h \
CLIENT_HEADER =
USER_HEADER =
-FLAGS_DEBUG = -g
+FLAGS_DEBUG = -g -Wall
LIBBROWNIE_TARGET = libbrownie.a
LIBBROWNIE_OBJS = drd64_libbrownie_error.o \
../include/libbrownie.h \
$(SUPER_HEADER)
+TEST_FLAGS_COMPILE = -I/usr/local/include
+TEST_FLAGS_LINKER = -L/usr/local/lib
+TEST_TARGET = test_libbrownie
+TEST_OBJS = \
+ test_libbrownie.o \
+ test_libbrownie_error.o
+TEST_HEADER = test_libbrownie.h
-all: $(LIBBROWNIE_TARGET)
+
+all: $(LIBBROWNIE_TARGET) test
+test: $(TEST_TARGET)
+ ./$(TEST_TARGET)
$(LIBBROWNIE_TARGET): $(LIBBROWNIE_OBJS)
ar rv $(LIBBROWNIE_TARGET) $(LIBBROWNIE_OBJS)
ranlib $(LIBBROWNIE_TARGET)
+ rm -f ../$(LIBBROWNIE_TARGET)
cp $(LIBBROWNIE_TARGET) ..
drd64_libbrownie_error.o: drd64_libbrownie_error.c $(LIBBROWNIE_HEADER)
- gcc -c -o drd64_libbrownie_error.o $(FLAGS_DEBUG) \
+ $(CC) -c -o drd64_libbrownie_error.o $(FLAGS_DEBUG) \
drd64_libbrownie_error.c
drd64_libbrownie_inetaddr.o: drd64_libbrownie_inetaddr.c $(LIBBROWNIE_HEADER)
- gcc -c -o drd64_libbrownie_inetaddr.o $(FLAGS_DEBUG) \
+ $(CC) -c -o drd64_libbrownie_inetaddr.o $(FLAGS_DEBUG) \
drd64_libbrownie_inetaddr.c
drd64_libbrownie_socket.o: drd64_libbrownie_socket.c $(LIBBROWNIE_HEADER)
- gcc -c -o drd64_libbrownie_socket.o $(FLAGS_DEBUG) \
+ $(CC) -c -o drd64_libbrownie_socket.o $(FLAGS_DEBUG) \
drd64_libbrownie_socket.c
+test_libbrownie.o: test_libbrownie.c $(LIBBROWNIE_HEADER) $(TEST_HEADER)
+ $(CC) -c -o test_libbrownie.o \
+ $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
+ test_libbrownie.c
+test_libbrownie_error.o: test_libbrownie_error.c $(LIBBROWNIE_HEADER) $(TEST_HEADER)
+ $(CC) -c -o test_libbrownie_error.o \
+ $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
+ test_libbrownie_error.c
+
+$(TEST_TARGET): $(TEST_OBJS) $(LIBBROWNIE_OBJS) $(LIBBROWNIE_TARGET)
+ $(CC) -o $(TEST_TARGET) $(FLAGS_DEBUG) $(LIBBROWNIE_OBJS) $(TEST_OBJS) $(LIBBROWNIE_TARGET) \
+ $(TEST_FLAGS_LINKER) -lcunit
+
clean:
rm -f *.o
rm -f $(LIBBROWNIE_TARGET)
rm -f *.core
+ rm -f $(TEST_TARGET)
+ rm -f *.xml
+
#include<stdlib.h>
#include<string.h>
#include<netdb.h>
+#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<sys/un.h>
#include<netinet/in.h>
#include<netinet/tcp.h>
+#include<arpa/inet.h>
#include"../include/drd64_types.h"
#include"../include/drd64_defines.h"
#include"../include/drd64_error.h"
#define DRD64_SRC_LIBBROWNIE_ERROR
#include"drd64_libbrownie.h"
-static Drd64_ErrorInfo *gp_errorinfo_pool;
-static Drd64_ErrorInfo **gpp_errorinfo_history;
-static int gi_max_errorinfo;
+static Drd64_ErrorInfo *gp_errorinfo_pool = NULL;
+static Drd64_ErrorInfo **gpp_errorinfo_history = NULL;
+static int gi_max_errorinfo = -1;
+static int gi_refcount = 0;
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
LIBBROWNIE_FUNC
int
Drd64_LibBrownie_Error_SetErrorInfo(
DWord dw_errcode,
DWord dw_errlocation,
- int i_syserrno )
+ int i_syserrno,
+ QWord qw_value1,
+ QWord qw_value2 )
{
int i_cnt;
Drd64_ErrorInfo *p_errinfo;
- p_errinfo = *(gpp_errorinfo_history + gi_max_errorinfo);
+ p_errinfo = *(gpp_errorinfo_history + (gi_max_errorinfo - 1));
for( i_cnt = gi_max_errorinfo - 1; i_cnt > 0; i_cnt-- ) {
*(gpp_errorinfo_history + i_cnt)
= *(gpp_errorinfo_history + (i_cnt - 1));
p_errinfo->dw_error = dw_errcode;
p_errinfo->dw_location = dw_errlocation;
p_errinfo->i_system_errno = i_syserrno;
+ p_errinfo->qw_value[0] = qw_value1;
+ p_errinfo->qw_value[1] = qw_value2;
*(gpp_errorinfo_history + 0) = p_errinfo;
}
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBBROWNIE_FUNC
+Drd64_ErrorInfo *
+ LibBrownie_Error_GetErrorInfo(
+ int i_history_id )
+{
+ Drd64_ErrorInfo *p_errinfo;
+
+ if((gi_max_errorinfo <= i_history_id ) || ( 0 > i_history_id ))
+ { return NULL; }
+
+ p_errinfo = *(gpp_errorinfo_history + i_history_id);
+
+ return p_errinfo;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
LIBBROWNIE_FUNC
int
- Drd64_LibBrownie_Error_InitErrorSystem(
+ LibBrownie_Error_InitErrorSystem(
int i_max_errorinfo )
{
int i_cnt;
Drd64_ErrorInfo *p_errinfo;
- Drd64_ErrorInfo *p_errnow;
Drd64_ErrorInfo **pp_errhistory;
gp_errorinfo_pool = NULL;
if( 1 > i_max_errorinfo ) { return 0x03; }
+ gi_refcount++;
+ if( 1 < gi_refcount ) { return 0x00; }
+
p_errinfo = (Drd64_ErrorInfo *)malloc(
sizeof( Drd64_ErrorInfo ) * i_max_errorinfo );
if( NULL == p_errinfo ) { return 0x01; }
}
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
LIBBROWNIE_FUNC
void
- Drd64_LibBrownie_Error_TermErrorSystem(
+ LibBrownie_Error_TermErrorSystem(
void )
{
+ gi_refcount--;
+ if( 0 < gi_refcount ) { return; }
+
if( NULL != gp_errorinfo_pool ) {
free( gp_errorinfo_pool );
gp_errorinfo_pool = NULL;
gpp_errorinfo_history = NULL;
}
- return;
-}
-
-
-LIBBROWNIE_FUNC
-Drd64_ErrorInfo *
- Drd64_LibBrownie_Error_GetErrorInfo(
- int i_history_id )
-{
- Drd64_ErrorInfo *p_errinfo;
-
- if((gi_max_errorinfo <= i_history_id ) || ( 0 > i_history_id ))
- { return NULL; }
-
- p_errinfo = *(gpp_errorinfo_history + i_history_id);
+ gi_max_errorinfo = 0;
- return p_errinfo;
+ return;
}
--- /dev/null
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+ D r . D e a m o n 6 4
+ for INTEL64(R), AMD64(R)
+
+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.c
+Function:
+Comment:
+----------------------------------------------------------------------*/
+
+#define DRD64_SRC_TEST_LIBBROWNIE
+#include"drd64_libbrownie.h"
+#include"test_libbrownie.h"
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+int
+ main(
+ int argc,
+ char *argv[] )
+{
+ CU_initialize_registry();
+
+ Test_LibBrownie_Error();
+
+ CU_basic_run_tests();
+ CU_cleanup_registry();
+
+ return 0x00;
+}
+
+
+/* EOF of drd64_.c ----------------------------------- */
--- /dev/null
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+ D r . D e a m o n 6 4
+ for INTEL64(R), AMD64(R)
+
+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.h
+Function: Header
+Comment:
+----------------------------------------------------------------------*/
+
+#ifndef DRD64_HEADER_TEST_LIBBROWNIE
+#define DRD64_HEADER_TEST_LIBBROWNIE
+
+#include"CUnit/CUnit.h"
+#include"CUnit/Basic.h"
+
+#ifdef DRD64_SRC_TEST_LIBBROWNIE_ERROR
+ #define DRD64_TEST_LIBBROWNIE_ERROR_EXTERN
+#else
+ #define DRD64_TEST_LIBBROWNIE_ERROR_EXTERN extern
+#endif
+DRD64_TEST_LIBBROWNIE_ERROR_EXTERN int Test_LibBrownie_Error( void );
+
+
+
+#endif /* DRD64_HEADER_XXX */
+
+/* EOF of drd64_.h ----------------------------------- */
--- /dev/null
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+ D r . D e a m o n 6 4
+ for INTEL64(R), AMD64(R)
+
+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.c
+Function:
+Comment:
+----------------------------------------------------------------------*/
+
+#define DRD64_SRC_TEST_LIBBROWNIE_ERROR
+#include"test_libbrownie.h"
+#include"drd64_libbrownie.h"
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+void Test_LibBrownie_Error_test00_001(void)
+{
+ CU_ASSERT( 0x01 );
+ return;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+DRD64_TEST_LIBBROWNIE_ERROR_EXTERN
+int
+ Test_LibBrownie_Error(
+ void )
+{
+ CU_pSuite pt_brownie;
+
+ pt_brownie = CU_add_suite( "LibBrownie_Error", NULL, NULL );
+
+ CU_add_test( pt_brownie, "LibBrownie_Error_test00_001", Test_LibBrownie_Error_test00_001 );
+
+ return 0x00;
+}
+
+
+/* EOF of drd64_.c ----------------------------------- */