xattr-util: add new getxattr_at_bool() helper
This carefully combines getxattr_at_malloc() and parse_bool(), which is something we use at multiple places.
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include "fd-util.h"
|
||||
#include "macro.h"
|
||||
#include "missing_syscall.h"
|
||||
#include "parse-util.h"
|
||||
#include "sparse-endian.h"
|
||||
#include "stat-util.h"
|
||||
#include "stdio-util.h"
|
||||
@@ -118,6 +119,20 @@ int getxattr_at_malloc(
|
||||
}
|
||||
}
|
||||
|
||||
int getxattr_at_bool(int fd, const char *path, const char *name, int flags) {
|
||||
_cleanup_free_ char *v = NULL;
|
||||
int r;
|
||||
|
||||
r = getxattr_at_malloc(fd, path, name, flags, &v);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (memchr(v, 0, r)) /* Refuse embedded NUL byte */
|
||||
return -EINVAL;
|
||||
|
||||
return parse_boolean(v);
|
||||
}
|
||||
|
||||
static int parse_crtime(le64_t le, usec_t *usec) {
|
||||
uint64_t u;
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ static inline int fgetxattr_malloc(int fd, const char *name, char **ret) {
|
||||
return getxattr_at_malloc(fd, NULL, name, AT_EMPTY_PATH, ret);
|
||||
}
|
||||
|
||||
int getxattr_at_bool(int fd, const char *path, const char *name, int flags);
|
||||
|
||||
int fd_setcrtime(int fd, usec_t usec);
|
||||
|
||||
int fd_getcrtime_at(int fd, const char *name, int flags, usec_t *ret);
|
||||
|
||||
Reference in New Issue
Block a user