/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
+DRCC_EDITTEXT_EXTERN
+Drd64_DrCC_TextInfo *
+ DrCC_EditText_GetTextInfo(
+ int i_tinfoid )
+{
+ if( ( 0 > i_tinfoid ) || ( gdw_max_textinfo <= i_tinfoid ))
+ { return NULL; }
+
+ return (gp_textinfo + i_tinfoid);
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
int
DrCC_EditText_InitTextInfo(
Drd64_DrCC_TextInfo *p_tinfo,
/*----------------------------------------------------------------------
-Read Text File
+Open Text File
----------------------------------------------------------------------*/
DRCC_EDITTEXT_EXTERN
- int
- DrCC_EditText_ReadFile(
- char *pstr_filepath )
+int
+ DrCC_EditText_OpenTextFile(
+ char *pstr_path,
+ char *pstr_filename )
{
int i_result;
Drd64_DrCC_FileType t_ftype;
Drd64_DrCC_TextInfo *p_tinfo;
+ char str_filepath[DRD64_MAX_PATH + 1];
+ size_t sz_path;
+ size_t sz_fname;
+ DWord dw_maxline;
+ DWord dw_bufline;
+ DWord dw_bufsize;
- if( NULL == pstr_filepath ) { return -0x01; }
+ if(( NULL == pstr_path) || (NULL == pstr_filename )) { return -0x01; }
+
+ sz_path = strnlen( pstr_path, DRD64_MAX_PATH );
+ sz_fname = strnlen( pstr_filename, DRD64_MAX_PATH );
+ if( DRD64_MAX_PATH < (sz_path + sz_fname) ) { return -0x02; }
+ strncpy( str_filepath, pstr_path, DRD64_MAX_PATH );
+ strcat( str_filepath, "\\" );
+ strncat( str_filepath, pstr_filename, DRD64_MAX_PATH );
/* Get FileSize & Judge text-file & Count TextLines */
- i_result = DrCC_FileType_CheckFileType( &t_ftype, pstr_filepath );
+ i_result = DrCC_FileType_CheckFileType( &t_ftype, str_filepath );
+ if( DRD64_DRCC_FILETYPE_TEXT != t_ftype.b_type ) { return -0x02; }
/* Alloc TextInfo Struct. */
p_tinfo = DrCC_EditText_AllocTextInfo();
if( NULL == p_tinfo ) { return -0x02; }
- /* Alloc Temp. File-Buffer */
-
/* Alloc File-Buffer */
-/*
- dw_maxline = (DWord)p_ftype->i_lines;
+ dw_maxline = (DWord)t_ftype.i_lines;
dw_bufline = (DWord)((double)dw_maxline
* (double)DRD64_DRCC_DEFAULT_LINES_SAFETY_FACTOR);
- dw_bufsize = p_ftype->dw_filesize
+ dw_bufsize = t_ftype.dw_filesize
+ (dw_maxline * DRD64_DRCC_DEFAULT_RESERVEBUF_INLINE)
+ ((dw_bufline - dw_maxline) * DRD64_DRCC_DEFAULT_BUFSIZE_RESERVELINE);
-*/
+ i_result = DrCC_EditText_InitTextInfo( p_tinfo, t_ftype.w_subtype,
+ dw_maxline, dw_bufline, dw_bufsize );
+ if( 0x00 != i_result ) { return -0x03; }
+
/* Generate LineInfo */
/* Regist TextInfo & LineInfo Strcut. */
- /* Free Temp. File-Buffer */
return 0x00;
}
/*----------------------------------------------------------------------
Create Text File
----------------------------------------------------------------------*/
+DRCC_EDITTEXT_EXTERN
+int
+ DrCC_EditText_CreateTextFile(
+ char *pstr_path,
+ char *pstr_filename )
+{
+ int i_result;
+ DWord dw_maxline;
+ DWord dw_bufline;
+ DWord dw_bufsize;
+ Drd64_DrCC_TextInfo *p_tinfo;
+ char str_filepath[DRD64_MAX_PATH + 1];
+ size_t sz_path;
+ size_t sz_fname;
+
+ if(( NULL == pstr_path) || (NULL == pstr_filename )) { return -0x01; }
+
+ sz_path = strnlen( pstr_path, DRD64_MAX_PATH );
+ sz_fname = strnlen( pstr_filename, DRD64_MAX_PATH );
+ if( DRD64_MAX_PATH < (sz_path + sz_fname) ) { return -0x02; }
+ strncpy( str_filepath, pstr_path, DRD64_MAX_PATH );
+ strcat( str_filepath, "\\" );
+ strncat( str_filepath, pstr_filename, DRD64_MAX_PATH );
+
+ /* Alloc TextInfo Struct. */
+ p_tinfo = DrCC_EditText_AllocTextInfo();
+ if( NULL == p_tinfo ) { return -0x02; }
+
+ /* Alloc File-Buffer */
+ dw_maxline = 0;
+ dw_bufline = DRD64_DRCC_DEFAULT_CREATETEXTFILE_LINES;
+ dw_bufsize = (DRD64_DRCC_DEFAULT_RESERVEBUF_INLINE
+ + DRD64_DRCC_DEFAULT_BUFSIZE_RESERVELINE) * dw_bufline;
+ /* XXX: 0x0001 */
+ i_result = DrCC_EditText_InitTextInfo( p_tinfo, 0x0001,
+ dw_maxline, dw_bufline, dw_bufsize );
+ if( 0x00 != i_result ) { return -0x03; }
+
+ /* Generate LineInfo */
+ /* Regist TextInfo & LineInfo Strcut. */
+
+ return 0x00;
+}
+
+
/*----------------------------------------------------------------------
Close Text File
----------------------------------------------------------------------*/
+DRCC_EDITTEXT_EXTERN
+int
+ DrCC_EditText_CloseFile(
+ int i_tinfoid )
+{
+ int i_result;
+ Drd64_DrCC_TextInfo *p_tinfo;
+ p_tinfo = DrCC_EditText_GetTextInfo( i_tinfoid );
+ if( NULL == p_tinfo ) { return -0x01; }
+
+ i_result = DrCC_EditText_ClearTextInfo( p_tinfo );
+ if( 0x00 != i_result ) { return -0x01; }
+
+ i_result = DrCC_EditText_FreeTextInfo( p_tinfo );
+ if( 0x00 != i_result ) { return -0x02; }
+
+ return 0x00;
+}
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
-/* EOF of drd64_.c ----------------------------------- */
+/* EOF of drd64_.c ---------------------------------- */