diff options
Diffstat (limited to 'src/file.h')
| -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 | ||
