Introduce virDirOpenQuiet

A helper function that does not report any errors.
This commit is contained in:
Ján Tomko 2016-06-21 16:52:11 +02:00
parent 42b4a37d68
commit 7a5df06e10
3 changed files with 25 additions and 3 deletions

View File

@ -1497,6 +1497,7 @@ virDirClose;
virDirCreate; virDirCreate;
virDirOpen; virDirOpen;
virDirOpenIfExists; virDirOpenIfExists;
virDirOpenQuiet;
virDirRead; virDirRead;
virFileAbsPath; virFileAbsPath;
virFileAccessibleAs; virFileAccessibleAs;

View File

@ -2723,10 +2723,13 @@ virFileRemove(const char *path,
#endif /* WIN32 */ #endif /* WIN32 */
static int static int
virDirOpenInternal(DIR **dirp, const char *name, bool ignoreENOENT) virDirOpenInternal(DIR **dirp, const char *name, bool ignoreENOENT, bool quiet)
{ {
*dirp = opendir(name); *dirp = opendir(name);
if (!*dirp) { if (!*dirp) {
if (quiet)
return -1;
if (ignoreENOENT && errno == ENOENT) if (ignoreENOENT && errno == ENOENT)
return 0; return 0;
virReportSystemError(errno, _("cannot open directory '%s'"), name); virReportSystemError(errno, _("cannot open directory '%s'"), name);
@ -2746,7 +2749,7 @@ virDirOpenInternal(DIR **dirp, const char *name, bool ignoreENOENT)
int int
virDirOpen(DIR **dirp, const char *name) virDirOpen(DIR **dirp, const char *name)
{ {
return virDirOpenInternal(dirp, name, false); return virDirOpenInternal(dirp, name, false, false);
} }
/** /**
@ -2761,7 +2764,23 @@ virDirOpen(DIR **dirp, const char *name)
int int
virDirOpenIfExists(DIR **dirp, const char *name) virDirOpenIfExists(DIR **dirp, const char *name)
{ {
return virDirOpenInternal(dirp, name, true); return virDirOpenInternal(dirp, name, true, false);
}
/**
* virDirOpenQuiet
* @dirp: directory stream
* @name: path of the directory
*
* Returns 1 on success.
* -1 on failure.
*
* Does not report any errors and errno is preserved.
*/
int
virDirOpenQuiet(DIR **dirp, const char *name)
{
return virDirOpenInternal(dirp, name, false, true);
} }
/** /**

View File

@ -234,6 +234,8 @@ int virDirOpen(DIR **dirp, const char *dirname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
int virDirOpenIfExists(DIR **dirp, const char *dirname) int virDirOpenIfExists(DIR **dirp, const char *dirname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
int virDirOpenQuiet(DIR **dirp, const char *dirname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
int virDirRead(DIR *dirp, struct dirent **ent, const char *dirname) int virDirRead(DIR *dirp, struct dirent **ent, const char *dirname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
void virDirClose(DIR **dirp) void virDirClose(DIR **dirp)