12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#import <stdio.h>
#import <stdint.h>
#import <sys/types.h>
#import "OFObject.h"
@interface OFFile: OFObject
{
FILE *fp;
}
+ newWithPath: (const char*)path
andMode: (const char*)mode;
+ (int)changeModeOfFile: (const char*)path
toMode: (mode_t)mode;
+ (int)changeOwnerOfFile: (const char*)path
toOwner: (uid_t)owner
andGroup: (gid_t)group;
+ (int)delete: (const char*)path;
+ (int)link: (const char*)src
to: (const char*)dest;
+ (int)symlink: (const char*)src
to: (const char*)dest;
- initWithPath: (const char*)path
andMode: (const char*)mode;
- free;
- (BOOL)atEndOfFile;
- (size_t)readIntoBuffer: (uint8_t*)buf
withSize: (size_t)size
andNItems: (size_t)nItems;
- (uint8_t*)readWithSize: (size_t)size
andNItems: (size_t)nitems;
- (size_t)writeBuffer: (uint8_t*)buf
withSize: (size_t)size
andNItems: (size_t)nitems;
@end
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>
>
>
>
>
>
>
>
>
>
|
|
|
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
|
|
>
>
>
>
>
>
>
>
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
#import <stdio.h>
#import <stdint.h>
#import <sys/types.h>
#import "OFObject.h"
/**
* The OFFile class provides functions to read, write and manipulate files.
*/
@interface OFFile: OFObject
{
FILE *fp;
}
/**
* \param path The path to the file to open as a C string
* \param mode The mode in which the file should be opened as a C string
* \return A new OFFile
*/
+ newWithPath: (const char*)path
andMode: (const char*)mode;
/**
* Changes the mode of a file.
*
* \param path The path to the file of which the mode should be changed as a
* C string
* \param mode The new mode for the file
* \return A boolean whether the operation succeeded
*/
+ (BOOL)changeModeOfFile: (const char*)path
toMode: (mode_t)mode;
/**
* Changes the owner of a file.
*
* \param path The path to the file of which the owner should be changed as a
* C string
* \param owner The new owner for the file
* \param group The new group for the file
* \return A boolean whether the operation succeeded
*/
+ (BOOL)changeOwnerOfFile: (const char*)path
toOwner: (uid_t)owner
andGroup: (gid_t)group;
/**
* Deletes a file.
*
* \param path The path to the file of which should be deleted as a C string
* \return A boolean whether the operation succeeded
*/
+ (BOOL)delete: (const char*)path;
/**
* Hardlinks a file.
*
* \param src The path to the file of which should be linked as a C string
* \param dest The path to where the file should be linked as a C string
* \return A boolean whether the operation succeeded
*/
+ (BOOL)link: (const char*)src
to: (const char*)dest;
/**
* Symlinks a file.
*
* \param src The path to the file of which should be symlinked as a C string
* \param dest The path to where the file should be symlinked as a C string
* \return A boolean whether the operation succeeded
*/
+ (BOOL)symlink: (const char*)src
to: (const char*)dest;
/**
* Initializes an already allocated OFFile.
*
* \param path The path to the file to open as a C string
* \param mode The mode in which the file should be opened as a C string
* \return An initialized OFFile
*/
- initWithPath: (const char*)path
andMode: (const char*)mode;
- free;
/**
* \return A boolean whether the end of the file has been reached
*/
- (BOOL)atEndOfFile;
/**
* Reads from the file into a buffer.
*
* \param buf The buffer into which the data is read
* \param size The size of the data that should be read.
* The buffer MUST be at least size * nitems big!
* \param nitems nitem The number of items to read
* The buffer MUST be at least size * nitems big!
* \return The number of bytes read
*/
- (size_t)readIntoBuffer: (uint8_t*)buf
withSize: (size_t)size
andNItems: (size_t)nitems;
/**
* Reads from the file into a new buffer.
*
* \param size The size of the data that should be read
* \param nitem The number of items to read
* \return A new buffer with the data read.
* It is part of the memory pool of the OFFile.
*/
- (uint8_t*)readWithSize: (size_t)size
andNItems: (size_t)nitems;
/**
* Writes from a buffer into the file.
*
* \param buf The buffer from which the data is written to the file
* \param size The size of the data that should be written
* \param nitem The number of items to write
* \return The number of bytes written
*/
- (size_t)writeBuffer: (uint8_t*)buf
withSize: (size_t)size
andNItems: (size_t)nitems;
@end
|