libcamera: file: Create the file on open() if it doesn't exist

When a file is opened in WriteOnly or ReadWrite mode, create it if it
doesn't exist.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
Laurent Pinchart
2020-07-09 19:42:36 +03:00
parent aca22bc73a
commit c1bbba36d3
+6 -3
View File
@@ -148,8 +148,9 @@ bool File::exists() const
* \param[in] mode The open mode
*
* This function opens the file specified by fileName() in \a mode. If the file
* doesn't exist and the mode is WriteOnly or ReadWrite, this
* function will attempt to create the file.
* doesn't exist and the mode is WriteOnly or ReadWrite, this function will
* attempt to create the file with initial permissions set to 0666 (modified by
* the process' umask).
*
* The error() status is updated.
*
@@ -163,8 +164,10 @@ bool File::open(File::OpenMode mode)
}
int flags = (mode & ReadWrite) - 1;
if (mode & WriteOnly)
flags |= O_CREAT;
fd_ = ::open(name_.c_str(), flags);
fd_ = ::open(name_.c_str(), flags, 0666);
if (fd_ < 0) {
error_ = -errno;
return false;