Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

domanda su vprintf in vari sistemi

0 views
Skip to first unread message

dawe

unread,
Jul 8, 2008, 4:45:34 AM7/8/08
to
Ciao, ho questi programmi (dall'universita' di santa cruz), che
fondalmentalmente sono binari C per funzionare in cgi. E fin qui...
Ad un certo punto, uno di questi esegue questa cosa:


hPrintf("<table width='100%'><tr><td align='left'>");

dove hPrintf e' in realta' una chiamata vprintf. Il fatto e' che sul
loro server il layout della pagina e' corretto, qui da me e' una ciofeca
perche' il simbolo % viene tralasciato assieme al successivo apice... ne
consegue che tutto quello che segue e' incluso del valore "width" della
tabella...
Ho modificato la chiamata in

hPrintf("<table width=\"100%%\"><tr><td align='left'>");

e tutto funziona.
Ora, visto che a Santa Cruz e a Milano stiamo usando la stessa versione
di codice, visto che loro usano Linux e noi FreeBSD, e' possibile che i
due OS abbiano vprintf implementata in maniera fondalmentalmente
diversa?

Ciao

d

Remo D.

unread,
Jul 8, 2008, 8:09:49 AM7/8/08
to
dawe ha scritto:

> Ad un certo punto, uno di questi esegue questa cosa:
> hPrintf("<table width='100%'><tr><td align='left'>");

Se non ricordo male lo standard dice che usare un indicatore di formato
non valido (come %' ) genera un comportamento indefinito, quindi ogni
compilatore decide cosa fare. Lasciare la stringa come a Santa Cruz o
eliminarla come accade a Milano sono entrambe scelte ammissibili.

Mi aspetterei come minimo un warning, comunque.

> Ho modificato la chiamata in
> hPrintf("<table width=\"100%%\"><tr><td align='left'>");
> e tutto funziona.

Perche' ora non c'e' piu' l'undefined behaviour. Secondo me dovrebbero
correggere il codice nello stesso modo anche a Santa Cruz.

> Ora, visto che a Santa Cruz e a Milano stiamo usando la stessa versione
> di codice, visto che loro usano Linux e noi FreeBSD, e' possibile che i
> due OS abbiano vprintf implementata in maniera fondalmentalmente
> diversa?

Piu' che di OS diversi parlerei di compilatori diversi (come versione
se usate tutti e due gcc) o dai flag usati per la compilazione (usate
gli stessi makefile?).

R.D.


dawe

unread,
Jul 8, 2008, 9:11:25 AM7/8/08
to
Grazie Remo,

Remo D. <rd> wrote:

>
> > Ho modificato la chiamata in
> > hPrintf("<table width=\"100%%\"><tr><td align='left'>");
> > e tutto funziona.
> Perche' ora non c'e' piu' l'undefined behaviour. Secondo me dovrebbero
> correggere il codice nello stesso modo anche a Santa Cruz.
>

Infatti... gli ho scritto stamattina, mi aspetto una risposta entro
domani (dannato fuso orario)

> > Ora, visto che a Santa Cruz e a Milano stiamo usando la stessa versione
> > di codice, visto che loro usano Linux e noi FreeBSD, e' possibile che i
> > due OS abbiano vprintf implementata in maniera fondalmentalmente
> > diversa?
>
> Piu' che di OS diversi parlerei di compilatori diversi (come versione
> se usate tutti e due gcc) o dai flag usati per la compilazione (usate
> gli stessi makefile?).
>

Il makefile e' lo stesso. Qui uso gcc 4.2.1, in California non so... Cmq
ancora grazie della risposta.

d

dawe

unread,
Jul 8, 2008, 9:12:07 AM7/8/08
to
Remo D. <rd> wrote:

> Se non ricordo male lo standard dice che usare un indicatore di formato
> non valido (come %' ) genera un comportamento indefinito, quindi ogni
> compilatore decide cosa fare.

Sapresti dove trovare informazioni su questo? Grazie

d

Remo D.

unread,
Jul 8, 2008, 9:29:15 AM7/8/08
to
dawe ha scritto:


Lo standard ISO vero e proprio è a pagamento, ma credo sia utle solo a
chi deve scrivere un compilatore C.
Le versioni DRAFT, invece sono disponibili su Internet. Io in genere uso
questa che è datata Settembre 2007:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

Quello di cui stavamo parlando lo trovi al punto 9 del paragrafo 7.19.6.1

Remo.D

dawe

unread,
Jul 8, 2008, 11:09:59 AM7/8/08
to
0 new messages