path-util: unify code for detecting OS trees

This also makes sure we always detect an OS tree the same way, by
checking for /etc/os-release.
This commit is contained in:
Lennart Poettering
2013-04-16 05:47:04 +02:00
parent dfb33a9737
commit 6606089752
5 changed files with 32 additions and 22 deletions
+12
View File
@@ -413,3 +413,15 @@ int path_is_read_only_fs(const char *path) {
return !!(st.f_flag & ST_RDONLY);
}
int path_is_os_tree(const char *path) {
char *p;
int r;
/* We use /etc/os-release as flag file if something is an OS */
p = strappenda(path, "/etc/os-release");
r = access(p, F_OK);
return r < 0 ? 0 : 1;
}
+1
View File
@@ -40,3 +40,4 @@ char **path_strv_canonicalize_uniq(char **l);
int path_is_mount_point(const char *path, bool allow_symlink);
int path_is_read_only_fs(const char *path);
int path_is_os_tree(const char *path);
+12
View File
@@ -684,3 +684,15 @@ int unlink_noerrno(const char *path);
_new_ = alloca(_len_); \
(void *) memset(_new_, 0, _len_); \
})
#define strappenda(a, b) \
({ \
const char *_a_ = (a), *_b_ = (b); \
char *_c_; \
size_t _x_, _y_; \
_x_ = strlen(_a_); \
_y_ = strlen(_b_); \
_c_ = alloca(_x_ + _y_ + 1); \
strcpy(stpcpy(_c_, _a_), _b_); \
_c_; \
})