--- 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:12:02 CEST