William Douglas wrote: >>From 85f51557a62be9224ed475047aff503bece342b4 Mon Sep 17 00:00:00 2001 > From: William Douglas <william.doug...@intel.com> > Date: Wed, 15 Jun 2011 11:08:17 -0700 > > With the addition of ListenSpecial as a socket option we need the > the usual sd_is_ functions for special files. This patch does > that. > > --- > src/sd-daemon.c | 33 +++++++++++++++++++++++++++++++++ > src/sd-daemon.h | 12 ++++++++++++ > 2 files changed, 45 insertions(+), 0 deletions(-) > > diff --git a/src/sd-daemon.c b/src/sd-daemon.c > index d9f23d6..3cac4d5 100644 > --- a/src/sd-daemon.c > +++ b/src/sd-daemon.c > @@ -169,6 +169,39 @@ _sd_hidden_ int sd_is_fifo(int fd, const char *path) { > return 1; > } > > +_sd_hidden_ int sd_is_special(int fd, const char *path) { > + struct stat st_fd; > + > + if (fd < 0) > + return -EINVAL; > + > + memset(&st_fd, 0, sizeof(st_fd)); > + if (fstat(fd, &st_fd) < 0) > + return -errno;
Hello, I notice that other code in this file does the same thing, so maybe you're just following that example, but why bother to clear the bits of a struct stat before calling fstat or stat to fill it in? Aren't the two memset calls here unnecessary? > + if (!S_ISREG(st_fd.st_mode)) > + return 0; > + > + if (path) { > + struct stat st_path; > + > + memset(&st_path, 0, sizeof(st_path)); > + if (stat(path, &st_path) < 0) { > + > + if (errno == ENOENT || errno == ENOTDIR) > + return 0; > + > + return -errno; > + } > + > + return > + st_path.st_dev == st_fd.st_dev && > + st_path.st_ino == st_fd.st_ino; > + } > + > + return 1; > +} _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel