On Sat, 16 Mar 2019 at 17:38, Paul-Stelian Olaru via so <[email protected]> wrote: > > În cerință nu este foarte clar când ar trebui so_fclose(stream) să returneze > 0 și când SO_EOF. > > > > În teste, văd că după o eroare la fgetc/fread ar trebui să returneze 0 și > după o eroare la fputc/fwrite ar trebui SO_EOF. Deci codul de retur bănuiesc > că nu depinde de so_feof(stream). > > > > Când mă folosesc de codul de eroare, pică testele pe fread. Când nu mă > folosesc de codul de eroare, pică testul pe write_small (got 0, expected -1).
În principiu so_fclose întoarce SO_EOF dacă eșuează vreunul din apelurile de sistem apelate mai departe de so_fclose. În cazul testelor ferror_read_small și ferror_read_large, eroarea apare la apelul so_fread, care încearcă să facă read. La momentul so_fclose, singurul apel de sistem care se mai face este close, care nu întoarce nici o eroare. În schimb, la testul ferror_write_small, so_fwrite nu va face nici un apel de sistem (totul e scris în buffer). Eroarea este prinsă abia la so_fclose, care înainte de a închide fișierul va face și un so_fflush, care la rândul lui va executa apelul de sistem write. > Also, testul 13 [test_fwrite_huge] spune că am 0 apeluri de sistem write (mă > rog, spune read dar hook-ul cred că e pentru write). O să mai fac verificări > dar dacă nu rezolv cu asta revin cu un topic separat. Problema este vizibilă > și în ce am momentan pe repo și cred că și în cel mai recent upload de pe > VMchecker. Din ce văd, nu îți ajunge deloc în so_fflush ca să facă vreun write. _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
