rm -f $(DRCC_TARGET)
rm -f $(TEST_DRCC_TARGET)
rm -f *.core
+ rm -f ./testdata/savetest.h
+
----------------------------------------------------------------------*/
int
DrCC_EditText_DebugTextInfo(
- int i_tinfoid )
+ int i_tinfoid,
+ Byte b_putflag )
{
DWord dw_nowrow;
Byte *pb_now;
p_tinfo = DrCC_EditText_GetTextInfo( i_tinfoid );
if( NULL == p_tinfo ) { return -0x02; }
- puts("----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9");
- puts( "[1] TextInfo Struct Data ");
- printf(" TextInfo Struct ID: %d\n", p_tinfo->i_fd);
- printf(" Path: %s\n", p_tinfo->str_pathname );
- printf(" File: %s\n", p_tinfo->str_filename );
- printf(" Lines: %u, Buffer Lines: %u\n", p_tinfo->dw_maxline, p_tinfo->dw_bufline );
- printf(" Buffer size: %u\n", p_tinfo->dw_bufsize );
- printf(" FileDescriptor: %d, File SubType: %04x\n", p_tinfo->i_fd, p_tinfo->w_subtype );
-
- puts("************ ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9");
- puts( "[2] Text Data ");
+ if( 0x00 != b_putflag ) {
+ puts("----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9");
+ puts( "[1] TextInfo Struct Data ");
+ printf(" TextInfo Struct ID: %d\n", p_tinfo->i_fd);
+ printf(" Path: %s\n", p_tinfo->str_pathname );
+ printf(" File: %s\n", p_tinfo->str_filename );
+ printf(" Lines: %u, Buffer Lines: %u\n", p_tinfo->dw_maxline, p_tinfo->dw_bufline );
+ printf(" Buffer size: %u\n", p_tinfo->dw_bufsize );
+ printf(" FileDescriptor: %d, File SubType: %04x\n", p_tinfo->i_fd, p_tinfo->w_subtype );
+ }
+
+ if( 0x00 != b_putflag ) {
+ puts("************** ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9");
+ puts( "[2] Text Data ");
+ }
p_before = NULL;
p_line = p_tinfo->p_lineinfo;
for( dw_nowrow = 0; dw_nowrow < p_tinfo->dw_maxline; dw_nowrow++ ) {
- printf("%04u [%02u:%02u] ",
- dw_nowrow, p_line->dw_strlen, p_line->dw_linelen );
+ if( 0x00 != b_putflag ) {
+ printf("%04u [%3u:%3u] ",
+ dw_nowrow, p_line->dw_strlen, p_line->dw_linelen );
+ }
pb_now = p_tinfo->pb_text + p_line->dw_start;
if( 0 == p_line->dw_strlen ) { return -0x03; }
if( '\n' != *(pb_now + p_line->dw_strlen - 1) ) { return -0x04; }
- fputs( (char *)pb_now, stdout );
+
+ if( 0x00 != b_putflag ) {
+ fputs( (char *)pb_now, stdout );
+ }
+
if( p_before != p_line->p_before ) { return -0x05; }
p_before = p_line;
p_line = p_line->p_next;
}
if( NULL != p_line ) { return -0x06; }
- puts("************ ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9");
+ if( 0x00 != b_putflag ) {
+ puts("************** ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9");
+ }
return 0x00;
}
/*----------------------------------------------------------------------
-Write Text File
+Save Text File
----------------------------------------------------------------------*/
+int
+ DrCC_EditText_SaveTextFile(
+ char *pstr_path,
+ char *pstr_filename,
+ int i_tinfoid )
+{
+ int i_fd;
+ int i_result;
+ DWord dw_nowrow;
+ Byte *pb_now;
+ char *pstr_filepath;
+ off_t t_offset;
+ ssize_t sz_write;
+ mode_t t_mode;
+ char str_filepath_tmp[DRD64_MAX_PATH];
+ Drd64_DrCC_TextInfo *p_tinfo;
+ Drd64_DrCC_LineInfo *p_line;
+
+ if( 0 > i_tinfoid ) { return -0x01; }
+ p_tinfo = DrCC_EditText_GetTextInfo( i_tinfoid );
+ if( NULL == p_tinfo ) { return -0x02; }
+
+ if(( NULL == pstr_path ) || ( NULL == pstr_filename)) {
+ i_result = DrCC_EditText_CatPathFilename(
+ str_filepath_tmp, p_tinfo->str_pathname, p_tinfo->str_filename );
+ if( 0x00 != i_result ) { return -0x03; }
+ pstr_filepath = str_filepath_tmp;
+ }
+ else {
+ i_result = DrCC_EditText_CatPathFilename(
+ str_filepath_tmp, pstr_path, pstr_filename );
+ if( 0x00 != i_result ) { return -0x03; }
+ pstr_filepath = str_filepath_tmp;
+
+ t_mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
+ i_fd = open( pstr_filepath, O_RDWR | O_CREAT, t_mode );
+ if( 0x00 > i_fd ) { return -0x04; }
+
+ close( p_tinfo->i_fd );
+ p_tinfo->i_fd = i_fd;
+ strncpy( p_tinfo->str_pathname, pstr_path, DRD64_MAX_PATH );
+ strncpy( p_tinfo->str_filename, pstr_filename, DRD64_MAX_PATH );
+ }
+
+ t_offset = lseek( p_tinfo->i_fd, 0, SEEK_SET );
+ if( -0x01 == t_offset ) { return -0x10; }
+
+ p_line = p_tinfo->p_lineinfo;
+ for( dw_nowrow = 0; dw_nowrow < p_tinfo->dw_maxline; dw_nowrow++ ) {
+ pb_now = p_tinfo->pb_text + p_line->dw_start;
+ if( 0 == p_line->dw_strlen ) { return -0x11; }
+ if( '\n' != *(pb_now + p_line->dw_strlen - 1) ) { return -0x12; }
+
+ sz_write = write( p_tinfo->i_fd, (void *)pb_now, (size_t)p_line->dw_strlen );
+ if( (size_t)p_line->dw_strlen != sz_write ) { return -0x13; }
+
+ p_line = p_line->p_next;
+ }
+ if( NULL != p_line ) { return -0x20; }
+
+ return 0x00;
+}
/*----------------------------------------------------------------------
#ifdef DRCC_EDITTEXT_INTERNALFUNC
-int DrCC_EditText_DebugTextInfo( int i_tinfoid );
+int DrCC_EditText_DebugTextInfo( int i_tinfoid, Byte b_putflag );
DWord DrCC_EditText_GetMaxNum_TextInfo(void);
DWord DrCC_EditText_GetAllocNum_TextInfo(void);
int DrCC_EditText_CatPathFilename(
int DrCC_EditText_FreeTextInfo( Drd64_DrCC_TextInfo *p_textinfo );
int DrCC_EditText_ReadTextFile(
Drd64_DrCC_TextInfo *p_tinfo, char *pstr_filepath, DWord dw_fsize );
-
+int DrCC_EditText_SaveTextFile(
+ char *pstr_path, char *pstr_filename, int i_tinfoid );
#endif
#endif /* DRD64_HEADER_DRCC_EDITTEXT */
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
char *
+ DrCC_FileType_GetFileNamePosition(
+ char *pstr_filepath )
+{
+ int i_maxlen;
+ int i_len = 0;
+ char *pstr_now;
+
+ assert( NULL != pstr_filepath );
+
+ i_maxlen = (int)strnlen( pstr_filepath, DRD64_MAX_PATH );
+ pstr_now = pstr_filepath + i_maxlen;
+ for( i_len = i_maxlen; i_len > 0; i_len-- ) {
+ if( '/' == *pstr_now-- ) { break; }
+ }
+
+ if( 1 > i_len ) { pstr_now = pstr_filepath + i_maxlen; }
+ else { pstr_now += 2; }
+
+ return pstr_now;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+char *
DrCC_FileType_GetFileExtPosition(
char *pstr_filepath )
{
int
DrCC_FileType_GetFileType_fromFileName(
Drd64_DrCC_FileType *p_filetype,
- char *pstr_filename )
+ char *pstr_filepath )
{
char *pstr_ext;
+ char *pstr_name;
int i_cnt;
/* Search from Ext. DB --- */
- pstr_ext = DrCC_FileType_GetFileExtPosition( pstr_filename );
+ pstr_ext = DrCC_FileType_GetFileExtPosition( pstr_filepath );
i_cnt = 0;
do {
if( !strncmp( pstr_ext, fexttypedb[i_cnt].str_ext, DRD64_MAX_PATH ) )
}while( (Byte)0xff != fexttypedb[++i_cnt].b_type );
/* Judge of Special File-Name */
+ pstr_name = DrCC_FileType_GetFileNamePosition( pstr_filepath );
i_cnt = 0;
do {
- if( !strncmp( pstr_filename, fnametypedb[i_cnt].str_filename, DRD64_MAX_PATH ) )
+ if( !strncmp( pstr_name, fnametypedb[i_cnt].str_filename, DRD64_MAX_PATH ) )
{
p_filetype->b_type = fnametypedb[i_cnt].b_type;
p_filetype->w_subtype = fnametypedb[i_cnt].w_subtype;
#ifdef DRCC_FILETYPE_INTERNALFUNC
+char *DrCC_FileType_GetFileNamePosition( char *pstr_filepath );
char *DrCC_FileType_GetFileExtPosition( char *pstr_filepath );
int DrCC_FileType_VerifyTextFile( int *pi_lines, int i_fd );
#endif
#include"test_drcc.h"
#include"drcc.h"
+#define DEBUG_TEXTINFO_OUTPUT 0x00
+ /* Output TextData for Console if this value isn't 0x00 when run test_drcc program.*/
+
+/* DrCC_EditText_SaveTextFile *****************************************/
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_SaveTextFile_test00_001(void)
+{
+ int i_tinfoid;
+ int i_result;
+
+ i_tinfoid = DrCC_EditText_OpenTextFile("./testdata", "drcc_testfile.c");
+ CU_ASSERT( 0x00 <= i_tinfoid );
+
+ i_result = DrCC_EditText_DebugTextInfo( i_tinfoid, DEBUG_TEXTINFO_OUTPUT );
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = DrCC_EditText_SaveTextFile( NULL, NULL, i_tinfoid );
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = DrCC_EditText_CloseFile( i_tinfoid );
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_SaveTextFile_test00_002(void)
+{
+ int i_tinfoid;
+ int i_result;
+
+ i_tinfoid = DrCC_EditText_OpenTextFile("./testdata", "drcc_testfile.h");
+ CU_ASSERT( 0x00 <= i_tinfoid );
+
+ i_result = DrCC_EditText_DebugTextInfo( i_tinfoid, DEBUG_TEXTINFO_OUTPUT );
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = DrCC_EditText_SaveTextFile( "./testdata", "savetest.h", i_tinfoid );
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = DrCC_EditText_CloseFile( i_tinfoid );
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+
/* DrCC_EditText_OpenTextFile *****************************************/
/*--------------------------------------------------------------------*/
void Test_DrCC_EditText_OpenTextFile_test00_001(void)
i_tinfoid = DrCC_EditText_OpenTextFile("./testdata", "drcc_testfile.c");
CU_ASSERT( 0x00 <= i_tinfoid );
- i_result = DrCC_EditText_DebugTextInfo( i_tinfoid );
+ i_result = DrCC_EditText_DebugTextInfo( i_tinfoid, DEBUG_TEXTINFO_OUTPUT );
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = DrCC_EditText_CloseFile( i_tinfoid );
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_OpenTextFile_test00_002(void)
+{
+ int i_tinfoid;
+ int i_result;
+
+ i_tinfoid = DrCC_EditText_OpenTextFile("./testdata", "drcc_testfile.h");
+ CU_ASSERT( 0x00 <= i_tinfoid );
+
+ i_result = DrCC_EditText_DebugTextInfo( i_tinfoid, DEBUG_TEXTINFO_OUTPUT );
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = DrCC_EditText_CloseFile( i_tinfoid );
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_OpenTextFile_test00_003(void)
+{
+ int i_tinfoid;
+ int i_result;
+
+ i_tinfoid = DrCC_EditText_OpenTextFile("./testdata", "x8664db.csv");
+ CU_ASSERT( 0x00 <= i_tinfoid );
+
+ i_result = DrCC_EditText_DebugTextInfo( i_tinfoid, DEBUG_TEXTINFO_OUTPUT );
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = DrCC_EditText_CloseFile( i_tinfoid );
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_EditText_OpenTextFile_test00_004(void)
+{
+ int i_tinfoid;
+ int i_result;
+
+ i_tinfoid = DrCC_EditText_OpenTextFile("./testdata", "Makefile");
+ CU_ASSERT( 0x00 <= i_tinfoid );
+
+ i_result = DrCC_EditText_DebugTextInfo( i_tinfoid, DEBUG_TEXTINFO_OUTPUT );
CU_ASSERT( 0x00 == i_result );
i_result = DrCC_EditText_CloseFile( i_tinfoid );
CU_add_test( pt_edittext, "EditText_OpenTextFile_test00_001",
Test_DrCC_EditText_OpenTextFile_test00_001 );
+ CU_add_test( pt_edittext, "EditText_OpenTextFile_test00_002",
+ Test_DrCC_EditText_OpenTextFile_test00_002 );
+ CU_add_test( pt_edittext, "EditText_OpenTextFile_test00_003",
+ Test_DrCC_EditText_OpenTextFile_test00_003 );
+ CU_add_test( pt_edittext, "EditText_OpenTextFile_test00_004",
+ Test_DrCC_EditText_OpenTextFile_test00_004 );
+
+ CU_add_test( pt_edittext, "EditText_SaveTextFile_test00_001",
+ Test_DrCC_EditText_SaveTextFile_test00_001 );
+ CU_add_test( pt_edittext, "EditText_SaveTextFile_test00_002",
+ Test_DrCC_EditText_SaveTextFile_test00_002 );
CU_add_test( pt_edittext, "EditText_Term_test00_002",
Test_DrCC_EditText_Term_test00_002 );
}
+/* DrCC_FileType_GetFileNamePosition **********************************/
+/*--------------------------------------------------------------------*/
+void Test_DrCC_FileType_GetFileNamePosition_test00_001(void)
+{
+ CU_ASSERT_STRING_EQUAL_FATAL( "test.c",
+ DrCC_FileType_GetFileNamePosition( "./testdata/test.c" ) );
+ return;
+}
+
+/*--------------------------------------------------------------------*/
+void Test_DrCC_FileType_GetFileNamePosition_test00_002(void)
+{
+ CU_ASSERT_STRING_EQUAL_FATAL( "Makefile",
+ DrCC_FileType_GetFileNamePosition( "./testdata/Makefile" ) );
+ return;
+}
+
+
/* DrCC_FileType_GetFileExtPosition ***********************************/
/*--------------------------------------------------------------------*/
void Test_DrCC_FileType_GetFileExtPosition_test00_001(void)
CU_add_test( pt_edittext, "FileType_GetFileExtPosition_test01_002",
Test_DrCC_FileType_GetFileExtPosition_test01_002 );
+ /* FileType_GetFileNamePosition ***********************************/
+ CU_add_test( pt_edittext, "FileType_GetFileNamePosition_test00_001",
+ Test_DrCC_FileType_GetFileNamePosition_test00_001 );
+ CU_add_test( pt_edittext, "FileType_GetFileNamePosition_test00_002",
+ Test_DrCC_FileType_GetFileNamePosition_test00_002 );
+
/* FileType_VerifyTextFile ***************************************/
CU_add_test( pt_edittext, "FileType_VerifyTextFile_test00_001",
Test_DrCC_FileType_VerifyTextFile_test00_001);