Czy w systemie Linux jest narzędzie takie jak dspcat?


9

Korzystam z następującego dspcatpolecenia w systemie AIX i mogę zrzucić katalogi komunikatów utworzone za pomocą tego gencatpolecenia:

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

Spędziłem dobrą solidną godzinę, szukając wskazówek, jak zrzucić jeden z tych katalogów w systemie Linux, ale to polecenie wydaje się być niedostępne. Każda pomoc będzie mile widziana.


Tam też nie widzę wiele. Czy to stringspolecenie wystarczy, aby uzyskać to, czego potrzebujesz? Może przy odrobinie przetwarzania końcowego?
Sean Perry

ciągi są prawdopodobnie zakodowane ... nie jestem do końca pewien, czy łańcuch shiftjis właściwie wypadłby z pliku katalogu ciągów ... Mogę spróbować przetestować.
ojblass

Format prawdopodobnie nie jest zbyt trudny do odtworzenia, jeśli zawartość jest cenna.
Sean Perry

Odpowiedzi:


3

Znalazłem kod źródłowy dspcat.c: http://www.smart.net/~rlhamil/ . Szczególnie w tym archiwum . Próbowałem go skompilować i brakowało zmiennej:

$ 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

Zmienna NL_SETMAXnie wydaje się być zdefiniowana w moim systemie. Zlokalizowałem ten plik nagłówka, bits/xopen_lim.hktóry miał tę zmienną, więc dodałem ją do listy nagłówków według kaprysu.

$ 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

Jeśli będę miał więcej czasu, zagram z tym, ale wierzę, że jeśli statycznie ustawisz tę zmienną w kodzie bezpośrednio, być może będziesz w stanie ją skompilować samodzielnie.


Mogę pracować z tym dzięki bardzo +50
ojblass
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.