[so] Tema 1 Windows problema ciudata

Dragan Stefan ph0enix1810 at gmail.com
Sat Nov 4 23:55:35 EET 2006


Nope. Nici un ascii sau Unicode. Faza e ca parserul e cretin. Adica: daca
dau "echo 'bla bla' etc etc" el va descompune param in "bla bla", "etc",
"etc". faza e ca daca tu vrei sa apelezi CreateProcess si bagi la command
line textul  recompus pe baza arborelui obti ceva de genul "echo bla bla etc
etc". se pierd apostroafele alea care fac ca unele charactere din linia de
parametrii sa apara cand dai echo.

De fapt e o chestie specifica linux: tb sa pui un param intre ghilimele daca
nu vrei sa pierzi din simboluri atunci cand apelezi ceva.

Pe win daca dai: "echo bla { bla" se va afisa "bla { bla"

Pe linux daca dai: "echo bla { bla" se va afisa "bla  bla" si doar daca dai
"echo 'bla { bla'" se va afisa "bla { bla".

Ce pot sa zic . ori e o chestie f inteligenta din partea linuxului ori una f
prosta. Bla bla :P

 

From: so-bounces at cursuri.cs.pub.ro [mailto:so-bounces at cursuri.cs.pub.ro] On
Behalf Of Catalin Iacob
Sent: Saturday, November 04, 2006 10:25 PM
To: so at cursuri.cs.pub.ro
Subject: [so] Tema 1 Windows problema ciudata

 

Salut

Raspunsul de aseara a fost foarte util, multumesc din nou.

Mai am nevoie de ajutor pentru o problema destul de bizara:  am vazut ca
tema pica testele 4 si 5 din cauza acoladei deschise de la echo ' int main {
....' 
Mai precis { nu apare in output. Si programul nu compileaza si deci testul
pica cu glorie. 

Am facut tot felul de incercari de comenzi simple in shellul din tema mea:

echo 'a{b' imi scrie doar a
echo 'aaa { bbb' imi scrie aaa  bbb (cu 2 spatii deci practic elimina
acolada) 
echo '{' nu scrie nimic
echo '{}' scrie culmea {} ... e singurul mod in care am reusit sa fac sa
apara o acolada deschisa
echo 'aa{}bb' scrie aabb fara nici o acolada si fara spatiu
echo 'aa{ }bb' (cu spatiu intre acolade) scrie aa }bb 

Evident ca totusi in marea majoritate a cazurilor shellul merge ca altfel
problema nu era bizara, adica echo 'ana are mere'  afiseaza ana are mere.
Problema e cu acolada deschisa.

Singurul lucru la care pot sa ma gandesc e ca problema vine de la dualitatea
Unicode / Ascii de pe Windows sau de la faptul ca din cine stie ce motive
CreateProcessA trateaza special caracterul { din pathul pe care il primeste.
Fiindca portez tema de pe Linux am ales sa folosesc ASCII si deci apelez
CreateProcessA careia ii trimit un char[] pe post de parametru 2
lpCommandLine (care e LPCSTR adica tot aia). Daca afisez inainte parametrul
pe care urmeaza sa-l trimit lui CreateProcessA , pentru echo 'aa{bb' el este
echo aa{bb (presupun ca de eliminarea ' se ocupa parserul) deci ok si totusi
rezultatul comenzii e ca imi scrie doar aa. 

Ce as putea sa fac?  

Multumesc




-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20061104/70850f65/attachment.htm


More information about the so mailing list