Așa e. fgetc întoarce un caracter ca unsigned char căruia i se face
cast la int. Am modificat și în enunț.

On Sat, 16 Mar 2019 at 18:20, Paul-Stelian Olaru
<[email protected]> wrote:
>
> Uhhhhhh, deci avem și caracterul 0xFF. Care ca (char) devine -1. Care e egal 
> cu SO_EOF. Care cauzează o terminare prematură a lui so_fwrite.
>
>
>
> Mda. Am schimbat castul să nu mai fie la (char) ci la (unsigned char). Now it 
> works. Acuma testele vor reveni, după ce scot printurile de debug. Voi face 
> upload pe VMchecker în curând.
>
>
>
> From: Paul-Stelian Olaru
> Sent: Saturday, March 16, 2019 6:12 PM
> To: Adrian Șendroiu; Sisteme de Operare
> Subject: RE: [so] [SO][Tema 2][Linux]Inconsistență la codul de retur 
> so_fclose()
>
>
>
> Am observat că la testul 13 îmi rulează doar de 56 de ori so_fputc. Aparent, 
> este consistent cu eroarea raportată de testul următor. Voi investiga mai 
> departe.
>
>
>
> La so_fclose eu apelez so_fflush(). Deci codul de eroare al lui fclose ar 
> trebui să fie același cu al lui fflush?
>
>
>
> [Oh well, se pare că am reușit cu asta. Deci da, dacă eșuează ori fflush ori 
> close/CloseHandle returnez eroare; nu-mi pasă de ferror]. Voi investiga mai 
> departe ce se întâmplă pe testele 13 și 14, de ce pun doar 56 de caractere în 
> loc de numărul corect. Dacă nu dau de cap, revin cu alt topic.
>
>
>
> From: Adrian Șendroiu
> Sent: Saturday, March 16, 2019 6:06 PM
> To: Paul-Stelian Olaru; Sisteme de Operare
> Subject: Re: [so] [SO][Tema 2][Linux]Inconsistență la codul de retur 
> so_fclose()
>
>
>
> 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