Date: 5 Aug 2004 14:47:40 +0900 From: ryo <ryo@aquahill.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/70017: New port: japanized strings(1) command (japanese/jstrings) Message-ID: <20040805054740.33766.qmail@aquahill.net> Resent-Message-ID: <200408050550.i755oNrH041469@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 70017 >Category: ports >Synopsis: New port: japanized strings(1) command (japanese/jstrings) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Aug 05 05:50:23 GMT 2004 >Closed-Date: >Last-Modified: >Originator: ryo >Release: FreeBSD 5.2.1-RELEASE i386 >Organization: >Environment: System: FreeBSD artemis.aquahill.net 5.2.1-RELEASE FreeBSD 5.2.1-RELEASE #0: Tue May 25 12:41:06 JST 2004 ryo@okamoto.asama.ne.jp:/usr/src/sys/i386/compile/AQUA i386 >Description: Japanese enhancement of strings(1) command. You can extract 2-byte characters from binary files in various types of japanese code. >How-To-Repeat: >Fix: --- jstrings-port.shar begins here --- # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # ./jstrings # ./jstrings/Makefile # ./jstrings/distinfo # ./jstrings/pkg-descr # ./jstrings/pkg-plist # ./jstrings/files # ./jstrings/files/jstrings.1 # ./jstrings/files/patch-aa # ./jstrings/files/patch-ab # echo c - ./jstrings mkdir -p ./jstrings > /dev/null 2>&1 echo x - ./jstrings/Makefile sed 's/^X//' >./jstrings/Makefile << 'END-of-./jstrings/Makefile' X# New ports collection makefile for: jstrings X# Date created: 29 July 2004 X# Whom: ryo X# X# $FreeBSD$ X# X XPORTNAME= jstrings XPORTVERSION= 0.6 XCATEGORIES= japanese XMASTER_SITES= http://www.alles.or.jp/~hasepyon/jstrings/ \ X http://devel.aquahill.net/ports/jstrings/ XDISTNAME= ${PORTNAME}-${PORTVERSION} XEXTRACT_SUFX= .lzh X XMAINTAINER= ryo@aquahill.net XCOMMENT= Japanese enhancement of strings command X XEXTRACT_DEPENDS=lha:${PORTSDIR}/archivers/lha \ X nkf:${PORTSDIR}/japanese/nkf X XMAN1= jstrings.1 XMANLANG= ja XALL_TARGET= jstrings X XEXTRACT_CMD= lha XEXTRACT_BEFORE_ARGS= xfqw=${WRKDIR} X#EXTRACT_AFTER_ARGS= # empty X Xpost-extract: X @${ECHO_MSG} "===> Converting Kanji code and deleting CR for ${DISTNAME}" X @(cd ${WRKSRC}; \ X for i in *.c *.h *.txt makefile.* ; \ X do \ X nkf -de $$i > $$i.tmp && ${MV} $$i.tmp $$i; \ X done) X X @${ECHO_MSG} "===> Copying custom Makefile for ${DISTNAME}" X @(${CP} ${WRKSRC}/makefile.gcc ${WRKSRC}/Makefile) X Xpost-install: X ${INSTALL_MAN} ${FILESDIR}/jstrings.1 ${PREFIX}/man/${MANLANG}/man1 X X.include <bsd.port.mk> END-of-./jstrings/Makefile echo x - ./jstrings/distinfo sed 's/^X//' >./jstrings/distinfo << 'END-of-./jstrings/distinfo' XMD5 (jstrings-0.6.lzh) = e283cdc91b9afff7fa91eb49fff41177 XSIZE (jstrings-0.6.lzh) = 84653 END-of-./jstrings/distinfo echo x - ./jstrings/pkg-descr sed 's/^X//' >./jstrings/pkg-descr << 'END-of-./jstrings/pkg-descr' XJapanese enhancement of strings(1) command. You can extract X2byte-charactors from binary files in various types of japanese code. X XWWW: http://www.alles.or.jp/~hasepyon/ X X- ryo Xryo@aquahill.net END-of-./jstrings/pkg-descr echo x - ./jstrings/pkg-plist sed 's/^X//' >./jstrings/pkg-plist << 'END-of-./jstrings/pkg-plist' Xbin/jstrings END-of-./jstrings/pkg-plist echo c - ./jstrings/files mkdir -p ./jstrings/files > /dev/null 2>&1 echo x - ./jstrings/files/jstrings.1 sed 's/^X//' >./jstrings/files/jstrings.1 << 'END-of-./jstrings/files/jstrings.1' X.TH jstrings "July 29, 2004" "" "" X.RS X名前 Xjstrings - ファイル中の表示可能な文字列(日本語を含む)を表示する。 X.PP X書式 Xjstrings [\fB-i\fP 文字コード] [\fB-n\fP 文字数|-文字数] [\fB-fpcts\fP] [ファイル名] X.PP X説明 Xjstrings は指定されたファイル中に含まれる表示可能な文字列を表示する。 X文字列と認識できる文字コード(符号化方式)はオプションにより指定でき Xる。デフォルトでは4文字以上の長さのものを表示可能な文字列とするが、 X以下で説明するオプションにより変更することができる。 X.RS X.PP Xファイル名が指定されないときは標準入力を対象とする。 X.RE X.PP Xオプション X\fB-i\fP 文字コード Xファイルに含まれるであろう文字列の文字コード(符号化方式)を指定 Xする。現在指定可能な文字コードは以下の通り。 X.RS X.PP XANSI_X3.4-1968 X.SS ASCII X.SS US X.TP X.B XUS-ASCII Xファイルに含まれる ASCII 文字列のみを対象とする。 X.PP XWindows-31J XCP932 XMS932 Xファイルに含まれる CP932 の文字列を対象とする。これは XShift_JIS + いわゆる機種依存文字のことである。 X.PP XShift_JIS XMS_Kanji XShiftJIS X.SS SJIS Xファイルに含まれる Shift_JIS の文字列を対象とする。これには Xいわゆる「機種依存文字」は含まれない。 X.SS EBCDIC Xファイルに含まれる EBCDIC の文字列を対象とする。 X.RE X.PP XISO-2022-JP XISO2022JP X.SS JIS Xファイルに含まれる \fBISO-2022-JP\fP(を拡張したもの) の文字列を対 X象とする。詳細は後述の ISO-2022-JP の項を参照のこと。 X.RE X.PP XUTF-16 XUTF16 Xファイルに含まれる UTF-16 の文字列を対象とする。バイトオーダ Xマーク(BOM)を検出した時には、BOMに従いビッグエンディアンとリ Xトルエンディアンを切り替える。 X.RS X.PP XUTF-16LE XUTF16LE Xファイルに含まれる UTF-16LE の文字列を対象とする。バイトオー Xダマーク(BOM)は読み捨てられる。 X.PP XUTF-16BE XUTF16BE Xファイルに含まれる UTF-16BE の文字列を対象とする。バイトオー Xダマーク(BOM)は読み捨てられる。 X.RE X.PP X\fB-n\fP 文字数 X-文字数 X指定された文字数以上の長さの文字列を表示する。指定は文字数 X単位であるためASCII文字に限らず漢字なども1文字と数えられる。 Xデフォルトは4。 X.RS X.PP X\fB-f\fP Xそれぞれの文字列の前にファイル名を表示する。 X.PP X\fB-p\fP Xそれぞれの文字列の前に文字列が見つかったファイル内での先頭 Xからの位置を表示する。 X.PP X\fB-c\fP Xそれぞれの文字列の前にその文字列のコード名を表示する。 X.PP X\fB-t\fP X(可能であれば)標準出力をテキストモードで使用する。 Xデフォルトはバイナリモードである。 X.PP X\fB-s\fP X文字列の先頭バイトがマルチバイト文字の先行バイトであった場 X合には、それを読み捨て、2バイト目以降から文字列が始まってい Xるものとする(Shift_JISおよびWindows-31Jでのみ有効)。 X.PP X-? Xヘルプメッセージを表示する。 X.RE X.PP XISO-2022-JP X\fB-i\fP オプションに ISO-2022-JP を指定したときには、RFC1468 で規定され Xる ISO-2022-JP を独自に拡張した文字列をファイルから検索する。この X拡張は以下のとおり。 X.RS X.IP 1) 4 XESC 2/4 4/9 というエスケープシーケンスにより JIS X0201 仮名文字 X集合(いわゆる半角カタカナ)へ切り替える。 X.IP 2) 4 XCR LF により ASCII に切り替える。 X.PP Xまた、エスケープシーケンスに続かない、文字集合の不明なバイト列は X\fB-i\fP ISO-2022-JP:SUBCODE という形でその扱いを指定することにより特定 Xの文字集合とみなすことができる。SUBCODE に指定できる値は以下のとお Xり。 X.SS ASCII X文字集合が不明なバイト列を ASCII とみなす。 XX0201-ROMAN X文字集合が不明なバイト列を JIS X0201 ラテン文字集合とみなす。 XX0208-1978 X文字集合が不明なバイト列を JIS X0208-1978 とみなす。 XX0208-1983 XX0208-1990 X文字集合が不明なバイト列を JIS X0208-1990 とみなす。 XX0201-KANA X文字集合が不明なバイト列を JIS X0201 仮名文字集合とみなす。 X.SS ALL X文字集合が不明なバイト列を、上記の文字集合すべてに可能な限り X当てはめる。 X.SS IGNORE X文字集合が不明なバイト列は無視して読み捨てる。 X.RE X.PP X例えば、\fB-i\fP ISO-2022-JP:ASCII と指定したときには、文字集合の判断 Xがつかないバイト列は、ASCII文字列として扱われる。 XSUBCODE を省略した場合には IGNORE が指定されたものとみなす。 X.RS X.PP Xバグ X充分にテストされていないのでバグは多々あると思われる。 X.RS X.PP Xファイル内に含まれる文字列の長さが65535バイトを超えるときにはうま Xく表示できない。これは、vstr.c 内の MAX_BUF_SIZE 定数により制限さ Xれている。 X.PP XEBCDIC を指定したときには \fB-f\fP \fB-p\fP \fB-c\fP で表示される情報は ASCII である Xため、表示が乱れる。 X.PP XUTF-16* で検出可能な文字集合はCP932と同一の範囲内のみである。 X.PP XUTF-16* を指定したときには結果は常に BOM を先頭に付加したUTF-16BE Xで出力される。また、\fB-f\fP でファイル名を表示させた時に、ファイル名に X非ASCII文字が含まれている場合、それは文字化けを引き起こす。 X.PP X\fB-i\fP オプションは同時に複数指定することも可能であるが、その場合、表 X示は複数の文字コードが入り混じったものとなる。 X将来的には UTF-8 も対象とし、表示するために使用する文字コードも指 X定できるようにしたい。 X.RE X.PP X著者 Xはせがわ ようすけ END-of-./jstrings/files/jstrings.1 echo x - ./jstrings/files/patch-aa sed 's/^X//' >./jstrings/files/patch-aa << 'END-of-./jstrings/files/patch-aa' X--- Makefile.orig Thu Jul 29 21:23:33 2004 X+++ Makefile Thu Jul 29 21:25:06 2004 X@@ -6,7 +6,7 @@ X BINDIR=/usr/local/bin X X $(TARGET): jstrings.o vstr.o cp932.o ascii.o dummy.o ebcdic.o utf8.o utf16.o iso2022.o jis.o utilstr.o eucjp.o X- $(CC) $(CFLAGS) -o $@ $^ X+ $(CC) $(CFLAGS) -o $@ jstrings.o vstr.o cp932.o ascii.o dummy.o ebcdic.o utf8.o utf16.o iso2022.o jis.o utilstr.o eucjp.o X X clean : X rm -f *.o $(TARGET) X@@ -38,5 +38,4 @@ X install : $(TARGET) X cp $(TARGET) $(BINDIR)/$(TARGET) X strip $(BINDIR)/$(TARGET) X- echo "Copy jstrings.txt as man page if you need." X END-of-./jstrings/files/patch-aa echo x - ./jstrings/files/patch-ab sed 's/^X//' >./jstrings/files/patch-ab << 'END-of-./jstrings/files/patch-ab' X--- jstrings.c.orig Thu Jul 29 21:27:16 2004 X+++ jstrings.c Thu Jul 29 21:27:27 2004 X@@ -50,7 +50,7 @@ X { NULL, open_utf16, strings_utf16, flush_utf16, close_utf16, 0, NULL }, /* UTF-16 */ X { NULL, open_utf16le, strings_utf16le, flush_utf16le, close_utf16le,0, NULL }, /* UTF-16LE */ X { NULL, open_utf16be, strings_utf16be, flush_utf16be, close_utf16be,0, NULL }, /* UTF-16BE */ X-/* { NULL, open_utf8, strings_utf8, flush_utf8, close_utf8, 0, NULL }, /* UTF-8 */ X+ { NULL, open_utf8, strings_utf8, flush_utf8, close_utf8, 0, NULL }, /* UTF-8 */ X { NULL, open_dummy, strings_dummy, flush_dummy, close_dummy, 0, NULL }, /* UTF-8 */ X { NULL, open_ebcdic,strings_ebcdic, flush_ebcdic, close_ebcdic, 0, NULL }, /* EBCDIC */ X }; X--- cp932.c.orig Thu Aug 5 14:03:35 2004 X+++ cp932.c Thu Aug 5 14:04:07 2004 X@@ -1,6 +1,7 @@ X #include <stdio.h> X #include <stddef.h> X #include <stdlib.h> X+#include <string.h> X #include "jstrings.h" X #include "cp932.h" X X--- eucjp.c.orig Thu Aug 5 14:04:36 2004 X+++ eucjp.c Thu Aug 5 14:04:47 2004 X@@ -1,4 +1,5 @@ X #include <stdlib.h> X+#include <string.h> X #include "eucjp.h" X #include "jstrings.h" X #include "ascii.h" X--- utilstr.c.orig Thu Aug 5 14:05:48 2004 X+++ utilstr.c Thu Aug 5 14:06:15 2004 X@@ -41,7 +41,6 @@ X size_t my_strncpy( char *s, const char *t, size_t n ) X { X size_t r = 0; X- char *s0 = s; X X if( s == NULL || t == NULL || n == 0 )return 0; X n--; END-of-./jstrings/files/patch-ab exit --- jstrings-port.shar ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040805054740.33766.qmail>