Gary V. Vaughan <gary <at> gnu.org> writes: Hi Gary, > ... > PASS: test-binary-io.sh > PASS: test-errno > PASS: test-fseek.sh
Thanks for the rapid feedback. Good - I made progress. I successfully split fseek.c into two tests, successfully isolating the first test from buggy ungetc. > ../../gltests/test-fseek.c:68: assertion failed > FAIL: test-fseek2.sh Hmm. I suspect that ungetc.m4 needs work. Can you confirm that FUNC_UNGETC_BROKEN did not get defined? On a working platform, the configure output includes: checking whether ungetc works on arbitrary bytes... yes and when I run by hand with 'gl_cv_func_ungetc_works=no ./gnulib-tool ...' I confirmed that the skip logic works: checking whether ungetc works on arbitrary bytes... no (cached) ... Skipping test: ungetc cannot handle arbitrary bytes SKIP: test-fseek2.sh Our goal here is to write ungetc.m4 in such a way that you don't have to prime the cache on systems with losing ungetc. > ../../gltests/test-ftell.c:108: assertion failed > ../../gltests/test-ftell.sh: line 3: 18761 Aborted > ./test-ftell${EXEEXT} 1 <"$srcdir/test-ftell.sh" > FAIL: test-ftell.sh Ouch. I got past the ungetc-induced failure (line 86 moved to 97), but uncovered an independent failure (failure at line 108 states that fseek appears to be unable to set the file offset beyond EOF). I'm not sure what to do about this one, yet. > ../../gltests/test-ftell.c:97: assertion failed > FAIL: test-ftell2.sh Again, if FUNC_UNGETC_BROKEN were set, this test should have been skipped. I'm applying this interdiff; would you mind trying again? git pull git://repo.or.cz/gnulib/ericb.git master diff --git i/m4/ungetc.m4 w/m4/ungetc.m4 index 67a8607..9236d4c 100644 --- i/m4/ungetc.m4 +++ w/m4/ungetc.m4 @@ -19,9 +19,12 @@ AC_DEFUN_ONCE([gl_FUNC_UNGETC_WORKS], if (fgetc (f) != 'a') return 3; if (fgetc (f) != 'b') return 4; if (ungetc ('d', f) != 'd') return 5; - if (fseek (f, 0, SEEK_CUR) != 0) return 6; - if (ftell (f) != 1) return 7; - if (fgetc (f) != 'b') return 8; + if (ftell (f) != 1) return 6; + if (fgetc (f) != 'd') return 7; + if (ftell (f) != 2) return 8; + if (fseek (f, 0, SEEK_CUR) != 0) return 9; + if (ftell (f) != 2) return 10; + if (fgetc (f) != 'c') return 11; fclose (f); remove ("conftest.tmp");])], [gl_cv_func_ungetc_works=yes], [gl_cv_func_ungetc_works=no], [gl_cv_func_ungetc_works='guessing no'])