OSDN Git Service

* Adding; DrCC_OpenTextfile / DrCC_CreateTextFile * DrCC_CloseTextFile
authorKoine Yuusuke(koinec) <koinec@users.sourceforge.jp>
Sun, 5 Apr 2015 20:49:37 +0000 (05:49 +0900)
committerKoine Yuusuke(koinec) <koinec@users.sourceforge.jp>
Sun, 5 Apr 2015 20:49:37 +0000 (05:49 +0900)
drcc/drcc_edittext.c
drcc/drcc_edittext.h

index 3bd50ee..fdea0fd 100644 (file)
@@ -71,6 +71,20 @@ DWord
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
+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,
@@ -273,40 +287,54 @@ DRCC_EDITTEXT_EXTERN      int
 
 
 /*----------------------------------------------------------------------
-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;
 }
@@ -315,6 +343,51 @@ DRCC_EDITTEXT_EXTERN
 /*----------------------------------------------------------------------
 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;
+}
+
+
 
 
 
@@ -327,7 +400,25 @@ Write Text File
 /*----------------------------------------------------------------------
 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;
+}
 
 
 /*----------------------------------------------------------------------
@@ -338,5 +429,5 @@ Close Text File
 ----------------------------------------------------------------------*/
 
 
-/* EOF of drd64_.c ----------------------------------- */
+/* EOF of drd64_.c ---------------------------------- */
 
index 980e4f3..2bf4ad2 100644 (file)
@@ -54,6 +54,8 @@ Comment:
 #define        DRD64_DRCC_DEFAULT_RESERVEBUF_INLINE    20
 #define        DRD64_DRCC_DEFAULT_BUFSIZE_RESERVELINE  80
 
+#define        DRD64_DRCC_DEFAULT_CREATETEXTFILE_LINES 1024
+
 typedef        struct  {
        DWord   dw_start;               /* Start Bytes of This Line in Text-Buffer */
        DWord   dw_strlen;              /* Length of This LineString */
@@ -87,6 +89,11 @@ typedef struct       {
 
 DRCC_EDITTEXT_EXTERN int DrCC_EditText_Term( void );
 DRCC_EDITTEXT_EXTERN int DrCC_EditText_Init( void );
+DRCC_EDITTEXT_EXTERN Drd64_DrCC_TextInfo * DrCC_EditText_GetTextInfo( int i_tinfoid );
+DRCC_EDITTEXT_EXTERN int DrCC_EditText_OpenTextFile( char *pstr_path, char *pstr_filename );
+DRCC_EDITTEXT_EXTERN int DrCC_EditText_CreateTextFile( char *pstr_path, char *pstr_filename );
+DRCC_EDITTEXT_EXTERN int DrCC_EditText_CloseFile( int i_tinfoid );
+
 
 #ifdef DRCC_EDITTEXT_INTERNALFUNC
 DWord  DrCC_EditText_GetMaxNum_TextInfo(void);