mirror of
https://github.com/systemd/systemd.git
synced 2025-01-12 13:18:14 +03:00
util: add files_same() helper function
files_same() returns 1, if the files are the same 0, if the files have different inode/dev numbers errno, for any stat error
This commit is contained in:
parent
756461fd56
commit
9d9951a460
@ -3198,19 +3198,27 @@ bool on_tty(void) {
|
|||||||
return cached_on_tty;
|
return cached_on_tty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int files_same(const char *filea, const char *fileb) {
|
||||||
|
struct stat a, b;
|
||||||
|
|
||||||
|
if (stat(filea, &a) < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
if (stat(fileb, &b) < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
return a.st_dev == b.st_dev &&
|
||||||
|
a.st_ino == b.st_ino;
|
||||||
|
}
|
||||||
|
|
||||||
int running_in_chroot(void) {
|
int running_in_chroot(void) {
|
||||||
struct stat a = {}, b = {};
|
int ret;
|
||||||
|
|
||||||
/* Only works as root */
|
ret = files_same("/proc/1/root", "/");
|
||||||
if (stat("/proc/1/root", &a) < 0)
|
if (ret < 0)
|
||||||
return -errno;
|
return ret;
|
||||||
|
|
||||||
if (stat("/", &b) < 0)
|
return ret == 0;
|
||||||
return -errno;
|
|
||||||
|
|
||||||
return
|
|
||||||
a.st_dev != b.st_dev ||
|
|
||||||
a.st_ino != b.st_ino;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *ascii_ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigned percent) {
|
static char *ascii_ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigned percent) {
|
||||||
|
@ -451,6 +451,8 @@ static inline const char *ansi_highlight_off(void) {
|
|||||||
return on_tty() ? ANSI_HIGHLIGHT_OFF : "";
|
return on_tty() ? ANSI_HIGHLIGHT_OFF : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int files_same(const char *filea, const char *fileb);
|
||||||
|
|
||||||
int running_in_chroot(void);
|
int running_in_chroot(void);
|
||||||
|
|
||||||
char *ellipsize(const char *s, size_t length, unsigned percent);
|
char *ellipsize(const char *s, size_t length, unsigned percent);
|
||||||
|
Loading…
Reference in New Issue
Block a user