mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 11:31:16 +00:00
util: new function virFileLength()
This new function just calls fstat() (if provided with a valid fd) or stat() (if fd is -1) and returns st_size (or -1 if there is an error). We may decide we want this function to be more complex, and handle things like block devices - this is a placeholder (that works) for any more complicated function.
This commit is contained in:
parent
943ddcb712
commit
e026563f01
@ -1578,6 +1578,7 @@ virFileIsLink;
|
|||||||
virFileIsMountPoint;
|
virFileIsMountPoint;
|
||||||
virFileIsSharedFS;
|
virFileIsSharedFS;
|
||||||
virFileIsSharedFSType;
|
virFileIsSharedFSType;
|
||||||
|
virFileLength;
|
||||||
virFileLinkPointsTo;
|
virFileLinkPointsTo;
|
||||||
virFileLock;
|
virFileLock;
|
||||||
virFileLoopDeviceAssociate;
|
virFileLoopDeviceAssociate;
|
||||||
|
@ -1735,6 +1735,40 @@ virFileActivateDirOverride(const char *argv0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virFileLength:
|
||||||
|
* @path: full path of the file
|
||||||
|
* @fd: open file descriptor for file (or -1 to use @path)
|
||||||
|
*
|
||||||
|
* If fd >= 0, return the length of the open file indicated by @fd.
|
||||||
|
* If fd < 0 (i.e. -1) return the length of the file indicated by
|
||||||
|
* @path.
|
||||||
|
*
|
||||||
|
* Returns the length, or -1 if the file doesn't
|
||||||
|
* exist or its info was inaccessible. No error is logged.
|
||||||
|
*/
|
||||||
|
off_t
|
||||||
|
virFileLength(const char *path, int fd)
|
||||||
|
{
|
||||||
|
struct stat s;
|
||||||
|
|
||||||
|
if (fd >= 0) {
|
||||||
|
if (fstat(fd, &s) < 0)
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
if (stat(path, &s) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!S_ISREG(s.st_mode))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return s.st_size;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
virFileIsDir(const char *path)
|
virFileIsDir(const char *path)
|
||||||
{
|
{
|
||||||
|
@ -179,6 +179,7 @@ char *virFileFindResourceFull(const char *filename,
|
|||||||
void virFileActivateDirOverride(const char *argv0)
|
void virFileActivateDirOverride(const char *argv0)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
|
||||||
|
off_t virFileLength(const char *path, int fd) ATTRIBUTE_NONNULL(1);
|
||||||
bool virFileIsDir (const char *file) ATTRIBUTE_NONNULL(1);
|
bool virFileIsDir (const char *file) ATTRIBUTE_NONNULL(1);
|
||||||
bool virFileExists(const char *file) ATTRIBUTE_NONNULL(1);
|
bool virFileExists(const char *file) ATTRIBUTE_NONNULL(1);
|
||||||
bool virFileIsExecutable(const char *file) ATTRIBUTE_NONNULL(1);
|
bool virFileIsExecutable(const char *file) ATTRIBUTE_NONNULL(1);
|
||||||
|
Loading…
Reference in New Issue
Block a user