Changeset 90 in libcf for trunk/src/cf_file.c


Ignore:
Timestamp:
05/18/13 18:57:13 (11 years ago)
Author:
cheese
Message:

#1 fix bug on codec and arrange file flag

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/cf_file.c

    r86 r90  
    88
    99#include <stdio.h>
     10#include <fcntl.h>
    1011#include <errno.h>
    1112#include <sys/stat.h>
     
    5152        return CF_ERROR_FILE_INVALID_ARGS
    5253
     54static int
     55CF_File_Local_ConvertFlag (const CF_FILE_FLAG flag)
     56{
     57    int result = 0;
     58
     59    if (flag & CF_FILE_READ)    result |= O_RDONLY;
     60    if (flag & CF_FILE_WRITE)   result |= O_WRONLY;
     61    if (flag & CF_FILE_RW)      result |= O_RDWR;
     62    if (flag & CF_FILE_CREATE)  result |= O_CREAT;
     63    if (flag & CF_FILE_TRUNC)   result |= O_TRUNC;
     64    if (flag & CF_FILE_APPEND)  result |= O_APPEND;
     65
     66    return result;
     67}
     68
    5369/**
    5470 * 파일 열기
     
    6985    ASSERT_ARGS (path == NULL);
    7086
    71     result = open (path, (int)(flag|O_BINARY));
    72 
     87    result = open (path, CF_File_Local_ConvertFlag (flag) | O_BINARY);
    7388    if (result < 0)
    7489        return CF_ERROR_FILE_OPEN;
     
    88103{
    89104    int result = 0;
     105    int flag = 0;
    90106   
    91107    ASSERT_ARGS (path == NULL);
    92108
    93     result = open (path, CF_FILE_CREATE|CF_FILE_WRITE|CF_FILE_TRUNC, FILE_MODE);
    94 
     109    flag = CF_File_Local_ConvertFlag (CF_FILE_CREATE|
     110                                      CF_FILE_WRITE |
     111                                      CF_FILE_TRUNC);
     112
     113    result = open (path, flag, FILE_MODE);
    95114    if (result < 0)
    96115        return CF_ERROR_FILE_CREATE;
     
    114133
    115134    result = close (fd);
    116 
    117135    if (result < 0)
    118136        return CF_ERROR_FILE_CLOSE;
     
    141159
    142160    result = (int) read (fd, buf, len);
    143 
    144161    if (result < 0)
    145162        return CF_ERROR_FILE_READ;
     
    168185
    169186    result = (int) write (fd, buf, len);
    170 
    171187    if (result != len)
    172188      return CF_ERROR_FILE_WRITE;
     
    190206
    191207    result = (int) lseek (fd, 0, SEEK_END);
    192 
    193208    if (result < 0 || lseek (fd, 0, SEEK_SET) < 0)
    194209        return CF_ERROR_FILE_GET_SIZE;
Note: See TracChangeset for help on using the changeset viewer.