Voelker, Bernhard wrote: > Jim Meyering wrote: > >> The *second* time that command is run, it appears to print nothing. >> >> Do this in src/: >> >> ./touch a b; mode3=2755 >> ./ginstall -Cv -m$mode3 a b >> ./ginstall -Cv -m$mode3 a b > > Bingo! > >> If the second invocation of ginstall doesn't print anything, >> that indicates a problem and is why the test is failing. >> In that case, if you can step through it in gdb, that'd be nice. > > no gdb here, sorry ;-( > >> Otherwise, run it under truss: >> >> truss -o log ./ginstall -Cv -m$mode3 a b >> >> and send the resulting "log" file. > > here u are - hope that helps on this long search > (thanx for your patience BTW): > ... > getppriv(PRIV_EFFECTIVE, {000400038800000000000000}) = 0 > umask(0) = 027 > stat64("b", 0xFFBFF8F8) = 0 > lstat64("a", 0xFFBFF7A0) = 0 > lstat64("b", 0xFFBFF708) = 0 > getuid() = 26425 [26425] > getgid() = 17307 [17307] > open64("a", O_RDONLY) = 3 > open64("b", O_RDONLY) = 4 > read(3, 0x00063088, 4096) = 0 > close(3) = 0 > close(4) = 0 > chmod("b", 02755) = 0 > llseek(0, 0, SEEK_CUR) = 7984 > close(0) = 0 > close(1) = 0 > close(2) = 0 > _exit(0)
I'm beginning to think there's a fundamental problem with your system. Here's the comparable part of truss output on a working Solaris 10 system: getppriv(PRIV_EFFECTIVE, {000400038800000000000000}) = 0 umask(0) = 022 stat64("b", 0xFFBFFB08) = 0 brk(0x0003AE60) = 0 brk(0x0003CE60) = 0 fcntl(1, F_GETFL) = 8194 fstat64(2, 0xFFBFEB38) = 0 write(2, " . / g i n s t a l l", 10) = 10 write(2, " : ", 2) = 2 write(2, " t h e - - c o m p a r".., 85) = 85 write(2, "\n", 1) = 1 stat64("a", 0xFFBFF720) = 0 lstat64("b", 0xFFBFF688) = 0 unlink("b") = 0 ioctl(1, TCGETA, 0xFFBFE614) = 0 fstat64(1, 0xFFBFE530) = 0 write(1, " r e m o v e d ` b '\n", 12) = 12 write(1, " ` a ' - > ` b '\n", 11) = 11 open64("a", O_RDONLY) = 3 fstat64(3, 0xFFBFF550) = 0 open64("b", O_WRONLY|O_CREAT|O_EXCL, 0644) = 4 fstat64(4, 0xFFBFF5E8) = 0 sysconfig(_CONFIG_PAGESIZE) = 8192 brk(0x0003CE60) = 0 brk(0x00046E60) = 0 read(3, 0x0003E000, 32768) = 0 brk(0x00046E60) = 0 brk(0x00048E60) = 0 fstat64(4, 0xFFBFF200) = 0 fpathconf(4, 20) = 0 facl(4, SETACL, 4, 0x00046F28) Err#89 ENOSYS fchmod(4, 0600) = 0 close(4) = 0 close(3) = 0 chmod("b", 02755) = 0 llseek(0, 0, SEEK_CUR) = 365471 close(0) = 0 close(1) = 0 close(2) = 0 _exit(0) The simple fact that your run somehow fails to output the diagnostic from install.c: ./ginstall: the --compare (-C) option is ignored when you specify a mode with non-permission bits says something is very wrong. Remember, you did not compile with gcc. Unless someone can suggest an alternative explanation, I'll have to assume this is not a problem with coreutils.