diff options
author | Mike Buland <eichlan@xagasoft.com> | 2008-10-01 21:48:33 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2008-10-01 21:48:33 +0000 |
commit | b6f57560fb7fae00f0854ca19158bd5512e5405b (patch) | |
tree | aa3c7012ee2b1ee9b97b1ba136217cbf6a84d587 /src/file.h | |
parent | d872f7e07c5367f251cf5ebb70a03916251f5306 (diff) | |
download | libbu++-b6f57560fb7fae00f0854ca19158bd5512e5405b.tar.gz libbu++-b6f57560fb7fae00f0854ca19158bd5512e5405b.tar.bz2 libbu++-b6f57560fb7fae00f0854ca19158bd5512e5405b.tar.xz libbu++-b6f57560fb7fae00f0854ca19158bd5512e5405b.zip |
This commit is sure to break things. This should be a very, very minor change.
What changed API-Wise:
- I deleted a constructor in Bu::File that shouldn't have been used anyway.
- I changed it from using fopen style mode strings to using libbu++ style
mode flags. Check the docs for the complete list, but basically instead of
"wb" you do Bu::File::Write, and so on, you can or any of the libbu++ flags
together. There is no binary/text mode, it just writes whatever you tell it
to verbatim (binary mode). Lots of extras are supported. Nothing else
should have changed (except now the file stream is unbuffered, like all the
other streams).
Sorry if this breaks anything, if it's too annoying, use the last revision for
a while longer.
Diffstat (limited to '')
-rw-r--r-- | src/file.h | 27 |
1 files changed, 20 insertions, 7 deletions
@@ -10,7 +10,6 @@ | |||
10 | 10 | ||
11 | #include <stdint.h> | 11 | #include <stdint.h> |
12 | #include <sys/types.h> | 12 | #include <sys/types.h> |
13 | #include <stdlib.h> | ||
14 | 13 | ||
15 | #include "bu/stream.h" | 14 | #include "bu/stream.h" |
16 | #include "bu/fstring.h" | 15 | #include "bu/fstring.h" |
@@ -27,9 +26,8 @@ namespace Bu | |||
27 | class File : public Bu::Stream | 26 | class File : public Bu::Stream |
28 | { | 27 | { |
29 | public: | 28 | public: |
30 | File( const char *sName, const char *sFlags ); | 29 | File( const Bu::FString &sName, int iFlags ); |
31 | File( const Bu::FString &sName, const char *sFlags ); | 30 | File( int fd ); |
32 | File( int fd, const char *sFlags ); | ||
33 | virtual ~File(); | 31 | virtual ~File(); |
34 | 32 | ||
35 | virtual void close(); | 33 | virtual void close(); |
@@ -56,6 +54,19 @@ namespace Bu | |||
56 | virtual bool isBlocking(); | 54 | virtual bool isBlocking(); |
57 | virtual void setBlocking( bool bBlocking=true ); | 55 | virtual void setBlocking( bool bBlocking=true ); |
58 | 56 | ||
57 | enum { | ||
58 | // Flags | ||
59 | Read = 0x01, //< Open file for reading | ||
60 | Write = 0x02, //< Open file for writing | ||
61 | Create = 0x04, //< Create file if it doesn't exist | ||
62 | Truncate = 0x08, //< Truncate file if it does exist | ||
63 | Append = 0x10, //< Always append on every write | ||
64 | NonBlock = 0x20, //< Open file in non-blocking mode | ||
65 | Exclusive = 0x44, //< Create file, if it exists then fail | ||
66 | |||
67 | // Helpful mixes | ||
68 | ReadWrite = 0x03 //< Open for reading and writing | ||
69 | }; | ||
59 | /** | 70 | /** |
60 | * Create a temp file and return its handle | 71 | * Create a temp file and return its handle |
61 | *@param sName (Bu::FString) Give in the form: "/tmp/tmpfileXXXXXXXX" | 72 | *@param sName (Bu::FString) Give in the form: "/tmp/tmpfileXXXXXXXX" |
@@ -65,11 +76,11 @@ namespace Bu | |||
65 | *@returns (Bu::File) A file object representing your temp file. | 76 | *@returns (Bu::File) A file object representing your temp file. |
66 | */ | 77 | */ |
67 | #ifndef WIN32 | 78 | #ifndef WIN32 |
68 | inline static Bu::File tempFile( Bu::FString &sName, const char *sFlags ) | 79 | inline static Bu::File tempFile( Bu::FString &sName, int /*iFlags*/ ) |
69 | { | 80 | { |
70 | int afh_d = mkstemp( sName.getStr() ); | 81 | int afh_d = mkstemp( sName.getStr() ); |
71 | 82 | ||
72 | return Bu::File( afh_d, sFlags ); | 83 | return Bu::File( afh_d ); |
73 | } | 84 | } |
74 | 85 | ||
75 | /** | 86 | /** |
@@ -87,8 +98,10 @@ namespace Bu | |||
87 | #endif | 98 | #endif |
88 | 99 | ||
89 | private: | 100 | private: |
90 | FILE *fh; | 101 | int getPosixFlags( int iFlags ); |
91 | 102 | ||
103 | private: | ||
104 | int fd; | ||
92 | }; | 105 | }; |
93 | } | 106 | } |
94 | 107 | ||