Files
roafacturare/docs/raport_sweep_encoding.md
Marius Mutu d9f5ca4226 docs: planurile, proiectarile si rapoartele de lucru intra in versionare
Folderul docs\ era pana acum in afara oricarui control de versiuni - nici git,
nici SVN - desi contine planurile pe puncte, proiectarile si rapoartele de
cercetare pe care se sprijina modificarile din cod. O stergere acolo era
definitiva.

Fisierele intermediare (handoff-uri intre sesiuni, diff-uri deja aplicate) au
fost sterse inainte, nu versionate: ce era durabil in ele a intrat in antetele
fisierelor de test la care se refereau.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
2026-08-11 22:17:17 +03:00

58 lines
5.1 KiB
Markdown

# Sweep encoding — fisiere text FoxBin2Prg (.vc2/.sc2/.fr2/.mn2/.lb2/.pj2/.prg)
Scop: cautare exhaustiva, pe octeti, a semnaturilor de stricare encoding (`EF BF BD` /
U+FFFD, mojibake UTF-8 cu lead-byte `C3`/`C4`/`C5`/`C8`, BOM `EF BB BF` la inceput de
fisier) in toate fisierele text urmarite de git, in ambele arbore-uri:
- **`D:\ROA\ROAFACTURARE`** (repo principal, remote `gitea.romfast.ro:romfast/roafacturare.git`)
- **`D:\ROA\ROAFACTURARE\COMUN`** (repo separat, `gitea.romfast.ro:romfast/comun.git`)
## Acoperire
| Repo | Fisiere `.vc2/.sc2/.fr2/.mn2/.lb2/.pj2/.prg` scanate |
|---|---|
| ROAFACTURARE (principal) | 75 (case-insensitive, verificat separat ca nu exista variante `.PRG` majuscul scapate) |
| COMUN | 631 (621 din glob case-sensitiv + 10 `.PRG` majuscul gasite separat: `programe/obj2arr.PRG`, `utile/hpdf/_libpdf.PRG`, `utile/hpdf/build_err_msgs.PRG`, `utile/nfXml/nfxmlCREATE.PRG`, `utile/nfXml/nfXmlMap.PRG`, `utile/nfXml/nfxmlread.PRG`, `utile/web/wwapi.PRG`, `utile/web/wwConfig.PRG`, `utile/web/wwHttp.PRG`, `utile/web/wwutils.PRG`) |
Metoda: scan Perl byte-safe (`<:raw`, `LC_ALL=C`) pe continutul curent (working tree =
HEAD, fara modificari necomise in niciunul din cele doua repo-uri la momentul scanarii).
Niciun blob nu a fost extras cu `>` din PowerShell (doar Bash/`git cat-file`, cum s-a
cerut).
## Rezultat: repo principal ROAFACTURARE
**Zero fisiere afectate.** Nicio secventa `EF BF BD`, niciun mojibake `C3/C4/C5/C8` +
continuare, niciun BOM, in niciunul din cele 75 de fisiere.
## Rezultat: COMUN
5 fisiere din 631 au declansat cel putin un semnal. Verificate individual, pe obiect/
context si istoric (`git log -L`), rezultatul e:
| Fisier | Semnal | Nr. | Cauza reala | Commit | Verdict |
|---|---|---|---|---|---|
| `clase/ofacturare_comun.vc2` | `EF BF BD` (U+FFFD) | 12 | Stricare certa - diacritice cp1250 inlocuite cu U+FFFD (`Marcheazǎ`→`ďż˝`, etc.) | **`13b4f65`** | **Deja cunoscut si alocat** — restaurarea o face `s4fix-butoane`, care detine fisierul. Nu l-am atins (doi scriitori pe acelasi fisier ar fi produs conflict). |
| `clase/ferestre_seturi_indicatori.vc2` | mojibake (fals-pozitiv) | 8 | Linia 5188, tag `<sit_titlu>`: text UTF-8 **legitim** ("Situaţiile financiare anuale încheiate...", pentru o declaratie ANAF/XML care cere UTF-8) inserat deliberat intr-un fisier altfel cp1250 — VFP nu impune o singura codare per fisier, doar stocheaza octetii asa cum au fost tastati/lipiti | `2f59024` (commit-ul initial care a adus fisierul in git) | **Fals pozitiv.** Neschimbat de la primul commit din git — nu e o regresie introdusa de vreun commit urmarit. |
| `programe/oproceduri_comune.prg` | mojibake (fals-pozitiv) | 1 | Linia 5266: `STRTRAN(lcText, "Ă", "A")` — o functie de normalizare/eliminare diacritice care trateaza EXPLICIT mai multe variante de text deja-stricat primit din surse externe; litera UTF-8 `Ă` e parte din tabelul de inlocuiri, nu o stricare | `2f59024` | **Fals pozitiv.** Neschimbat de la primul commit; codul e literal despre curatarea altor stricari, nu e el insusi stricat. |
| `utile/Menu/menutool.vc2` | mojibake (fals-pozitiv) | 162 (122 linii) | Clasa terta `_menuinfo`, comentarii in **chineza** (encoding GBK) — octetii GBK se suprapun coincidental peste tiparul `C3/C4/C5/C8 + continuare` cautat pentru cp1250/UTF-8; nu are nicio legatura cu diacritice romanesti | `2f59024` — fisierul are o **singura** intrare in tot istoricul git (import initial, niciodata modificat) | **Fals pozitiv / afara din scop.** Cod tert neatins vreodata. |
| `utile/excel/ExcelXML.prg` | `EF BF BD` (U+FFFD) | 52 | Comentarii in **portugheza** intr-o biblioteca terta (`"Definição de bordas..."`, `"Não aplica os estilos..."`) — caracterele portugheze au fost inlocuite cu U+FFFD deja **inainte** de primul commit vizibil in git | `2f59024` (prezent inca de la import; nu exista commit anterior de investigat in acest istoric) | **Stricare pre-existenta, in afara ferestrei investigabile.** Nu provine dintr-un commit urmarit (SVN sau sursa originala, inainte de tracking-ul git). Doar comentarii, cod tert, fara text romanesc/UI. Nu am gasit un commit "vinovat" pentru ca nu exista unul in istoricul disponibil. |
Nicio secventa BOM (`EF BB BF`) la inceputul vreunui fisier, in niciunul din cele
706 fisiere (75 + 631).
## Concluzie
In afara de **`clase/ofacturare_comun.vc2`** (deja identificat si alocat lui
`s4fix-butoane`), sweep-ul **nu a gasit nicio alta regresie de encoding introdusa de
vreun commit** in istoricul git al celor doua repo-uri. Cele 4 fisiere ramase sunt fie
fals-pozitive ale euristicii (text UTF-8 legitim/intentionat, cod care proceseaza
explicit variante de mojibake, sau comentarii intr-o alta limba/encoding straina de
cp1250-ul romanesc), fie o stricare deja prezenta la momentul primului commit care a
adus fisierul in git (`2f59024`), deci in afara ferestrei pe care o putem bisecta.
Raport gol pe restul arborelui = rezultat bun: nu s-a mai lovit acelasi bug (U+FFFD prin
suprascriere cp1250) in alta parte.
Fara nicio scriere in arbore, fara write-back, fara pornire VFP — doar investigatie
read-only, conform cerintei.