---
tar.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/tar.c b/tar.c
index 87b7236..0f3ce33 100644
--- a/tar.c
+++ b/tar.c
_AT_@ -47,6 +47,7 @@ static void c(char *);
static void xt(int (*)(char*, int, char[Blksiz]));
static FILE *tarfile;
+static ino_t tarinode;
static void
usage(void)
_AT_@ -117,9 +118,14 @@ main(int argc, char *argv[])
usage();
if(file) {
+ struct stat st;
+
tarfile = fopen(file, (mode == 'c') ? "wb" : "rb");
if(!tarfile)
eprintf("tar: open '%s':", file);
+ if (lstat(file, &st) < 0)
+ eprintf("tar: stat '%s':", file);
+ tarinode = st.st_ino;
} else {
tarfile = (mode == 'c') ? stdout : stdin;
}
_AT_@ -155,6 +161,10 @@ archive(const char* path, const struct stat* sta, int type)
mode_t mode;
lstat(path, &st);
+ if (st.st_ino == tarinode) {
+ fprintf(stderr, "ignoring '%s'\n", path);
+ return 0;
+ }
pw = getpwuid(st.st_uid);
gr = getgrgid(st.st_gid);
--
1.8.3.2
--fdj2RfSjLxBAspz7--
Received on Mon Sep 17 2001 - 00:00:00 CEST
This archive was generated by hypermail 2.3.0 : Sat Jul 20 2013 - 19:24:02 CEST