Esiste un'utilità come dspcat su Linux?


9

Uso il seguente dspcatcomando su AIX e posso scaricare cataloghi di messaggi creati con il gencatcomando:

dspcat –g  /u/is/bin/I18N/l/lib/libca/libcalifornia.117.cat >> /tmp/message.smc

Ho trascorso una buona ora solida alla ricerca di suggerimenti su come scaricare uno di questi cataloghi su Linux ma questo comando non sembra essere disponibile. Qualsiasi aiuto sarebbe apprezzato.


Nemmeno io vedo molto là fuori. Il stringscomando sarebbe sufficiente per ottenere ciò di cui hai bisogno? Forse con un po 'di post elaborazione?
Sean Perry,

le stringhe sono probabilmente codificate ... non sono del tutto sicuro che una stringa shiftjis cada correttamente da un file di catalogo con stringhe ... Posso provare alcuni test.
ojblass,

Il formato probabilmente non è troppo difficile da decodificare se i contenuti sono preziosi.
Sean Perry,

Risposte:


3

Ho trovato il codice sorgente per dspcat.c: http://www.smart.net/~rlhamil/ . In particolare in questo tarball . Ho provato a compilarlo e mancava una variabile:

$ make
cc -O -DSOLARIS    dspcat.c   -o dspcat
dspcat.c: In function ‘format_msg’:
dspcat.c:11:23: error: ‘NL_TEXTMAX’ undeclared (first use in this function)
    static char result[NL_TEXTMAX*2+1];
                       ^
dspcat.c:11:23: note: each undeclared identifier is reported only once for each function it appears in
dspcat.c: In function ‘print_file’:
dspcat.c:240:23: error: ‘NL_SETMAX’ undeclared (first use in this function)
    int setlo=1, sethi=NL_SETMAX, msglo=1, msghi=NL_MSGMAX, x, y;
                       ^
dspcat.c:240:49: error: ‘NL_MSGMAX’ undeclared (first use in this function)
    int setlo=1, sethi=NL_SETMAX, msglo=1, msghi=NL_MSGMAX, x, y;
                                                 ^
dspcat.c: In function ‘main’:
dspcat.c:338:30: error: ‘NL_MSGMAX’ undeclared (first use in this function)
       if (msg_nr<1 || msg_nr>NL_MSGMAX) {
                              ^
dspcat.c:353:32: error: ‘NL_SETMAX’ undeclared (first use in this function)
       if (msg_set<1 || msg_set>NL_SETMAX) {
                                ^
make: *** [dspcat] Error 1

La variabile NL_SETMAXnon sembra essere definita sul mio sistema. Ho individuato questo file di intestazione, bits/xopen_lim.hche aveva questa variabile, quindi l'ho aggiunto all'elenco delle intestazioni per un capriccio.

$ make
cc -O -DSOLARIS    dspcat.c   -o dspcat
dspcat.c: In function ‘format_msg’:
dspcat.c:11:33: warning: integer overflow in expression [-Woverflow]
    static char result[NL_TEXTMAX*2+1];
                                 ^
dspcat.c:11:16: error: size of array ‘result’ is negative
    static char result[NL_TEXTMAX*2+1];
                ^
dspcat.c:11:16: error: storage size of ‘result’ isn’t constant
dspcat.c:15:29: warning: integer overflow in expression [-Woverflow]
    for (x=0; x < (NL_TEXTMAX*2) && *s != '\0'; s++)
                             ^
make: *** [dspcat] Error 1

Se avrò più tempo, giocherò con questo, ma credo che se imposti direttamente quella variabile all'interno del codice, potresti essere in grado di compilarlo da solo.


Posso lavorare con questo grazie mille +50
ojblass il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.