902 |
|
avinsert(avstore(&avs)); |
903 |
|
n -= AMBVALSIZ; |
904 |
|
} |
905 |
+ |
lastpos = flen - n; |
906 |
|
/*** seek always as safety measure |
907 |
|
if (n) ***/ /* alignment */ |
908 |
< |
if (lseek(fileno(ambfp), (off_t)(flen-n), SEEK_SET) < 0) |
908 |
> |
if (lseek(fileno(ambfp), (off_t)lastpos, SEEK_SET) < 0) |
909 |
|
goto seekerr; |
910 |
|
} |
911 |
|
#ifdef DEBUG |
918 |
|
#endif |
919 |
|
syncend: |
920 |
|
n = fflush(ambfp); /* calls write() at last */ |
921 |
< |
if ((lastpos = lseek(fileno(ambfp), (off_t)0, SEEK_CUR)) < 0) |
922 |
< |
goto seekerr; |
921 |
> |
if (n == EOF) { |
922 |
> |
if ((lastpos = lseek(fileno(ambfp), (off_t)0, SEEK_CUR)) < 0) |
923 |
> |
goto seekerr; |
924 |
> |
} else |
925 |
> |
lastpos += (long)nunflshed*AMBVALSIZ; |
926 |
|
aflock(F_UNLCK); /* release file */ |
927 |
|
nunflshed = 0; |
928 |
|
return(n); |