summaryrefslogtreecommitdiff
path: root/inputmethod/skkinput/patches
diff options
context:
space:
mode:
authorseb <seb>2002-05-31 13:00:02 +0000
committerseb <seb>2002-05-31 13:00:02 +0000
commit680f2881a2f7a63e4417db37a5f5ac7a68d4b8d9 (patch)
tree43d22d046c033dc729ec370014ba513e6823d0a9 /inputmethod/skkinput/patches
parent636067d77ed9605b76567e7d3a66efe87c7f296c (diff)
downloadpkgsrc-680f2881a2f7a63e4417db37a5f5ac7a68d4b8d9.tar.gz
Reimport of package skkinput from japanese/skkinput into inputmethod/skkinput.
This is part of the japanese category retirement. CATEGORIES adjusted.
Diffstat (limited to 'inputmethod/skkinput/patches')
-rw-r--r--inputmethod/skkinput/patches/patch-aa21
-rw-r--r--inputmethod/skkinput/patches/patch-ab103
-rw-r--r--inputmethod/skkinput/patches/patch-ac75
-rw-r--r--inputmethod/skkinput/patches/patch-ad184
-rw-r--r--inputmethod/skkinput/patches/patch-ae39
5 files changed, 422 insertions, 0 deletions
diff --git a/inputmethod/skkinput/patches/patch-aa b/inputmethod/skkinput/patches/patch-aa
new file mode 100644
index 00000000000..16247697a89
--- /dev/null
+++ b/inputmethod/skkinput/patches/patch-aa
@@ -0,0 +1,21 @@
+$NetBSD: patch-aa,v 1.1.1.1 2002/05/31 13:00:02 seb Exp $
+
+--- Imakefile.orig Tue Mar 3 21:59:39 1998
++++ Imakefile Tue Dec 21 01:29:48 1999
+@@ -81,7 +81,8 @@
+ OBJS = $(COMMONOBJS) $(KINPUTOBJS) $(XIMPOBJS) $(IMOBJS)
+
+ #ifdef SkkServer
+-SKKSERVER_DEFS = -DDEFAULT_SKKSERVER=\"SkkServer\"
++SKKSERVER_DEFS = -DDEFAULT_SKKSERVER=\"SkkServer\" \
++ -DSKK_CONF=\"$(EXECBASE)/etc/skk.conf\"
+ #endif
+
+ #ifdef SkkPort
+@@ -95,5 +96,5 @@
+ DEFINES = $(SKKSERVER_DEFS) $(SKKPORT_DEFS) $(SKK_DEBUGFLAGS) \
+ $(SKKFONT_DEFS) $(SKK_KINPUTDEFS) $(SKK_XIMPDEFS) $(SKK_IMDEFS)
+
+-ComplexProgramTarget(skkinput)
++ComplexProgramTargetNoMan(skkinput)
+ InstallAppDefaults(Skkinput)
diff --git a/inputmethod/skkinput/patches/patch-ab b/inputmethod/skkinput/patches/patch-ab
new file mode 100644
index 00000000000..57ad937f86e
--- /dev/null
+++ b/inputmethod/skkinput/patches/patch-ab
@@ -0,0 +1,103 @@
+$NetBSD: patch-ab,v 1.1.1.1 2002/05/31 13:00:02 seb Exp $
+
+--- skkconfig.c.orig Thu Nov 13 22:42:43 1997
++++ skkconfig.c Thu Nov 9 00:19:40 2000
+@@ -100,6 +100,7 @@
+ * skkinput の動作を決定する変数群。
+ */
+ extern int skkserv_portnum ;
++extern char *skkserv_portstr ;
+ extern char *skkserv_host ;
+ extern char *skkinput_local_jisyo_name ;
+ extern char *skkinput_backup_jisyo_name ;
+@@ -980,6 +981,21 @@
+ return ;
+ }
+
++#ifdef SKK_CONF
++char *
++strsave(const char *str)
++{
++ char *p;
++
++ if ((p = malloc(strlen(str) + 1)) == NULL) {
++ fprintf(stderr, "Fatal: Memory Exhausted.\n");
++ exit(1);
++ }
++ strcpy(p, str);
++ return p;
++}
++#endif
++
+ /*
+ * skkinput の動作記述をする変数を初期化する関数。
+ *------
+@@ -987,30 +1003,54 @@
+ */
+ void initSkkinputDousaketteiVariables( void )
+ {
+- struct servent *servent ;
++#ifdef SKK_CONF /* use skk.conf */
++ FILE *conffp;
++ char line[128];
++ char hostbuf[128];
++ char servbuf[128];
++ char *confhost = NULL;
++ char *confport = NULL;
++
++ if ((conffp = fopen(SKK_CONF, "r")) != NULL) {
++ char *p, *data;
++
++ while (fgets(line, sizeof line, conffp) != NULL) {
++ if ((p = strchr(line, '#')) != NULL)
++ *p = '\0';
++ if ((p = strtok(line, ": \t\n")) == NULL)
++ continue;
++ if ((data = strtok((char *) NULL, " \t\n")) == NULL)
++ continue;
++ if (!strcmp(p, "skkserv_host")) {
++ strcpy(hostbuf, data);
++ confhost = hostbuf;
++ } else if (!strcmp(p, "skkserv_port")) {
++ strcpy(servbuf, data);
++ confport = servbuf;
++ }
++ }
++ }
++#endif
+
+ /* 局所辞書の所在を知らないとしておく。*/
+ skkinput_local_jisyo_name = DEFAULT_SKKLJISYO ;
+ skkinput_backup_jisyo_name = DEFAULT_SKKBJISYO ;
+ skkinput_record_name = DEFAULT_SKKRECORD ;
+ skk_local_jisyo_name = DEFAULT_SKKLOCALJISYO ;
+- /* "/etc/services" からポート番号を得ておく。*/
+- servent = getservbyname( SKKSERV_SERVICE_NAME, SKKSERV_SERVICE_PROTO ) ;
+- if( servent == NULL ){
+- /* /etc/services に設定はなかったので、config.h の中のを使う。*/
+- skkserv_portnum = atoi( DEFAULT_SKKPORT ) ;
+- } else {
+- /* /etc/services に設定があった…。*/
+- skkserv_portnum = htons( servent->s_port ) ;
+-#if defined(DEBUG)
+- fprintf
+- ( stderr, "getservbyname: \"%s\", %d\n",
+- servent->s_name, skkserv_portnum ) ;
++#ifdef SKK_CONF
++ if (confport)
++ skkserv_portstr = strsave(confport);
++ else
+ #endif
+- }
++ skkserv_portstr = SKKSERV_SERVICE_NAME;
+ /* 環境変数 SKKSERV が設定されていれば、それを DEFAULT の skkserv *
+ * host とする。*/
+ if( ( skkserv_host = getenv( "SKKSERVER" ) ) == NULL )
++#ifdef SKK_CONF
++ if (confhost)
++ skkserv_host = strsave(confhost); /* XXX this may leak */
++ else
++#endif
+ skkserv_host = DEFAULT_SKKSERVER ;
+
+ /* デフォルトのキーマップを作成する。*/
diff --git a/inputmethod/skkinput/patches/patch-ac b/inputmethod/skkinput/patches/patch-ac
new file mode 100644
index 00000000000..c490b0b2c94
--- /dev/null
+++ b/inputmethod/skkinput/patches/patch-ac
@@ -0,0 +1,75 @@
+$NetBSD: patch-ac,v 1.1.1.1 2002/05/31 13:00:02 seb Exp $
+
+--- skkldic.c.orig Fri Nov 14 13:04:12 1997
++++ skkldic.c Wed Nov 8 20:01:38 2000
+@@ -27,6 +27,13 @@
+ #include <sys/types.h>
+ #include <X11/Intrinsic.h>
+
++#ifdef CSRG_BASED
++#include <sys/param.h>
++#if defined(BSD) && BSD >= 199306
++#define HAVE_MKSTEMP
++#endif
++#endif
++
+ #include "commondef.h"
+ #include "buffers.h"
+ #include "config.h"
+@@ -863,7 +870,12 @@
+ {
+ FILE *fpSrc, *fpDest ;
+ unsigned long lines ;
++#ifdef HAVE_MKSTEMP
++ char tempfilename[64] ;
++ int tmpfd;
++#else
+ char *tempfilename ;
++#endif
+
+ #ifdef DEBUG_LDIC
+ fprintf( stderr, "Now saving ....\"%s\"\n", skkinput_local_jisyo_path ) ;
+@@ -890,7 +902,15 @@
+ * 存在しない場合はどうするのか? */
+
+ /* 辞書の更新を行う際に利用されるテンポラリファイル。*/
++#ifdef HAVE_MKSTEMP
++ strcpy(tempfilename, "/tmp/skkinputXXXXXXXX");
++ if ((tmpfd = mkstemp(tempfilename)) < 0) {
++ perror("skkinput: cannot create temp file");
++ return;
++ }
++#else
+ tempfilename = tmpnam( NULL ) ;
++#endif
+
+ /* 局所辞書のバックアップを削除する。失敗した場合なんかは知らない。*/
+ unlink( skkinput_jisyo_backup_path ) ;
+@@ -901,12 +921,19 @@
+ skkinput_copyFile
+ ( skkinput_local_jisyo_path, tempfilename ) ;
+ /* 局所辞書のコピーが存在しない。これは不味い状態である。*/
++#ifdef HAVE_MKSTEMP
++ if( ( fpSrc = fdopen( tmpfd, "rb" ) ) == NULL ){
++ close(tmpfd);
++ return;
++ }
++#else
+ if( ( fpSrc = fopen( tempfilename, "rb" ) ) == NULL ){
+ #ifdef DEBUG_LDIC
+ fprintf( stderr, "cannot create backup jisyo...error!\n" ) ;
+ #endif
+ return ;
+ }
++#endif
+ /* 書き込めない…これは無理だ…。*/
+ if( ( fpDest = fopen( skkinput_local_jisyo_path, "wb" ) ) == NULL ){
+ #ifdef DEBUG_LDIC
+@@ -922,6 +949,7 @@
+ /* file coding system を調べ直す。*/
+ skkinput_local_jisyo_coding_system =
+ check_skkinput_jisyo_code( skkinput_local_jisyo_path ) ;
++ unlink( tempfilename ) ;
+ return ;
+ }
+ lines = 0 ;
diff --git a/inputmethod/skkinput/patches/patch-ad b/inputmethod/skkinput/patches/patch-ad
new file mode 100644
index 00000000000..5b7b73e0980
--- /dev/null
+++ b/inputmethod/skkinput/patches/patch-ad
@@ -0,0 +1,184 @@
+$NetBSD: patch-ad,v 1.1.1.1 2002/05/31 13:00:02 seb Exp $
+
+--- skksoc.c.orig Thu Oct 30 13:40:59 1997
++++ skksoc.c Wed Nov 8 21:48:24 2000
+@@ -36,6 +36,11 @@
+
+ #include "commondef.h"
+ #include "buffers.h"
++#include "config.h"
++
++#ifdef PF_INET6
++# define HAVE_GETADDRINFO
++#endif
+
+ /*
+ * プロトタイプ宣言。
+@@ -51,12 +56,15 @@
+ } ;
+
+ extern char *skkserv_host ;
+-extern int skkserv_portnum ;
++extern char *skkserv_portnum ;
++extern char *skkserv_portstr ;
+
+ /* skkserv とお話する際のバッファ。*/
+ static struct MessageBuffer mesbuf ;
++#ifndef HAVE_GETADDRINFO
+ /* SKK server の情報。*/
+ struct sockaddr_in server ;
++#endif
+ /* SKK server の Host の情報。*/
+ static struct hostent *host ;
+ /* skkserv をお話するのに利用する socket */
+@@ -79,13 +87,14 @@
+ static void myCharStringToNormalString
+ ( struct MessageBuffer *buf, struct myChar *string ) ;
+
++#ifndef HAVE_GETADDRINFO
+ /*
+ * ソケットを作成する関数。
+ *------------
+ * server の名前が与えられると、そこに対しての socket を作成しよう
+ * と試みる。
+ */
+-static int makeSocket( char *server_name, int port_num )
++static int makeSocket( char *server_name )
+ {
+ struct protoent *proto;
+ /* Protocol の設定。*/
+@@ -115,22 +124,10 @@
+ #else
+ memcpy( &server.sin_addr, host->h_addr, host->h_length ) ;
+ #endif
+- server.sin_port = htons( port_num ) ;
+-
+- read_skkserv_fp = fdopen( skkserv_soc, "r" ) ;
+- write_skkserv_fp = fdopen( skkserv_soc, "w" ) ;
+
+- /* fdopen に失敗したら… */
+- if( read_skkserv_fp == NULL || write_skkserv_fp == NULL ){
+- if( read_skkserv_fp != NULL )
+- fclose( read_skkserv_fp ) ;
+- if( write_skkserv_fp != NULL )
+- fclose( write_skkserv_fp ) ;
+- read_skkserv_fp = write_skkserv_fp = NULL ;
+- return 1 ;
+- }
+ return 0 ;
+ }
++#endif /* ! HAVE_GETADDRINFO */
+
+ /*
+ * skkserv に message を送信する関数。
+@@ -294,14 +291,72 @@
+ * socket を用意し、skkerv に接続する関数。
+ *----
+ */
+-int skkinput_StartCommunication( char *server_name, int port_num )
++int skkinput_StartCommunication( char *server_name, char *port_str )
+ {
++#ifdef HAVE_GETADDRINFO
++ struct addrinfo aihint, *ai0, *ai;
++ int error;
++ char portnum[32];
++
++ /* backward compatibility */
++ if (skkserv_portnum) {
++ sprintf(portnum, "%d", skkserv_portnum);
++ port_str = portnum;
++ }
++
++#ifdef HAVE_BZERO
++ bzero((char*)&aihint, sizeof aihint);
++#else
++ memset((char*)&aihint, 0, sizeof aihint);
++#endif
++ aihint.ai_family = PF_UNSPEC;
++ aihint.ai_socktype = SOCK_STREAM;
++ aihint.ai_flags = AI_CANONNAME;
++ error = getaddrinfo(server_name, port_str, &aihint, &ai0);
++ if (error) {
++ printf("%s: %s\r\n", gai_strerror(error), server_name);
++ return -1;
++ }
++
++ skkserv_soc = -1;
++ for (ai = ai0; ai; ai = ai->ai_next) {
++ skkserv_soc = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
++ if (skkserv_soc >= 0 &&
++ connect(skkserv_soc, ai->ai_addr, ai->ai_addrlen) == 0)
++ break;
++ close(skkserv_soc);
++ skkserv_soc = -1;
++ }
++ if (skkserv_soc < 0) {
++ perror(server_name);
++ skkserv_connection_ok = False ;
++ return 1;
++ }
++#else
++ struct servent *servent ;
++ int port;
++
++ if ((port = atoi(port_str)) <= 0) {
++ /* "/etc/services" からポート番号を得ておく。*/
++ servent = getservbyname( port_str, SKKSERV_SERVICE_PROTO ) ;
++ if( servent == NULL ){
++ /* /etc/services に設定はなかったので、config.h の中のを使う。*/
++ port = atoi( DEFAULT_SKKPORT ) ;
++ } else {
++ /* /etc/services に設定があった…。*/
++ port = ntohs( servent->s_port ) ;
++#if defined(DEBUG)
++ fprintf( stderr, "getservbyname: \"%s\", %d\n", servent->s_name, port ) ;
++#endif
++ }
++ }
+ /* skkerv と通信するためのソケットを作成致します。*/
+- if( makeSocket( server_name, port_num ) ){
++ if( makeSocket( server_name ) ){
+ fprintf( stderr, "Warning : cannot make a socket." ) ;
+ skkserv_connection_ok = False ;
+ return 1 ;
+ }
++ server.sin_port = htons( port ) ;
+ /* 接続要求。*/
+ if( connect( skkserv_soc,
+ ( struct sockaddr *)&server, sizeof( server ) ) < 0 ){
+@@ -312,6 +367,19 @@
+ skkserv_connection_ok = False ;
+ return 1 ;
+ }
++#endif
++ read_skkserv_fp = fdopen( skkserv_soc, "r" ) ;
++ write_skkserv_fp = fdopen( skkserv_soc, "w" ) ;
++
++ /* fdopen に失敗したら… */
++ if( read_skkserv_fp == NULL || write_skkserv_fp == NULL ){
++ if( read_skkserv_fp != NULL )
++ fclose( read_skkserv_fp ) ;
++ if( write_skkserv_fp != NULL )
++ fclose( write_skkserv_fp ) ;
++ read_skkserv_fp = write_skkserv_fp = NULL ;
++ return 1 ;
++ }
+ skkserv_connection_ok = True ;
+ return 0 ;
+ }
+@@ -357,13 +425,13 @@
+
+ #ifndef MAIKAI_SKKSERV_TO_CONNECT_SURU
+ if( !skkserv_connection_ok ){
+- if( skkinput_StartCommunication( skkserv_host, skkserv_portnum ) )
++ if( skkinput_StartCommunication( skkserv_host, skkserv_portstr ) )
+ return top ;
+ }
+ #else
+ /* skkserv が生きていなければ、メッセージの送りようが無いので終了
+ する。*/
+- if( skkinput_StartCommunication( skkserv_host, skkserv_portnum ) )
++ if( skkinput_StartCommunication( skkserv_host, skkserv_portstr ) )
+ return top ;
+ #endif
+
diff --git a/inputmethod/skkinput/patches/patch-ae b/inputmethod/skkinput/patches/patch-ae
new file mode 100644
index 00000000000..42eddf96858
--- /dev/null
+++ b/inputmethod/skkinput/patches/patch-ae
@@ -0,0 +1,39 @@
+$NetBSD: patch-ae,v 1.1.1.1 2002/05/31 13:00:02 seb Exp $
+
+--- main.c.orig Mon Mar 23 15:05:22 1998
++++ main.c Wed Nov 8 03:07:44 2000
+@@ -110,7 +110,7 @@
+ extern void initHenkanKakuteiHashTable( void ) ;
+ extern void clearHenkanKakuteiHash( void ) ;
+ /* skksoc.c */
+-extern int skkinput_StartCommunication( char *server_name, int port_num ) ;
++extern int skkinput_StartCommunication( char *server_name, char *port_str ) ;
+ extern int skkinput_CloseCommunication( void ) ;
+ /* skkldic.c */
+ extern int set_localjisyo
+@@ -197,6 +197,7 @@
+ /* その他、skkinput が必要とする…skkInputWidget 毎には必要としない情報。*/
+ char *skkserv_host ;
+ int skkserv_portnum ;
++char *skkserv_portstr ;
+ char *skkinput_local_jisyo_name ;
+ char *skkinput_backup_jisyo_name ;
+ char *skk_local_jisyo_name ;
+@@ -375,7 +376,7 @@
+ if( number_of_protocols > 0 ){
+ #ifndef MAIKAI_SKKSERV_TO_CONNECT_SURU
+ /* socket を作成しておく。*/
+- skkinput_StartCommunication( skkserv_host, skkserv_portnum ) ;
++ skkinput_StartCommunication( skkserv_host, skkserv_portstr ) ;
+ #endif
+ /* 局所辞書の情報を入れておく。*/
+ set_localjisyo
+@@ -698,7 +699,7 @@
+ break ;
+ /* skkserv と通信するに利用するポート番号を設定する。*/
+ case OPTION_PORT :
+- skkserv_portnum = atoi( argv[ i ] ) ;
++ skkserv_portstr = argv[ i ];
+ break ;
+ /* 局所辞書の名前を設定する。*/
+ case OPTION_USERDIC :