int i_result;
int i_flag;
int i_round;
+ int i_brkcnt;
Byte *pb_start;
DWord dw_pstart;
DWord dw_lnow;
}
// Clear Before Find Data ---
- if( NULL != p_cursor->pt_findreg ) {
- regfree( p_cursor->pt_findreg );
- p_cursor->pt_findreg = NULL;
+ if( '\0' != p_cursor->str_regstr[0] ) {
+ regfree( &(p_cursor->t_findreg) );
+ memset( &(p_cursor->t_findreg), 0x00, sizeof( regex_t ) );
}
// Compile regex string ---
i_flag = REG_EXTENDED;
if( LIBEDITTEXT_FLAGFIND_IGNOREICASE & b_flagfind ) { i_flag |= REG_ICASE; }
- i_result = regcomp( p_cursor->pt_findreg, p_cursor->str_regstr, i_flag );
+ i_result = regcomp( &(p_cursor->t_findreg), p_cursor->str_regstr, REG_EXTENDED );
if( 0x00 != i_result ) {
return i_result;
dw_lidbase = p_line->dw_id;
dw_lnow = p_cursor->dw_line;
- dw_pstart = LibEditText_CursorFind_GetFindingPostion( p_cursor );
+ //dw_pstart = LibEditText_CursorFind_GetFindingPostion( p_cursor );
+ dw_pstart = p_cursor->dw_pos;
pb_start = p_tinfo->pb_text + p_line->dw_start + dw_pstart;
i_round = 0x00;
+ i_brkcnt = 0;
if( 0 < dw_pstart ) { i_flag = REG_NOTBOL; }
else { i_flag = 0x00; }
do {
-
- i_result = regexec( p_cursor->pt_findreg, (const char *)pb_start,
+ i_result = regexec( &(p_cursor->t_findreg), (const char *)pb_start,
1, &t_match, i_flag );
if( 0x00 == i_result ) { break; }
else if( REG_NOMATCH != i_result ) {
return -0x10;
}
+ if( p_line->dw_id == dw_lidbase ) { i_brkcnt++; }
+
// Going to Next-Line ---
i_flag = 0x00;
p_line = LINFO(p_tinfo, p_line->dw_next);
dw_pstart = 0;
pb_start = p_tinfo->pb_text + p_line->dw_start;
- }while( p_line->dw_id != dw_lidbase );
+ }while( 2 > i_brkcnt );
- if( p_line->dw_id == dw_lidbase )
+ if(( 2 == i_brkcnt ) && ( REG_NOMATCH == i_result ))
{ return LIBEDITTEXT_RET_FINDNOMATCH; } // NO match string in Text.
dw_pstart += (DWord)t_match.rm_so; // Find String Pos.
int i_result;
int i_tinfoid;
int i_curid;
+ char *pstr_value;
+ DWord dw_line;
+ DWord dw_pos;
+ DWord dw_len;
i_result = LibEditText_Init();
CU_ASSERT( 0x00 == i_result );
i_tinfoid, 0x01, "API FindString test00_001" );
CU_ASSERT( 0x00 == i_result );
+ puts("[A] Find Result ---2----+----3----+----4----+----5----+----6----+----7----+----8");
+
+ // Find 01 ---
+ i_result = LibEditText_FindString( i_tinfoid, i_curid, "AAA", 3, &dw_len );
+ CU_ASSERT( LIBEDITTEXT_RET_FINDMATCH == i_result );
+
+ i_result = LibEditText_GetCursorPosition( i_tinfoid, i_curid, &dw_line, &dw_pos );
+ CU_ASSERT( 0x00 == i_result );
+ pstr_value = LibEditText_GetCursorLineString( i_tinfoid, i_curid, NULL );
+ printf(" Find 01: [%u:%u(%u)] %s", dw_line, dw_pos, dw_len, pstr_value );
+
+ // Find 02 ---
+ i_result = LibEditText_FindString( i_tinfoid, i_curid, "64", 2, &dw_len );
+ CU_ASSERT( LIBEDITTEXT_RET_FINDMATCH == i_result );
+
+ i_result = LibEditText_GetCursorPosition( i_tinfoid, i_curid, &dw_line, &dw_pos );
+ CU_ASSERT( 0x00 == i_result );
+ pstr_value = LibEditText_GetCursorLineString( i_tinfoid, i_curid, NULL );
+ printf(" Find 02: [%u:%u(%u)] %s", dw_line, dw_pos, dw_len, pstr_value );
+
+ // Find 03 ---
+ i_result = LibEditText_FindString( i_tinfoid, i_curid, "AAA", 3, &dw_len );
+ CU_ASSERT( LIBEDITTEXT_RET_FINDMATCH_ROUND == i_result );
+ i_result = LibEditText_GetCursorPosition( i_tinfoid, i_curid, &dw_line, &dw_pos );
+ CU_ASSERT( 0x00 == i_result );
+ pstr_value = LibEditText_GetCursorLineString( i_tinfoid, i_curid, NULL );
+ printf(" Find 03: [%u:%u(%u)] %s", dw_line, dw_pos, dw_len, pstr_value );
+
+ // Find 04 ---
+ i_result = LibEditText_FindString( i_tinfoid, i_curid, "CPU[A-Z].", 9, &dw_len );
+ CU_ASSERT( LIBEDITTEXT_RET_FINDMATCH == i_result );
+ i_result = LibEditText_GetCursorPosition( i_tinfoid, i_curid, &dw_line, &dw_pos );
+ CU_ASSERT( 0x00 == i_result );
+ pstr_value = LibEditText_GetCursorLineString( i_tinfoid, i_curid, NULL );
+ printf(" Find 04: [%u:%u(%u)] %s", dw_line, dw_pos, dw_len, pstr_value );
+
+ // Find 05 ---
+ i_result = LibEditText_FindString( i_tinfoid, i_curid, "ko[a-z]n[a-z]c", 14, &dw_len );
+ CU_ASSERT( LIBEDITTEXT_RET_FINDNOMATCH == i_result );
+
+
i_result = LibEditText_FreeCursor( i_tinfoid, i_curid );
CU_ASSERT( 0x00 == i_result );