มีโปรแกรมอรรถประโยชน์เช่น dspcat บน Linux หรือไม่?


9

ฉันใช้dspcatคำสั่งต่อไปนี้บนAIXและสามารถดัมพ์แค็ตตาล็อกข้อความที่สร้างด้วยgencatคำสั่ง:

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

ฉันใช้เวลาเป็นชั่วโมงที่ดีในการหาคำแนะนำเกี่ยวกับวิธีการถ่ายโอนข้อมูลหนึ่งในแคตตาล็อกเหล่านี้บน Linux แต่คำสั่งนี้ดูเหมือนจะไม่สามารถใช้ได้ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม


ฉันไม่เห็นอะไรมากมายเช่นกัน จะstringsสั่งจะเพียงพอที่จะได้รับสิ่งที่คุณต้องการ? อาจจะมีการโพสต์เล็กน้อย?
ฌอนเพอร์รี่

มีการเข้ารหัสสตริงที่น่าจะเป็น ... ฉันไม่แน่ใจว่าสตริง shiftjis จะหลุดออกมาจากไฟล์แคตตาล็อกสตริงหรือไม่ ... ฉันลองทดสอบดูได้
ojblass

รูปแบบนั้นไม่ยากที่จะทำวิศวกรรมย้อนกลับหากเนื้อหามีค่า
ฌอนเพอร์รี่

คำตอบ:


3

ผมพบว่ารหัสที่มาสำหรับdspcat.c: http://www.smart.net/~rlhamil/ โดยเฉพาะในtarballนี้ ฉันพยายามรวบรวมมันและขาดตัวแปร:

$ 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

ตัวแปรNL_SETMAXไม่ปรากฏว่าถูกกำหนดไว้ในระบบของฉัน ฉันค้นหาไฟล์ส่วนหัวนี้bits/xopen_lim.hซึ่งมีตัวแปรนี้ดังนั้นฉันจึงเพิ่มสิ่งนี้ลงในรายการส่วนหัวด้วยความตั้งใจ

$ 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

ถ้าฉันมีเวลามากขึ้นฉันจะเล่นกับสิ่งนี้ แต่ฉันเชื่อว่าถ้าคุณตั้งค่าตัวแปรนั้นภายในโค้ดโดยตรงคุณอาจจะสามารถรวบรวมมันได้ด้วยตัวเอง


ฉันสามารถทำงานกับขอบคุณมาก +50
ojblass
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.