diff -Naur skipstone-0.7.5/src/Makefile skipstone-0.7.5-1intl/src/Makefile --- skipstone-0.7.5/src/Makefile Fri Aug 17 21:49:51 2001 +++ skipstone-0.7.5-1intl/src/Makefile Mon Oct 8 02:01:33 2001 @@ -2,8 +2,8 @@ include ../config.mk -SOURCES = main.c session.c go.c encoding.c callbacks.c moz_callbacks.c support.c ipc.c bookmarks.c interface.c interface-notebook.c history.c crash.c skipstone_config.c context.c skipstone-plugin.c skipstone-print.c mozilla.cpp SkipStonePrompter.cpp PromptService.cpp -OBJS = main.o go.o session.o callbacks.o encoding.o moz_callbacks.o support.o ipc.o bookmarks.o interface.o interface-notebook.o history.o crash.o skipstone-config.o context.o skipstone-plugin.o skipstone-print.o mozilla.o SkipStonePrompter.o PromptService.o +SOURCES = main.c session.c go.c encoding.c callbacks.c moz_callbacks.c support.c ipc.c bookmarks.c interface.c interface-notebook.c history.c crash.c skipstone_config.c context.c skipstone-plugin.c skipstone-print.c mozilla.cpp SkipStonePrompter.cpp PromptService.cpp iconv-title.cpp +OBJS = main.o go.o session.o callbacks.o encoding.o moz_callbacks.o support.o ipc.o bookmarks.o interface.o interface-notebook.o history.o crash.o skipstone-config.o context.o skipstone-plugin.o skipstone-print.o mozilla.o SkipStonePrompter.o PromptService.o iconv-title.o DOWNLOADOBJS = skipdownload.o PROG = skipstone BINARY = skipstone-bin diff -Naur skipstone-0.7.5/src/iconv-title.cpp skipstone-0.7.5-1intl/src/iconv-title.cpp --- skipstone-0.7.5/src/iconv-title.cpp Thu Jan 1 03:00:00 1970 +++ skipstone-0.7.5-1intl/src/iconv-title.cpp Mon Oct 8 02:01:02 2001 @@ -0,0 +1,34 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +extern "C" { + PRUnichar *gtk_moz_embed_get_title_unichar(GtkMozEmbed *); + char* iconv_gtk_moz_embed_get_title(GtkMozEmbed *embed); +} + +char* iconv_gtk_moz_embed_get_title(GtkMozEmbed *embed) { + PRUnichar *unicode_str; + size_t inbytes=600,outbytes=299; + char enc_buffer[300]; + char *inbuf,*outbuf=enc_buffer; + iconv_t cd; + + outbuf=enc_buffer; + memset(enc_buffer,0,300); + unicode_str = gtk_moz_embed_get_title_unichar( embed ); + inbuf = (char*) unicode_str; + /*Calling iconv */ + cd = iconv_open( nl_langinfo(CODESET) , "UCS-2" ); + if (cd != (iconv_t) -1) { + iconv( cd, &inbuf, &inbytes,&outbuf,&outbytes ); + iconv_close(cd); + } + nsMemory::Free(unicode_str); + return strdup( enc_buffer ); +} diff -Naur skipstone-0.7.5/src/iconv-title.h skipstone-0.7.5-1intl/src/iconv-title.h --- skipstone-0.7.5/src/iconv-title.h Thu Jan 1 03:00:00 1970 +++ skipstone-0.7.5-1intl/src/iconv-title.h Sat Oct 6 16:50:58 2001 @@ -0,0 +1,11 @@ +#ifndef iconv_title_ +#define iconv_title_ +#ifdef __cplusplus +extern "C" { +#endif + gchar *iconv_gtk_moz_embed_get_title( GtkMozEmbed * ); +#ifdef __cplusplus +} +#endif +#define gtk_moz_embed_get_title iconv_gtk_moz_embed_get_title +#endif diff -Naur skipstone-0.7.5/src/mozilla.cpp skipstone-0.7.5-1intl/src/mozilla.cpp --- skipstone-0.7.5/src/mozilla.cpp Fri Aug 17 21:49:51 2001 +++ skipstone-0.7.5-1intl/src/mozilla.cpp Mon Oct 8 02:00:45 2001 @@ -5,6 +5,9 @@ #include #include +#include +#include +#include #include "gtkmozembed.h" #include "gtkmozembed_internal.h" @@ -371,13 +374,32 @@ extern "C" gboolean mozilla_find(GtkMozEmbed *b, const char *exp, PRBool IgnoreCase, PRBool SearchBackWards, PRBool DidFind) { + char *out_buff,*old_ob; + iconv_t cd; + size_t slen,wlen; + slen = strlen(exp); + wlen=slen*2; g_return_val_if_fail(b != NULL, FALSE); nsresult result = 0; nsIWebBrowser *wb = nsnull; gtk_moz_embed_get_nsIWebBrowser(b,&wb); nsCOMPtr finder(do_GetInterface(wb)); nsString searchString; - searchString.AssignWithConversion(exp); + + /* Anton Kovalenko : * + * unicode conversion via iconv*/ + cd = iconv_open("UCS-2",nl_langinfo(CODESET)); + if ( (cd == (iconv_t) -1) || (! (out_buff = (char*) malloc(slen*2+2) )) ) { + searchString.AssignWithConversion(exp); + } else { + old_ob = out_buff; + out_buff[0]='?'; out_buff[1]='\000'; + iconv( cd, (char**)&exp, &slen, (char**)&out_buff,&wlen); + *((PRUnichar*)out_buff) = 0; + iconv_close( cd ); + searchString = (PRUnichar*) old_ob ; + free(old_ob); + } finder->SetSearchString(searchString.get()); finder->SetFindBackwards(SearchBackWards); finder->SetMatchCase(IgnoreCase); diff -Naur skipstone-0.7.5/src/skipstone.h skipstone-0.7.5-1intl/src/skipstone.h --- skipstone-0.7.5/src/skipstone.h Fri Aug 17 21:49:51 2001 +++ skipstone-0.7.5-1intl/src/skipstone.h Sat Oct 6 15:44:27 2001 @@ -220,5 +220,5 @@ void skipstone_plugin_check(SkipStone *skipstone, PLUGIN_POS current_position); void skipstone_write_plugin_config(gpointer key, gpointer value, gpointer user_data); - +#include "iconv-title.h" #endif /* __SKIPSTONE__H */