Hello,
I've recently written to pgsql-ports about a problem with PG7.0 on NT (Subj: [PORTS] initdb problem on NT with 7.0). Since nobody helped me, I had to find out the reson. The difference between NT and Linux (for instance) is that "open( path, O_RDWR );" opens a file in text mode. So sometime less block can be read than required.
I suggest a following patch. BTW the situation appeared before, see hba.c, pqcomm.c and others.