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

Raspunde prin e-mail lui