Apakah ada utilitas seperti dspcat di Linux?

9

Saya menggunakan dspcatperintah berikut di AIX dan dapat membuang katalog pesan yang dibuat dengan gencatperintah:

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

Saya telah menghabiskan waktu yang cukup lama mencari petunjuk tentang cara membuang salah satu katalog ini di Linux tetapi perintah ini sepertinya tidak tersedia. Bantuan apa pun akan dihargai.

ojblass
sumber
Saya juga tidak melihat banyak di luar sana. Apakah stringsperintahnya cukup untuk mendapatkan yang Anda butuhkan? Mungkin dengan sedikit pemrosesan pos?
Sean Perry
string yang kemungkinan dikodekan ... saya tidak sepenuhnya yakin apakah string shiftjis akan keluar dengan benar dari file katalog bersenar ... Saya dapat mencoba beberapa pengujian.
ojblass
Formatnya mungkin tidak terlalu sulit untuk direkayasa balik jika kontennya berharga.
Sean Perry

Jawaban:

3

Saya menemukan kode sumber untuk dspcat.c: http://www.smart.net/~rlhamil/ . Khususnya di tarball ini . Saya mencoba mengompilasinya dan kehilangan variabel:

$ 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

Variabel NL_SETMAXtampaknya tidak didefinisikan pada sistem saya. Saya menemukan file header ini, bits/xopen_lim.hyang memang memiliki variabel ini jadi saya menambahkan ini ke daftar header pada kemauan.

$ 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

Jika saya punya lebih banyak waktu saya akan bermain dengan ini, tetapi saya percaya jika Anda secara statis mengatur variabel dalam kode secara langsung, Anda mungkin dapat mengkompilasi ini sendiri.

slm
sumber
Saya dapat bekerja dengan ini, terima kasih banyak +50
ojblass