Gibt es ein Dienstprogramm wie dspcat unter Linux?

9

Ich verwende den folgenden dspcatBefehl unter AIX und kann mit dem gencatBefehl erstellte Nachrichtenkataloge sichern :

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

Ich habe eine gute Stunde damit verbracht, nach Hinweisen zu suchen, wie man einen dieser Kataloge unter Linux speichert, aber dieser Befehl scheint nicht verfügbar zu sein. Jede Hilfe wäre dankbar.

ojblass
quelle
Ich sehe da draußen auch nicht viel. Würde der stringsBefehl ausreichen, um das zu bekommen, was Sie brauchen? Vielleicht mit ein wenig Nachbearbeitung?
Sean Perry
Die Zeichenfolgen sind wahrscheinlich codiert. Ich bin nicht ganz sicher, ob eine Shiftjis-Zeichenfolge ordnungsgemäß aus einer Katalogdatei mit Zeichenfolgen herausfallen würde. Ich kann einige Tests durchführen.
Ojblass
Das Format ist wahrscheinlich nicht zu schwer zurückzuentwickeln, wenn der Inhalt wertvoll ist.
Sean Perry

Antworten:

3

Ich habe den Quellcode gefunden für dspcat.c: http://www.smart.net/~rlhamil/ . Speziell in diesem Tarball . Ich habe versucht, es zu kompilieren und es fehlte eine Variable:

$ 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

Die Variable NL_SETMAXscheint auf meinem System nicht definiert zu sein. Ich habe diese Header-Datei gefunden, bits/xopen_lim.hdie diese Variable hatte, also habe ich sie aus einer Laune heraus zur Liste der Header hinzugefügt.

$ 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

Wenn ich mehr Zeit habe, spiele ich damit, aber ich glaube, wenn Sie diese Variable direkt im Code statisch festlegen, können Sie dies möglicherweise selbst kompilieren.

slm
quelle
Ich kann damit arbeiten, vielen Dank +50
ojblass