>> Edit article
이름
제목
패스워드
저는 초보라 왜 그런지 자세히 설명해 드릴 수 없습니다.단지 어디서 무얼 가져다가 어떻게 했는지만 말씀드리겠습니다.환경은 알짜 5.2이고 커널은 2.0.36입니다.glibc-2.0.7-29이고요netscape는 <a href="ftp://ftp.bora.net/pub/Linux/alzza/alzza-5.2/i386/devel/RPMS">netscape4.51</a>의 넷스케이프 4.51-2kr을 다운로드받아 설치했습니다.(물론 4.08도 되는 것을 확인했습니다.그리고 입력기는 hanIM을 <a href="http://www.mizi.co.kr">www.mizi.co.kr</a>에서 폰트와함께 다운로드 받아 설치했습니다.다음은 한글로케일을 가져와야 합니다.기본으로 깔려있는게 locale-ko-2.3이 깔려 있을겁니다.궁금하시면 `rpm -q locale-ko`로 확인할 수 있습니다.여기서 -q는 버전을 그리고 -ql을 깔린 목록을 알수 있는 옵션입니다.저는 이 로케일을 `rpm -e locale-ko`로 지우고저는 <a href=ftp://ftp.bora.net/pub/Linux/alzza/alzza-5.2/i386/devel/wcsmbs/RPMS/>wcsmbs-locale-0.4.11-4</a>를 설치하였습니다.물론 locale-ko도 가능한지는 확인못했습니다. 초기에 안되는 가운데 이것저것 시도하면서 지운것이니 되는 것을 확인한 사람은 아래에 쓰레드를달아 주십시요..다음에는 흔히 브로큰로케일이라고들 말하는 걸 설치해야 합니다.그리고 xwcsmbs를 설치했습니다. 이것들은 박원규님의 xwcsmbs를 설치했습니다. 이것은 <a href=http://chem.skku.ac.kr/~wkpark/linux/xwcsmbs.html>박원규님의 홈페이지의 관련페이지</a>에서 libxwcsmbsv0.4e즉 xwcsmbs-19990514.tar.gz를 다운받아 설치했습니다. 일단 압축을 풀고 소스디렉토리에 가서 make를 하시면 3가지 파일이 생성되는 데 그중에libBrokenLocale.so를 /lib/에 복사하고 ln -s /lib/libBrokenLocale.so /lib/libBrokenLocale.so.1로 링크시켜둡니다.그리고 libxwcsmbs.so.2라는 파일은 /usr/lib/netscape/에 복사합니다.아래의 것과 박원규님의 것과 겹치는 기능을 가졌을 수도 있지만 저는이것저것 해보다가 한글사용이 되는 상황에서의 조합만을 이야기하는 것이니 양해 바랍니다.mozillafix는 이글의 마지막에 있습니다. 소스가 포함되어서 글이 산만해질까봐 맨 아래로 내렸습니다.mozillafix까지 준비하면libBrokenLocale.so.1 => /lib/libmozillaix.so => /usr/lib/netscape/libxwcsmbs.so.2 => /usr/lib/netscape/그리고 넷스케이프에 설치되어 있던 /usr/lib/netscape/liblocale.so가 준비 되었죠이제 실행파일을 손보아야 합니다. 별다른 것은 없고모질라 실행시 위의 파일들을 preload시키기만 하면 됩니다.제 실행파일은 다음과 같습니다.---------cut here-----------------------------#!/bin/sh LD_PRELOAD=/lib/libBrokenLocale.so.1:/usr/lib/netscape/liblocale.so:/usr/lib/netscape/libxwcsmbs.so.2:/usr/lib/netscape/libmozillafix.so export LD_PRELOADrk---------------------------------------------------------그리고 mozillafix를 컴파일 해야 합니다. 소j스는 적수님이 뉴스그룹에 올린글에 포함되어 있지만 여기에 다시올립니다. 아래 부분을 잘라다가 wcstombs.c 파일로 만들고 gcc -O2 -fPIC -shared -Wl,-soname,libmozillafix.so.0 -o libmozillafix.so wcstombs.c -lc로 컴파일하세요 그리고 역시 /usr/lib/netscape/에 복사해 두세요그러면 libBrokenLocale.so.1 => /lib/libmozillaix.so => /usr/lib/netscape/libxwcsmbs.so.2 => /usr/lib/netscape/그리고 넷스케이프에 설치되어 있던 /usr/lib/netscape/liblocale.so가 준비 되었죠다음은 -------------cut here--------------------------------/* Copyright (C) 1999 Penguin Kun. This program is based on libwcsmbs-0.0.5/wcstombs.c and derived from http://www.yasuda.comm.waseda.ac.jp/~nagahama/freebsd.html (which is written in Japanese). Compile: gcc -O2 -fPIC -shared -Wl,-soname,libmozillafix.so.0 -o libmozillafix.so wcstombs.c -lc Usage: env LD_PRELOAD=./libmozillafix.so netscape *//* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include <stdlib.h>#include <wchar.h>/* Convert the `wchar_t' string in PWCS to a multibyte character string in S, writing no more than N characters. Return the number of bytes written, or (size_t) -1 if an invalid `wchar_t' was found. Attention: this function should NEVER be intentionally used. The interface is completely stupid. The state is shared between all conversion functions. You should use instead the restartable version `wcsrtombs'. */size_twcstombs (char *s, const wchar_t *pwcs, size_t n){ /* * The document file "libc.info-18" says at line 1109, * * "- Function: size_t mbstowcs (wchar_t *WSTRING, const char *STRING, * size_t SIZE) * ....... * The conversion of characters from STRING begins in the initial * shift state." * * So, I think it must be given an initialized mbstate_t * "initial_shift_state". */ mbstate_t initial_shift_state = {0, (wint_t)0}; /* * a temporary kluge for Netscape's (Motif's) BUG */ if (pwcs[0] & 0xffff0000) { int len; if (s != NULL) { strncpy(s, (char *)pwcs, n); } len = strlen((char *)pwcs); return (len < n) ? len : n; } /* Return how many we wrote (or maybe an error). */ return __wcsrtombs (s, &pwcs, n, &initial_shift_state);}-----> cut here <----------------------------------------------------------
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved