diff --git a/.gitignore b/.gitignore index e69de29..1b66cd2 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/sdcv-0.4.2.tar.bz2 diff --git a/sdcv-allignment.patch b/sdcv-allignment.patch new file mode 100644 index 0000000..264cffc --- /dev/null +++ b/sdcv-allignment.patch @@ -0,0 +1,27 @@ +Fix unalligned access to buffer. + +On several architectures (arm, armel, sparc and ia64), unalligned access to +integers is not allowed. Buffer in this function is not alligned at all and +attempt to read integer from it causes crash of application on such +architectures. + +Reported upstream at: +https://sourceforge.net/tracker/index.php?func=detail&aid=2149388&group_id=122858&atid=694730 +--- a/src/lib/lib.cpp ++++ b/src/lib/lib.cpp +@@ -496,9 +496,13 @@ + entries[i].keystr=p; + len=strlen(p); + p+=len+1; +- entries[i].off=g_ntohl(*reinterpret_cast(p)); ++ /* ++ * Can not use typecasting here, because *data does not have ++ * to be alligned and unalligned access fails on some architectures. ++ */ ++ entries[i].off=((unsigned char)p[0] << 24) | ((unsigned char)p[1] << 16) | ((unsigned char)p[2] << 8) | (unsigned char)p[3]; + p+=sizeof(guint32); +- entries[i].size=g_ntohl(*reinterpret_cast(p)); ++ entries[i].size=((unsigned char)p[0] << 24) | ((unsigned char)p[1] << 16) | ((unsigned char)p[2] << 8) | (unsigned char)p[3]; + p+=sizeof(guint32); + } + } diff --git a/sdcv-c++.patch b/sdcv-c++.patch new file mode 100644 index 0000000..5d8c163 --- /dev/null +++ b/sdcv-c++.patch @@ -0,0 +1,44 @@ +Fixes compilation with recent GCC which is more strict about C++. +http://sourceforge.net/tracker/index.php?func=detail&aid=2125955&group_id=122858&atid=694730 +--- a/src/readline.cpp ++++ b/src/readline.cpp +@@ -23,6 +23,7 @@ + #endif + + #include ++#include + #ifdef WITH_READLINE + # include + # include +--- a/src/libwrapper.cpp ++++ b/src/libwrapper.cpp +@@ -24,6 +24,7 @@ + + #include + #include ++#include + + #include "utils.hpp" + +--- a/src/utils.cpp ++++ b/src/utils.cpp +@@ -22,6 +22,8 @@ + # include "config.h" + #endif + ++#include ++#include + #include + #include + +--- a/src/lib/lib.cpp ++++ b/src/lib/lib.cpp +@@ -513,7 +513,7 @@ + { + fseek(idxfile, wordoffset[page_idx], SEEK_SET); + guint32 page_size=wordoffset[page_idx+1]-wordoffset[page_idx]; +- fread(wordentry_buf, std::min(sizeof(wordentry_buf), page_size), 1, idxfile); //TODO: check returned values, deal with word entry that strlen>255. ++ fread(wordentry_buf, std::min(sizeof(wordentry_buf), (size_t)page_size), 1, idxfile); //TODO: check returned values, deal with word entry that strlen>255. + return wordentry_buf; + } + diff --git a/sdcv-cs.po.patch b/sdcv-cs.po.patch new file mode 100644 index 0000000..dde952f --- /dev/null +++ b/sdcv-cs.po.patch @@ -0,0 +1,144 @@ +Add Czech translation. +http://sourceforge.net/tracker/index.php?func=detail&aid=2125958&group_id=122858&atid=694730 +--- a/po/LINGUAS ++++ b/po/LINGUAS +@@ -1,2 +1,2 @@ + # Set of available languages. +-sk zh_CN ru uk zh_TW ++cs sk zh_CN ru uk zh_TW +--- /dev/null ++++ b/po/cs.po +@@ -0,0 +1,133 @@ ++# Czech translations for sdcv package. ++# Copyright (C) 2008 Free Software Foundation, Inc. ++# This file is distributed under the same license as the sdcv package. ++# Michal Čihař , 2008. ++msgid "" ++msgstr "" ++"Project-Id-Version: sdcv 0.4.2\n" ++"Report-Msgid-Bugs-To: dushistov@mail.ru\n" ++"POT-Creation-Date: 2008-09-24 10:54+0200\n" ++"PO-Revision-Date: 2008-09-24 10:42+0200\n" ++"Last-Translator: Michal Čihař \n" ++"Language-Team: Czech \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" ++ ++#: src/sdcv.cpp:127 ++#, c-format ++msgid "" ++"Unknown option.\n" ++"Try '%s --help' for more information.\n" ++msgstr "" ++"Neznámý parametr.\n" ++"Zkuste '%s --help' pro nápovědu.\n" ++ ++#: src/sdcv.cpp:134 ++#, c-format ++msgid "Usage: %s [OPTIONS] words\n" ++msgstr "Použití: %s [PARAMETRY] slova\n" ++ ++#: src/sdcv.cpp:135 ++#, c-format ++msgid "-h, --help display this help and exit\n" ++msgstr "-h, --help zobrazí tuto nápovědu a skončí\n" ++ ++#: src/sdcv.cpp:136 ++#, c-format ++msgid "-v, --version display version information and exit\n" ++msgstr "-v, --version zobrazí informace o verzi a skončí\n" ++ ++#: src/sdcv.cpp:137 ++#, c-format ++msgid "" ++"-l, --list-dicts display list of available dictionaries and exit\n" ++msgstr "-l, --list-dicts zobrazí seznam dostupných slovníků a skončí\n" ++ ++#: src/sdcv.cpp:138 ++#, c-format ++msgid "" ++"-u, --use-dict bookname for search use only dictionary with this bookname\n" ++msgstr "-u, --use-dict jméno vyhledávat jen v zadaném slovníku\n" ++ ++#: src/sdcv.cpp:139 ++#, c-format ++msgid "-n, --non-interactive for use in scripts\n" ++msgstr "-n, --non-interactive pro použití ve skriptech\n" ++ ++#: src/sdcv.cpp:140 ++#, c-format ++msgid "--utf8-output output must be in utf8\n" ++msgstr "--utf8-output výstup musí být v utf8\n" ++ ++#: src/sdcv.cpp:141 ++#, c-format ++msgid "--utf8-input input of sdcv in utf8\n" ++msgstr "--utf8-input vstup musí být v utf8\n" ++ ++#: src/sdcv.cpp:142 ++#, c-format ++msgid "" ++"--data-dir path/to/dir use this directory as path to stardict data " ++"directory\n" ++msgstr "" ++"--data-dir cesta/někam použít tento adresář jako cestu ke slovníkům " ++"stardict\n" ++ ++#: src/sdcv.cpp:148 ++#, c-format ++msgid "Console version of Stardict, version %s\n" ++msgstr "Konzolová verze Stardictu, verze %s\n" ++ ++#: src/sdcv.cpp:169 ++#, c-format ++msgid "Dictionary's name Word count\n" ++msgstr "Jméno slovníku Počet slov\n" ++ ++#: src/sdcv.cpp:191 ++#, c-format ++msgid "g_mkdir failed: %s\n" ++msgstr "g_mkdir selhalo: %s\n" ++ ++#: src/sdcv.cpp:207 ++msgid "Enter word or phrase: " ++msgstr "Zadejte slovo nebo frázi: " ++ ++#: src/sdcv.cpp:215 ++#, c-format ++msgid "There are no words/phrases to translate.\n" ++msgstr "Nebyla zadáno nic k přeložení.\n" ++ ++#: src/libwrapper.cpp:246 ++msgid "popen failed" ++msgstr "popen selhalo" ++ ++#: src/libwrapper.cpp:283 ++#, c-format ++msgid "Can not convert %s to utf8.\n" ++msgstr "Nepodařilo se převést %s do utf8.\n" ++ ++#: src/libwrapper.cpp:340 src/libwrapper.cpp:372 ++#, c-format ++msgid "Found %d items, similar to %s.\n" ++msgstr "Nalezeno %d záznamů podobných %s.\n" ++ ++#: src/libwrapper.cpp:353 ++#, c-format ++msgid "Your choice[-1 to abort]: " ++msgstr "Vaše volba [-1 pro ukončení]: " ++ ++#: src/libwrapper.cpp:367 ++#, c-format ++msgid "" ++"Invalid choice.\n" ++"It must be from 0 to %d or -1.\n" ++msgstr "" ++"Chybná volba.\n" ++"Musí být mezi 0 a %d nebo -1.\n" ++ ++#: src/libwrapper.cpp:383 ++#, c-format ++msgid "Nothing similar to %s, sorry :(\n" ++msgstr "Nic podobného %s nenalezeno, promiň :(\n" diff --git a/sdcv-fix-tests.patch b/sdcv-fix-tests.patch new file mode 100644 index 0000000..510ed6e --- /dev/null +++ b/sdcv-fix-tests.patch @@ -0,0 +1,52 @@ +Fixes tests so that they can be executed using dash as /bin/sh. +http://sourceforge.net/tracker/index.php?func=detail&aid=2125959&group_id=122858&atid=694730 +--- a/tests/t_datadir ++++ b/tests/t_datadir +@@ -2,11 +2,11 @@ + + unset SDCV_PAGER + have=`../src/sdcv --data-dir ./ -l | wc -l` +-let have=have-1 ++have=$(($have-1)) + ndicts=`find "${HOME}"/.stardict/dic -name "*.ifo" -print | wc -l` +-let ndicts=ndicts+1 ++ndicts=$(($ndicts+1)) + if [ $have -ne $ndicts ]; then +- let ndicts=ndicts-1 ++ ndicts=$(($ndicts-1)) + echo "test failed: sdcv says: we have: $have, but really we have: $ndicts" >&2 + exit 1 + fi +--- a/tests/t_list ++++ b/tests/t_list +@@ -1,10 +1,10 @@ + #!/bin/sh + + ndicts=`../src/sdcv -l | wc -l` +-let ndicts=ndicts-1 ++ndicts=$(($ndicts-1)) + ncom=`find /usr/share/stardict/dic -name "*.ifo" | wc -l` + nspe=`find "${HOME}"/.stardict/dic -name "*.ifo" | wc -l` +-let nmy=ncom+nspe ++nmy=$(($ncom+$nspe)) + + if [ $nmy -ne $ndicts ]; then + echo "should be: $nmy, we have: $ndicts" >&2 +--- a/tests/t_utf8input ++++ b/tests/t_utf8input +@@ -9,13 +9,13 @@ + " + j=0 + for i in `../src/sdcv --utf8-input -n человек 2>&1`; do +- let j=j+1 ++ j=$(($j+1)) + if [ $j -ne 1 ]; then + break; + fi + done + +-if [ $j -eq 1 ]; then ++if [ $j -ne 1 ]; then + echo "empty results of search: test failed" >&2 + exit 1 + fi diff --git a/sdcv-format.patch b/sdcv-format.patch new file mode 100644 index 0000000..c2b7d0e --- /dev/null +++ b/sdcv-format.patch @@ -0,0 +1,20 @@ +Fixes displaying of 'g' (gtk markup) entries. +http://sourceforge.net/tracker/index.php?func=detail&aid=2125962&group_id=122858&atid=694730 +--- a/src/libwrapper.cpp ++++ b/src/libwrapper.cpp +@@ -118,7 +118,6 @@ + switch (*p++) { + case 'm': + case 'l': //need more work... +- case 'g': + sec_size = strlen(p); + if (sec_size) { + res+="\n"; +@@ -128,6 +127,7 @@ + } + sec_size++; + break; ++ case 'g': + case 'x': + sec_size = strlen(p); + if (sec_size) { diff --git a/sdcv-gettext.patch b/sdcv-gettext.patch new file mode 100644 index 0000000..de68c80 --- /dev/null +++ b/sdcv-gettext.patch @@ -0,0 +1,14 @@ +Subject: Update gettext version to use newer m4 macros +From: Michal Čihař + +--- a/configure.ac ++++ b/configure.ac +@@ -22,7 +22,7 @@ + dnl Gettext stuff. + dnl ================================================================ + AM_GNU_GETTEXT([external]) +-AM_GNU_GETTEXT_VERSION(0.14.1) ++AM_GNU_GETTEXT_VERSION(0.17) + GETTEXT_PACKAGE=sdcv + AC_SUBST(GETTEXT_PACKAGE) + AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package]) diff --git a/sdcv-locales.patch b/sdcv-locales.patch new file mode 100644 index 0000000..4dc77a4 --- /dev/null +++ b/sdcv-locales.patch @@ -0,0 +1,335 @@ +Fixes typo in program (choise -> choice). +http://sourceforge.net/tracker/index.php?func=detail&aid=2125953&group_id=122858&atid=694730 +--- a/po/ru.po ++++ b/po/ru.po +@@ -8,7 +8,7 @@ + msgstr "" + "Project-Id-Version: sdcv 0.3\n" + "Report-Msgid-Bugs-To: dushistov@mail.ru\n" +-"POT-Creation-Date: 2006-04-24 15:18+0400\n" ++"POT-Creation-Date: 2008-09-24 10:54+0200\n" + "PO-Revision-Date: 2006-04-24 15:20+0300\n" + "Last-Translator: Evgeniy Dushistov \n" + "Language-Team: Russian \n" +@@ -105,35 +105,35 @@ + msgid "There are no words/phrases to translate.\n" + msgstr " / .\n" + +-#: src/libwrapper.cpp:245 ++#: src/libwrapper.cpp:246 + msgid "popen failed" + msgstr " popen " + +-#: src/libwrapper.cpp:282 ++#: src/libwrapper.cpp:283 + #, c-format + msgid "Can not convert %s to utf8.\n" + msgstr " %s utf8.\n" + +-#: src/libwrapper.cpp:339 src/libwrapper.cpp:371 ++#: src/libwrapper.cpp:340 src/libwrapper.cpp:372 + #, c-format + msgid "Found %d items, similar to %s.\n" + msgstr " %d , %s.\n" + +-#: src/libwrapper.cpp:352 ++#: src/libwrapper.cpp:353 + #, c-format + msgid "Your choice[-1 to abort]: " + msgstr " [-1 - ]:" + +-#: src/libwrapper.cpp:366 ++#: src/libwrapper.cpp:367 + #, c-format + msgid "" +-"Invalid choise.\n" ++"Invalid choice.\n" + "It must be from 0 to %d or -1.\n" + msgstr "" + " .\n" + " 0 %d -1.\n" + +-#: src/libwrapper.cpp:382 ++#: src/libwrapper.cpp:383 + #, c-format + msgid "Nothing similar to %s, sorry :(\n" + msgstr " %s, :(\n" +--- a/po/sdcv.pot ++++ b/po/sdcv.pot +@@ -8,7 +8,7 @@ + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: dushistov@mail.ru\n" +-"POT-Creation-Date: 2006-04-24 15:18+0400\n" ++"POT-Creation-Date: 2008-09-24 10:54+0200\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -96,33 +96,33 @@ + msgid "There are no words/phrases to translate.\n" + msgstr "" + +-#: src/libwrapper.cpp:245 ++#: src/libwrapper.cpp:246 + msgid "popen failed" + msgstr "" + +-#: src/libwrapper.cpp:282 ++#: src/libwrapper.cpp:283 + #, c-format + msgid "Can not convert %s to utf8.\n" + msgstr "" + +-#: src/libwrapper.cpp:339 src/libwrapper.cpp:371 ++#: src/libwrapper.cpp:340 src/libwrapper.cpp:372 + #, c-format + msgid "Found %d items, similar to %s.\n" + msgstr "" + +-#: src/libwrapper.cpp:352 ++#: src/libwrapper.cpp:353 + #, c-format + msgid "Your choice[-1 to abort]: " + msgstr "" + +-#: src/libwrapper.cpp:366 ++#: src/libwrapper.cpp:367 + #, c-format + msgid "" +-"Invalid choise.\n" ++"Invalid choice.\n" + "It must be from 0 to %d or -1.\n" + msgstr "" + +-#: src/libwrapper.cpp:382 ++#: src/libwrapper.cpp:383 + #, c-format + msgid "Nothing similar to %s, sorry :(\n" + msgstr "" +--- a/po/sk.po ++++ b/po/sk.po +@@ -6,7 +6,7 @@ + msgstr "" + "Project-Id-Version: sdcv 0.3.2\n" + "Report-Msgid-Bugs-To: dushistov@mail.ru\n" +-"POT-Creation-Date: 2006-04-24 15:18+0400\n" ++"POT-Creation-Date: 2008-09-24 10:54+0200\n" + "PO-Revision-Date: 2005-01-04 20:19+0100\n" + "Last-Translator: Zdenko Podobný \n" + "Language-Team: Slovak <>\n" +@@ -102,35 +102,35 @@ + msgid "There are no words/phrases to translate.\n" + msgstr "Nie je čo preložiť.\n" + +-#: src/libwrapper.cpp:245 ++#: src/libwrapper.cpp:246 + msgid "popen failed" + msgstr "" + +-#: src/libwrapper.cpp:282 ++#: src/libwrapper.cpp:283 + #, c-format + msgid "Can not convert %s to utf8.\n" + msgstr "nie je možné konvertovať %s na utf8.\n" + +-#: src/libwrapper.cpp:339 src/libwrapper.cpp:371 ++#: src/libwrapper.cpp:340 src/libwrapper.cpp:372 + #, c-format + msgid "Found %d items, similar to %s.\n" + msgstr "Nájdené %d položiek, podobných %s,\n" + +-#: src/libwrapper.cpp:352 ++#: src/libwrapper.cpp:353 + #, fuzzy, c-format + msgid "Your choice[-1 to abort]: " + msgstr "Vaša voľba: " + +-#: src/libwrapper.cpp:366 ++#: src/libwrapper.cpp:367 + #, fuzzy, c-format + msgid "" +-"Invalid choise.\n" ++"Invalid choice.\n" + "It must be from 0 to %d or -1.\n" + msgstr "" + "Neplatná voľba.\n" + "Musí byť od 0 po %d.\n" + +-#: src/libwrapper.cpp:382 ++#: src/libwrapper.cpp:383 + #, c-format + msgid "Nothing similar to %s, sorry :(\n" + msgstr "Ľutujem, nič sa nepodobá na %s :(\n" +--- a/po/uk.po ++++ b/po/uk.po +@@ -8,7 +8,7 @@ + msgstr "" + "Project-Id-Version: sdcv 0.3\n" + "Report-Msgid-Bugs-To: dushistov@mail.ru\n" +-"POT-Creation-Date: 2006-04-24 15:18+0400\n" ++"POT-Creation-Date: 2008-09-24 10:54+0200\n" + "PO-Revision-Date: 2004-12-14 17:54+0300\n" + "Last-Translator: \n" + "Language-Team: Ukrainian \n" +@@ -105,35 +105,35 @@ + msgid "There are no words/phrases to translate.\n" + msgstr "Не задано слова/фрази для перекладу.\n" + +-#: src/libwrapper.cpp:245 ++#: src/libwrapper.cpp:246 + msgid "popen failed" + msgstr "" + +-#: src/libwrapper.cpp:282 ++#: src/libwrapper.cpp:283 + #, c-format + msgid "Can not convert %s to utf8.\n" + msgstr "Не можу перетворити %s у utf8.\n" + +-#: src/libwrapper.cpp:339 src/libwrapper.cpp:371 ++#: src/libwrapper.cpp:340 src/libwrapper.cpp:372 + #, c-format + msgid "Found %d items, similar to %s.\n" + msgstr "Знайдено %d слів, схожих на %s.\n" + +-#: src/libwrapper.cpp:352 ++#: src/libwrapper.cpp:353 + #, fuzzy, c-format + msgid "Your choice[-1 to abort]: " + msgstr "Ваш вибір: " + +-#: src/libwrapper.cpp:366 ++#: src/libwrapper.cpp:367 + #, fuzzy, c-format + msgid "" +-"Invalid choise.\n" ++"Invalid choice.\n" + "It must be from 0 to %d or -1.\n" + msgstr "" + "Неправильний вибір.\n" + "Повинно бути від 0 до %d.\n" + +-#: src/libwrapper.cpp:382 ++#: src/libwrapper.cpp:383 + #, c-format + msgid "Nothing similar to %s, sorry :(\n" + msgstr "Нічого схожого на %s, даруйте :(\n" +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -6,7 +6,7 @@ + msgstr "" + "Project-Id-Version: sdcv 0.3\n" + "Report-Msgid-Bugs-To: dushistov@mail.ru\n" +-"POT-Creation-Date: 2006-04-24 15:18+0400\n" ++"POT-Creation-Date: 2008-09-24 10:54+0200\n" + "PO-Revision-Date: 2005-1-17 00:58+0800\n" + "Last-Translator: Cai Qian \n" + "Language-Team: Simplified Chinese\n" +@@ -96,35 +96,35 @@ + msgid "There are no words/phrases to translate.\n" + msgstr "没有供翻译的单词或短语。\n" + +-#: src/libwrapper.cpp:245 ++#: src/libwrapper.cpp:246 + msgid "popen failed" + msgstr "" + +-#: src/libwrapper.cpp:282 ++#: src/libwrapper.cpp:283 + #, c-format + msgid "Can not convert %s to utf8.\n" + msgstr "无法将 %s 转换为 UTF-8。\n" + +-#: src/libwrapper.cpp:339 src/libwrapper.cpp:371 ++#: src/libwrapper.cpp:340 src/libwrapper.cpp:372 + #, c-format + msgid "Found %d items, similar to %s.\n" + msgstr "发现 %d 条记录和 %s 相似。\n" + +-#: src/libwrapper.cpp:352 ++#: src/libwrapper.cpp:353 + #, fuzzy, c-format + msgid "Your choice[-1 to abort]: " + msgstr "您的选择为:" + +-#: src/libwrapper.cpp:366 ++#: src/libwrapper.cpp:367 + #, fuzzy, c-format + msgid "" +-"Invalid choise.\n" ++"Invalid choice.\n" + "It must be from 0 to %d or -1.\n" + msgstr "" + "无效的选择。\n" + "必须是 0 到 %d。\n" + +-#: src/libwrapper.cpp:382 ++#: src/libwrapper.cpp:383 + #, c-format + msgid "Nothing similar to %s, sorry :(\n" + msgstr "对不起,没有发现和 %s 相似的 :(\n" +--- a/po/zh_TW.po ++++ b/po/zh_TW.po +@@ -7,7 +7,7 @@ + msgstr "" + "Project-Id-Version: sdcv 0.4\n" + "Report-Msgid-Bugs-To: dushistov@mail.ru\n" +-"POT-Creation-Date: 2006-04-24 15:18+0400\n" ++"POT-Creation-Date: 2008-09-24 10:54+0200\n" + "PO-Revision-Date: 2005-10-31 17:14+0800\n" + "Last-Translator: Wei-Lun Chao \n" + "Language-Team: Chinese (traditional) \n" +@@ -98,35 +98,35 @@ + msgid "There are no words/phrases to translate.\n" + msgstr "沒有可供翻譯的單字或片語。\n" + +-#: src/libwrapper.cpp:245 ++#: src/libwrapper.cpp:246 + msgid "popen failed" + msgstr "" + +-#: src/libwrapper.cpp:282 ++#: src/libwrapper.cpp:283 + #, c-format + msgid "Can not convert %s to utf8.\n" + msgstr "無法將 %s 轉換為 UTF-8。\n" + +-#: src/libwrapper.cpp:339 src/libwrapper.cpp:371 ++#: src/libwrapper.cpp:340 src/libwrapper.cpp:372 + #, c-format + msgid "Found %d items, similar to %s.\n" + msgstr "找到 %d 項紀錄和 %s 相似。\n" + +-#: src/libwrapper.cpp:352 ++#: src/libwrapper.cpp:353 + #, fuzzy, c-format + msgid "Your choice[-1 to abort]: " + msgstr "您的選擇為:" + +-#: src/libwrapper.cpp:366 ++#: src/libwrapper.cpp:367 + #, fuzzy, c-format + msgid "" +-"Invalid choise.\n" ++"Invalid choice.\n" + "It must be from 0 to %d or -1.\n" + msgstr "" + "無效的選擇。\n" + "必須是從 0 到 %d。\n" + +-#: src/libwrapper.cpp:382 ++#: src/libwrapper.cpp:383 + #, c-format + msgid "Nothing similar to %s, sorry :(\n" + msgstr "抱歉,沒有和 %s 相似者 :(\n" +--- a/src/libwrapper.cpp ++++ b/src/libwrapper.cpp +@@ -364,7 +364,7 @@ + } else if (choise==-1) + break; + else +- printf(_("Invalid choise.\nIt must be from 0 to %d or -1.\n"), ++ printf(_("Invalid choice.\nIt must be from 0 to %d or -1.\n"), + res_list.size()-1); + } + } else { diff --git a/sdcv-manpage.patch b/sdcv-manpage.patch new file mode 100644 index 0000000..77a6c00 --- /dev/null +++ b/sdcv-manpage.patch @@ -0,0 +1,142 @@ +Fix man page to be correct. +http://sourceforge.net/tracker/index.php?func=detail&aid=2125983&group_id=122858&atid=694730 +--- a/doc/uk/sdcv.1 ++++ b/doc/uk/sdcv.1 +@@ -1,14 +1,14 @@ +-..TH SDCV 1 "2004-12-06" "sdcv-0.4" +-..SH NAME ++.TH SDCV 1 "2004-12-06" "sdcv-0.4" ++.SH NAME + sdcv \- консольна версія Зоряного словника [Stardict] +-..SH SYNOPSIS +-..B sdcv ++.SH SYNOPSIS ++.B sdcv + [ +-..BI options ++.BI options + ] + [list of words] +-..SH DESCRIPTION +-..I sdcv ++.SH DESCRIPTION ++.I sdcv + sdcv проста, міжплатформена текстова утиліта для роботи із + словниками у форматі Зоряного словника [StarDict]. + Слово зі "списку слів", може бути рядком з початковим слешем '/' +@@ -19,37 +19,37 @@ + У діалоговому режимі, якщо sdcv був скомпільований з підтримкою + бібліотеки readline, Ви можете використовувати клавіші ДОГОРИ + та ВНИЗ для роботи з хронологією. +-..SH OPTIONS +-..TP 8 +-..B "\-h \-\-help" ++.SH OPTIONS ++.TP 8 ++.B "\-h \-\-help" + відображає повідомлення довідки та виходить +-..TP 8 +-..B "\-v \-\-verbose" ++.TP 8 ++.B "\-v \-\-verbose" + відображає версію та виходить +-..TP 8 +-..B "\-l \-\-list\-dicts" ++.TP 8 ++.B "\-l \-\-list\-dicts" + відображає список доступних словників та виходить +-..TP 8 +-..B "\-u \-\-use\-dict filename" ++.TP 8 ++.B "\-u \-\-use\-dict filename" + для пошуку з використанням лише словника з цим іменем(bookname) +-..TP 8 +-..B "\-n \-\-non\-interactive" ++.TP 8 ++.B "\-n \-\-non\-interactive" + для використання в скриптах +-..TP 8 +-..B "\-\-utf8\-output" ++.TP 8 ++.B "\-\-utf8\-output" + Заставити sdcv розмовляти не в системному кодуванні locale, а робити вивід в utf8 +-..TP 8 +-..B "\-\-utf8\-input" ++.TP 8 ++.B "\-\-utf8\-input" + Заставити sdcv слухати не в системному кодуванні locale, а припускати що це + ввід в utf8 +-..TP 8 +-..B "\-\-data\-dir path/to/directory" ++.TP 8 ++.B "\-\-data\-dir path/to/directory" + Використовуйте цю теку як шлях до теки даних зоряного словника [stardict]. + Це значає, що sdcv шукає словники у теці data-dir/dic. +-..SH FILES +-..TP ++.SH FILES ++.TP + /usr/share/stardict/dic +-..TP ++.TP + $(HOME)/.stardict/dic + + Місце, де sdcv очікує знайти словники. +@@ -57,28 +57,28 @@ + що Ви хочете, лише встановіть змінну оточення STARDICT_DATA_DIR. + Наприклад, якщо Ви маєте словники у теці /mnt/data/stardict-dicts/dic, + встановіть STARDICT_DATA_DIR у /mnt/data/stardict-dicts. +-..TP ++.TP + $(HOME)/.sdcv_history + + Цей файл містить останні $(SDCV_HISTSIZE) слова, які Ви шукали з sdcv. + SDCV використовує цей файл при умові, якщо sdcv був скомпільований + з підтримкою бібліотеки readline. + +-..SH ENVIROMENT ++.SH ENVIROMENT + Змінні оточення для \fIsdcv\fR: +-..TP 20 +-..B STARDICT_DATA_DIR ++.TP 20 ++.B STARDICT_DATA_DIR + Якщо встановлена, sdcv використає цю змінну як теку даних, це означає, + що sdcv шукатиме словники у $\fBSTARDICT_DATA_DIR\fR\dic +-..TP 20 +-..B SDCV_HISTSIZE ++.TP 20 ++.B SDCV_HISTSIZE + Якщо встановлена, sdcv писатиме у $(HOME)/.sdcv_history лише + останні $(SDCV_HISTSIZE) слова, які Ви шукали з sdcv. Якщо не встановлена, + то збірігатиметься останніх 2000 слів у $(HOME)/.sdcv_history. +-..SH BUGS ++.SH BUGS + Звіти про помилки висилайте на адресу dushistov на mail крапка ru. + Не забувайте включати слово "sdcv" десь у полі "Тема:". +-..SH AUTHORS ++.SH AUTHORS + Эвгений А. Душистов, Hu Zheng +-..SH SEE ALSO ++.SH SEE ALSO + stardict(1), http://sdcv.sourceforge.net/, http://stardict.sourceforge.net +--- a/doc/sdcv.1 ++++ b/doc/sdcv.1 +@@ -55,7 +55,7 @@ + + Place, where sdcv expect to find dictionaries. + Instead of /usr/share/stardict/dic you can use everything +-that you want, just set STARDICT_DATA_DIR enviroment variable. ++that you want, just set STARDICT_DATA_DIR environment variable. + For example, if you have dictionaries in /mnt/data/stardict-dicts/dic, + set STARDICT_DATA_DIR to /mnt/data/stardict-dicts. + .TP +@@ -64,7 +64,7 @@ + This file include last $(SDCV_HISTSIZE) words, which you seek with sdcv. + SDCV use this file only if it was compiled with readline library support. + +-.SH ENVIROMENT ++.SH ENVIRONMENT + Environment Variables Used By \fIsdcv\fR: + .TP 20 + .B STARDICT_DATA_DIR diff --git a/sdcv-sk.po.patch b/sdcv-sk.po.patch new file mode 100644 index 0000000..f85590c --- /dev/null +++ b/sdcv-sk.po.patch @@ -0,0 +1,133 @@ +Updates Slovak translation. +http://sourceforge.net/tracker/index.php?func=detail&aid=2125956&group_id=122858&atid=694730 +--- a/po/sk.po ++++ b/po/sk.po +@@ -1,21 +1,21 @@ + # translation of sdcv.po to Slovak + # Copyright (C) + # Zdenko Podobný , 2004, 2005. +-# ++# Ivan Masár , 2007. ++ + msgid "" + msgstr "" + "Project-Id-Version: sdcv 0.3.2\n" + "Report-Msgid-Bugs-To: dushistov@mail.ru\n" + "POT-Creation-Date: 2008-09-24 10:54+0200\n" +-"PO-Revision-Date: 2005-01-04 20:19+0100\n" +-"Last-Translator: Zdenko Podobný \n" +-"Language-Team: Slovak <>\n" ++"PO-Revision-Date: 2007-09-11 00:22+0100\n" ++"Last-Translator: Ivan Masár \n" ++"Language-Team: Slovak \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "X-Generator: KBabel 1.9.1\n" +-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" ++"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + + #: src/sdcv.cpp:127 + #, c-format +@@ -24,7 +24,7 @@ + "Try '%s --help' for more information.\n" + msgstr "" + "Neznáma voľba.\n" +-"Skúste `%s --help'.\n" ++"Skúste „%s --help“.\n" + + #: src/sdcv.cpp:134 + #, c-format +@@ -43,15 +43,12 @@ + + #: src/sdcv.cpp:137 + #, c-format +-msgid "" +-"-l, --list-dicts display list of available dictionaries and exit\n" +-msgstr "" +-"-l, --list-dicts zobrazí zoznam dostupných slovníkov a skončí\n" ++msgid "-l, --list-dicts display list of available dictionaries and exit\n" ++msgstr "-l, --list-dicts zobrazí zoznam dostupných slovníkov a skončí\n" + + #: src/sdcv.cpp:138 + #, c-format +-msgid "" +-"-u, --use-dict bookname for search use only dictionary with this bookname\n" ++msgid "-u, --use-dict bookname for search use only dictionary with this bookname\n" + msgstr "-u, --use-dict názov použiť pre hľadanie iba zvolený slovník\n" + + #: src/sdcv.cpp:139 +@@ -71,12 +68,8 @@ + + #: src/sdcv.cpp:142 + #, c-format +-msgid "" +-"--data-dir path/to/dir use this directory as path to stardict data " +-"directory\n" +-msgstr "" +-"--data-dir path/to/dir použiť tento priečinok ako cestu pre stardict " +-"dátový priečinok\n" ++msgid "--data-dir path/to/dir use this directory as path to stardict data directory\n" ++msgstr "--data-dir path/to/dir použiť tento priečinok ako cestu pre stardict dátový priečinok\n" + + #: src/sdcv.cpp:148 + #, c-format +@@ -84,14 +77,14 @@ + msgstr "Konzolová verzia StarDict, verzia %s\n" + + #: src/sdcv.cpp:169 +-#, fuzzy, c-format ++#, c-format + msgid "Dictionary's name Word count\n" +-msgstr "názov počet slov\n" ++msgstr "názov slovníka počet slov\n" + + #: src/sdcv.cpp:191 + #, c-format + msgid "g_mkdir failed: %s\n" +-msgstr "" ++msgstr "g_mkdir zlyhalo: %s\n" + + #: src/sdcv.cpp:207 + msgid "Enter word or phrase: " +@@ -104,7 +97,7 @@ + + #: src/libwrapper.cpp:246 + msgid "popen failed" +-msgstr "" ++msgstr "popen zlyhalo" + + #: src/libwrapper.cpp:283 + #, c-format +@@ -117,18 +110,18 @@ + msgstr "Nájdené %d položiek, podobných %s,\n" + + #: src/libwrapper.cpp:353 +-#, fuzzy, c-format ++#, c-format + msgid "Your choice[-1 to abort]: " +-msgstr "Vaša voľba: " ++msgstr "Vaša voľba[-1 zruší]: " + + #: src/libwrapper.cpp:367 +-#, fuzzy, c-format ++#, c-format + msgid "" + "Invalid choice.\n" + "It must be from 0 to %d or -1.\n" + msgstr "" + "Neplatná voľba.\n" +-"Musí byť od 0 po %d.\n" ++"Musí byť od 0 do %d alebo -1.\n" + + #: src/libwrapper.cpp:383 + #, c-format +@@ -137,6 +130,6 @@ + + #~ msgid "Can not convert %s to current locale.\n" + #~ msgstr "Nie je možné konvertovať %s na aktuálne locale.\n" +- + #~ msgid "There is no dictionary with this bookname: %s.\n" + #~ msgstr "Neexistuje slovník s takýmto názvom: %s.\n" ++ diff --git a/sdcv-use-env-home.patch b/sdcv-use-env-home.patch new file mode 100644 index 0000000..b897966 --- /dev/null +++ b/sdcv-use-env-home.patch @@ -0,0 +1,31 @@ +Use environment variable HOME to get home directory. g_get_home_dir does +ignore it. +Index: sdcv-0.4.2/src/sdcv.cpp +=================================================================== +--- sdcv-0.4.2.orig/src/sdcv.cpp 2008-10-03 09:15:26.000000000 +0200 ++++ sdcv-0.4.2/src/sdcv.cpp 2008-10-03 09:16:25.000000000 +0200 +@@ -157,11 +157,14 @@ + data_dir="/usr/share/stardict/dic"; + } + ++ const char *homedir = g_getenv ("HOME"); ++ if (!homedir) ++ homedir = g_get_home_dir (); + + + strlist_t dicts_dir_list; + +- dicts_dir_list.push_back(std::string(g_get_home_dir())+G_DIR_SEPARATOR+ ++ dicts_dir_list.push_back(std::string(homedir)+G_DIR_SEPARATOR+ + ".stardict"+G_DIR_SEPARATOR+"dic"); + dicts_dir_list.push_back(data_dir); + +@@ -186,7 +189,7 @@ + } + + +- string conf_dir = string(g_get_home_dir())+G_DIR_SEPARATOR+".stardict"; ++ string conf_dir = string(homedir)+G_DIR_SEPARATOR+".stardict"; + if (g_mkdir(conf_dir.c_str(), S_IRWXU)==-1 && errno!=EEXIST) + fprintf(stderr, _("g_mkdir failed: %s\n"), strerror(errno)); + diff --git a/sdcv-zlib-return-value.patch b/sdcv-zlib-return-value.patch new file mode 100644 index 0000000..5fdbf45 --- /dev/null +++ b/sdcv-zlib-return-value.patch @@ -0,0 +1,18 @@ +Zlib can return negative value, but gulong is unsigned, so it can not catch the error state. +--- a/src/lib/lib.cpp ++++ b/src/lib/lib.cpp +@@ -751,12 +751,12 @@ + + idxdatabuf = (gchar *)g_malloc(fsize); + +- gulong len = gzread(in, idxdatabuf, fsize); ++ ssize_t len = gzread(in, idxdatabuf, fsize); + gzclose(in); + if (len < 0) + return false; + +- if (len != fsize) ++ if (len != (ssize_t)fsize) + return false; + + wordlist.resize(wc+1); diff --git a/sdcv.spec b/sdcv.spec new file mode 100644 index 0000000..947f3cd --- /dev/null +++ b/sdcv.spec @@ -0,0 +1,78 @@ +Name: sdcv +Version: 0.4.2 +Release: 4%{?dist} +Summary: Console version of StarDict program + +Group: Applications/System +License: GPLv2+ +URL: http://sdcv.sourceforge.net/ +Source0: http://downloads.sourceforge.net/project/%{name}/%{name}/%{version}/%{name}-%{version}.tar.bz2 +Patch1: %{name}-allignment.patch +Patch2: %{name}-c++.patch +Patch3: %{name}-cs.po.patch +Patch5: %{name}-fix-tests.patch +Patch6: %{name}-format.patch +Patch7: %{name}-gettext.patch +Patch8: %{name}-locales.patch +Patch9: %{name}-manpage.patch +Patch10: %{name}-sk.po.patch +Patch11: %{name}-use-env-home.patch +Patch12: %{name}-zlib-return-value.patch + +BuildRequires: zlib-devel glib2-devel gettext-devel autoconf automake + +%description +SDCV is simple, cross-platform text-base utility for work with +dictionaries in StarDict's format. + +%description -l ru +SDCV - простая, консольная утилита работы +со словарям в формате Starict + +%prep +%setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 + +%build +autopoint --force +autoreconf +%configure +make %{?_smp_mflags} + + +%install +make install DESTDIR=%{buildroot} +%find_lang %{name} + +%files -f %{name}.lang +%defattr(-,root,root,-) +%doc README NEWS AUTHORS BUGS NEWS TODO +%{_bindir}/%{name} +%{_mandir}/man1/sdcv.1.gz +%{_mandir}/uk/man1/sdcv.1.gz + +%changelog +* Thu Jan 12 2011 Pavel Zhukov - 0.4.2-4 +- fixed License tag + +* Wed Jan 12 2011 Pavel Zhukov - 0.4.2-3 +- rename patchs for better legibity +- fixed doc section + +* Fri Dec 31 2010 Pavel Zhukov - 0.4.2-2 +- some minor bugfixes and gettext patch + +* Thu Dec 30 2010 Pavel Zhukov - 0.4.2-1 +- Initial package +- version 0.4.2 + diff --git a/sources b/sources index e69de29..f75cfd1 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +f624662b333daa5da2d3e99cef519f17 sdcv-0.4.2.tar.bz2