--- tar-orig.c 2013-07-22 00:29:33.078595937 +0200 +++ tar.c 2013-07-22 00:30:41.786328335 +0200 @@ -48,6 +48,7 @@ static FILE *tarfile; static ino_t tarinode; +static dev_t tardev; static void usage(void) @@ -126,6 +127,7 @@ if (lstat(file, &st) < 0) eprintf("tar: stat '%s':", file); tarinode = st.st_ino; + tardev = st.st_dev; } else { tarfile = (mode == 'c') ? stdout : stdin; } @@ -161,7 +163,7 @@ mode_t mode; lstat(path, &st); - if (st.st_ino == tarinode) { + if (st.st_ino == tarinode && st.st_dev == tardev) { fprintf(stderr, "ignoring '%s'\n", path); return 0; }