source: libcf/trunk/src/cf_file.c@ 26

Last change on this file since 26 was 26, checked in by cheese, 11 years ago

#1 documentation with doxygen

File size: 1.6 KB
Line 
1/**
2 * cf_file.c
3 */
4#include "cf_file.h"
5
6#ifdef _WIN32
7# include <stdio.h>
8# include <io.h>
9# include <sys/stat.h>
10
11# define S_IWUSR _S_IWRITE
12# define S_IRUSR _S_IREAD
13# define S_IXUSR _S_IEXEC
14# define S_IRGRP 0x00000000
15# define S_IWGRP 0x00000000
16# define S_IXGRP 0x00000000
17# define S_IROTH 0x00000000
18# define S_IWOTH 0x00000000
19# define S_IXOTH 0x00000000
20#else // #ifdef _WIN32
21# include <unistd.h>
22# define O_BINARY 0x00000000
23#endif // #ifdef _WIN32
24
25#define FILE_MODE S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH
26
27int
28CF_File_Open (const char * path,
29 const CF_FILE_FLAG flag)
30{
31 int result = open (path, flag|O_BINARY);
32
33 if (result < 0)
34 return CF_ERROR_FILE_OPEN;
35
36 return result;
37}
38
39int
40CF_File_Create (const char * path)
41{
42 int result = open (path, CF_FILE_CR|CF_FILE_WO|CF_FILE_TR, FILE_MODE);
43
44 if (result < 0)
45 return CF_ERROR_FILE_CREATE;
46
47 return result;
48}
49
50int
51CF_File_Close (const int fd)
52{
53 int result = 0;
54
55 if (fd < 0)
56 return CF_ERROR_FILE_INVALID_ARGS;
57
58 result = close (fd);
59
60 if (result < 0)
61 return CF_ERROR_FILE_CLOSE;
62
63 return CF_OK;
64}
65
66int
67CF_File_Read (const int fd,
68 void * buf,
69 const size_t len)
70{
71 int result = (int) read (fd, buf, len);
72
73 if (result < 0)
74 return CF_ERROR_FILE_READ;
75
76 return result;
77}
78
79int
80CF_File_Write (const int fd,
81 const void * buf,
82 const size_t len)
83{
84 int result = (int) write (fd, buf, len);
85
86 if (result != len)
87 return CF_ERROR_FILE_WRITE;
88
89 return CF_OK;
90}
91
92int
93CF_File_GetSize (const int fd)
94{
95 int result = (int) lseek (fd, 0, SEEK_END);
96
97 if (result < 0 || lseek (fd, 0, SEEK_SET) < 0)
98 return CF_ERROR_FILE_GET_SIZE;
99
100 return result;
101}
Note: See TracBrowser for help on using the repository browser.