Skip site navigation (1)Skip section navigation (2)
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>