aboutsummaryrefslogtreecommitdiffstats
path: root/main/xen/xen-fd-is-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/xen/xen-fd-is-file.c')
-rw-r--r--main/xen/xen-fd-is-file.c62
1 files changed, 0 insertions, 62 deletions
diff --git a/main/xen/xen-fd-is-file.c b/main/xen/xen-fd-is-file.c
deleted file mode 100644
index a1518e4df0e..00000000000
--- a/main/xen/xen-fd-is-file.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include <sys/stat.h>
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <err.h>
-
-/*
-
-this is to be used as:
-
- while true; do
- eval "exec $_lockfd<>$_lockfile"
- flock -x $_lockfd || return $?
- if xen-fd-is-file $_lockfd $_lockfile; then break; fi
- eval "exec $_lockfd<&-"
- done
-
-instead of:
-
- local rightfile
- while true; do
- eval "exec $_lockfd<>$_lockfile"
- flock -x $_lockfd || return $?
- # We can't just stat /dev/stdin or /proc/self/fd/$_lockfd or
- # use bash's test -ef because those all go through what is
- # actually a synthetic symlink in /proc and we aren't
- # guaranteed that our stat(2) won't lose the race with an
- # rm(1) between reading the synthetic link and traversing the
- # file system to find the inum. Perl is very fast so use that.
- rightfile=$( perl -e '
- open STDIN, "<&'$_lockfd'" or die $!;
- my $fd_inum = (stat STDIN)[1]; die $! unless defined $fd_inum;
- my $file_inum = (stat $ARGV[0])[1];
- print "y\n" if $fd_inum eq $file_inum;
- ' "$_lockfile" )
- if [ x$rightfile = xy ]; then break; fi
- # Some versions of bash appear to be buggy if the same
- # $_lockfile is opened repeatedly. Close the current fd here.
- eval "exec $_lockfd<&-"
- done
-*/
-
-int main(int argc, char *argv[])
-{
- int lockfd;
- const char *filename;
- struct stat fdst, filest;
-
- if (argc <= 2)
- errx(1, "usage: %s FDNUM FILENAME\n", argv[0]);
-
- lockfd = atoi(argv[1]);
- filename = argv[2];
-
- if (fstat(lockfd, &fdst) < 0)
- err(2, "fstat(%i)", lockfd);
-
- if (stat(filename, &filest) < 0)
- err(3, "stat(%s)", filename);
-
- return (fdst.st_ino != filest.st_ino);
-}