mirror of
https://github.com/taglib/taglib.git
synced 2025-05-27 21:20:26 -04:00
Add support for file descriptor to FileStream (#832)
Add support for file descriptor
This commit is contained in:
parent
8f6fe0b16c
commit
036a0317b9
@ -58,6 +58,11 @@ namespace
|
||||
#endif
|
||||
}
|
||||
|
||||
FileHandle openFile(const int fileDescriptor, bool readOnly)
|
||||
{
|
||||
return InvalidFileHandle;
|
||||
}
|
||||
|
||||
void closeFile(FileHandle file)
|
||||
{
|
||||
CloseHandle(file);
|
||||
@ -98,6 +103,11 @@ namespace
|
||||
return fopen(path, readOnly ? "rb" : "rb+");
|
||||
}
|
||||
|
||||
FileHandle openFile(const int fileDescriptor, bool readOnly)
|
||||
{
|
||||
return fdopen(fileDescriptor, readOnly ? "rb" : "rb+");
|
||||
}
|
||||
|
||||
void closeFile(FileHandle file)
|
||||
{
|
||||
fclose(file);
|
||||
@ -158,6 +168,25 @@ FileStream::FileStream(FileName fileName, bool openReadOnly)
|
||||
}
|
||||
}
|
||||
|
||||
FileStream::FileStream(int fileDescriptor, bool openReadOnly)
|
||||
: d(new FileStreamPrivate(""))
|
||||
{
|
||||
// First try with read / write mode, if that fails, fall back to read only.
|
||||
|
||||
if(!openReadOnly)
|
||||
d->file = openFile(fileDescriptor, false);
|
||||
|
||||
if(d->file != InvalidFileHandle)
|
||||
d->readOnly = false;
|
||||
else
|
||||
d->file = openFile(fileDescriptor, true);
|
||||
|
||||
if(d->file == InvalidFileHandle)
|
||||
{
|
||||
debug("Could not open file using file descriptor");
|
||||
}
|
||||
}
|
||||
|
||||
FileStream::~FileStream()
|
||||
{
|
||||
if(isOpen())
|
||||
|
@ -54,6 +54,11 @@ namespace TagLib {
|
||||
*/
|
||||
FileStream(FileName file, bool openReadOnly = false);
|
||||
|
||||
/*!
|
||||
* Construct a File object and opens the \a file using file descriptor.
|
||||
*/
|
||||
FileStream(int fileDescriptor, bool openReadOnly = false);
|
||||
|
||||
/*!
|
||||
* Destroys this FileStream instance.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user