#if 0 # # If executed this file compiles an .so module and prints the suggested # usage line... # /bin/sh << EOS MODNAME=\`basename "$0" .c\` (set -x; cc -O -shared -o \$MODNAME.so "$0" \ -init my_init -hidden_symbol my_init \ -expect_unresolved '__Arg?' ) 1>&2 && echo env _RLD_LIST=`pwd`/\$MODNAME.so:DEFAULT $SHELL EOS exit #endif #include #include #include #include #include static int screwing_tar; static dev_t first_device; void my_init () { extern char **__Argv[]; extern int __Argc; if (__Argc>1 && strstr ((*__Argv)[0],"tar") && strchr ((*__Argv)[1],'c') ) screwing_tar = 1; } int lstat (const char *path,struct stat *buf) { int ret=__lstat (path,buf); if (ret==0 && screwing_tar) { if (first_device==0) first_device = buf->st_dev; else if (buf->st_dev != first_device) { errno = ENOENT; return -1; } } return ret; }