ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/truck/Common/posix.cpp
Revision: 14
Committed: 2007-05-14T18:24:34-07:00 (15 years, 6 months ago) by douglas
File size: 788 byte(s)
Log Message:
Switch back from Menes C++ to stl and hacks.

File Contents

# Content
1 // Truck Computer Dooom!
2 //
3 // Douglas Thrift
4 //
5 // $Id$
6
7 #ifdef _GNU_SOURCE
8 #undef _GNU_SOURCE
9 #endif
10
11 #define _XOPEN_SOURCE 600
12
13 #include <fcntl.h>
14
15 #include "posix.hpp"
16
17 namespace Posix
18 {
19
20 Error::Error() : code(errno)
21 {
22 CheckError(::strerror_r(code, message, sizeof (message)));
23 }
24
25 int Open(const std::string &path, int flags, ::mode_t mode)
26 {
27 return SysCall(::open, path.c_str(), flags, mode);
28 }
29
30 size_t Read(int fd, void *buffer, size_t bytes)
31 {
32 return SysCall(::read, fd, buffer, bytes);
33 }
34
35 size_t ReadMost(int fd, void *buffer, size_t bytes)
36 {
37 size_t rest(bytes);
38 uint8_t *data = reinterpret_cast<uint8_t *>(buffer);
39
40 while (rest != 0)
41 {
42 size_t read(Read(fd, data, rest));
43
44 if (read == 0)
45 return bytes - rest;
46
47 data += read;
48 rest -= read;
49 }
50
51 return bytes;
52 }
53
54 }

Properties

Name Value
svn:keywords Id