Do real seek

Catch ftruncate errors

PR:             104295
Submitted by:   ru (seek)
This commit is contained in:
ache 2006-10-15 16:24:31 +00:00
parent e4ea7afca1
commit ce03393cc5

View File

@ -113,9 +113,17 @@ freopen(file, mode, fp)
return (NULL);
}
}
if (oflags & O_TRUNC)
ftruncate(fp->_file, 0);
if (_fseeko(fp, 0, oflags & O_APPEND ? SEEK_END : SEEK_SET,
if (oflags & O_TRUNC) {
if (ftruncate(fp->_file, (off_t)0) < 0) {
sverrno = errno;
fclose(fp);
FUNLOCKFILE(fp);
errno = sverrno;
return (NULL);
}
}
fp->_flags |= __SNPT; /* real seek */
if (_fseeko(fp, (off_t)0, oflags & O_APPEND ? SEEK_END : SEEK_SET,
0) < 0 && errno != ESPIPE) {
sverrno = errno;
fclose(fp);