[Frugalware-darcs] frugalware-0.5: smb4k-0.7.5-1siwenna1-x86_64

voroskoi voroskoi at frugalware.org
Tue Jan 16 21:53:46 CET 2007


Darcsweb-Url: http://darcs.frugalware.org/darcsweb/darcsweb.cgi?r=frugalware-0.5;a=darcs_commitdiff;h=20070116205108-dd049-92e9f12e5b53c121f25fc36f08edf13dcb5f166a.gz;

[smb4k-0.7.5-1siwenna1-x86_64
voroskoi <voroskoi at frugalware.org>**20070116205108
 secfix bump, closes #1628
] {
addfile ./source/kde-extra/smb4k/cs.po.diff
addfile ./source/kde-extra/smb4k/smb4k_cat.cpp.diff
addfile ./source/kde-extra/smb4k/smb4k_kill.cpp.diff
addfile ./source/kde-extra/smb4k/smb4k_mount.cpp.diff
addfile ./source/kde-extra/smb4k/smb4k_umount.cpp.diff
addfile ./source/kde-extra/smb4k/smb4kfileio.cpp.diff
hunk ./source/kde-extra/smb4k/FrugalBuild 1
-# Last Modified: Fri, 04 Aug 2006 13:49:39 +0200
hunk ./source/kde-extra/smb4k/FrugalBuild 5
-pkgver=0.7.2
-pkgrel=1
+pkgver=0.7.5
+pkgrel=1siwenna1
hunk ./source/kde-extra/smb4k/FrugalBuild 14
-source=(http://download.berlios.de/smb4k/$pkgname-$pkgver.tar.bz2)
-sha1sums=('1a15975d84c1b093ac5b15ea7ae1cea397df91cd')
+source=(http://download.berlios.de/smb4k/$pkgname-$pkgver.tar.bz2 \
+	cs.po.diff smb4k_cat.cpp.diff smb4kfileio.cpp.diff smb4k_kill.cpp.diff smb4k_mount.cpp.diff smb4k_umount.cpp.diff)
hunk ./source/kde-extra/smb4k/FrugalBuild 17
+sha1sums=('46cb46db8e032ca70f78d02f6fb5e7cf1a498ab8' \
+	  '3d662eedbeea558e74fd0ffdcf2577f2c45e5201' \
+	  '5dd5ae30fa2b272026f82cda378bedbc673ca54e' \
+	  '0895d726caededd17393e53be36b190003d2ddbd' \
+	  '23cf0ee6b9f50a8ab7feb7cb319818c720e45488' \
+	  '2fbf5aa548fad8d6277c2bc66db6f75aadcb67d0' \
+	  'ee23ed6683010831184b51b1ce9359a3a94212a8')
hunk ./source/kde-extra/smb4k/cs.po.diff 1
+Binärdateien smb4k-0.7.5/po/cs.gmo and smb4k-0.7.5.sec/po/cs.gmo sind verschieden.
+diff -ur --exclude='Makefile.*' --exclude='configure*' --exclude='*.kdev*' smb4k-0.7.5/po/cs.po smb4k-0.7.5.sec/po/cs.po
+--- smb4k-0.7.5/po/cs.po	2006-11-25 08:00:50.000000000 +0100
++++ smb4k-0.7.5.sec/po/cs.po	2006-12-18 19:19:42.000000000 +0100
+@@ -5,13 +5,15 @@
+ "Project-Id-Version: cs\n"
+ "Report-Msgid-Bugs-To: \n"
+ "POT-Creation-Date: 2006-08-31 19:53+0200\n"
+-"PO-Revision-Date: 2006-06-18 00:03+0200\n"
+-"Last-Translator: Alois Nešpor <Alois.Nespor at seznam.cz>\n"
++"PO-Revision-Date: 2006-10-26 19:21+0100\n"
++"Last-Translator: Alois Nespor <alois.nespor at gmail.com>\n"
+ "Language-Team: czech <cs at li.org>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "X-Generator: KBabel 1.11.2\n"
++"X-Poedit-Language: Czech\n"
++"X-Poedit-Country: CZECH REPUBLIC\n"
+ 
+ #: _translatorinfo.cpp:1
+ msgid ""
+@@ -23,7 +25,7 @@
+ msgid ""
+ "_: EMAIL OF TRANSLATORS\n"
+ "Your emails"
+-msgstr "Alois.Nespor at seznam.cz"
++msgstr "alois.nespor at gmail.com"
+ 
+ #: main.cpp:39
+ msgid ""
+@@ -41,7 +43,9 @@
+ msgid "(c) 2003-2006, Alexander Reinholdt & the Smb4K team"
+ msgstr "(c) 2003-2006, Alexander Reinholdt & Smb4K tým"
+ 
+-#: main.cpp:78 main.cpp:79 main.cpp:80
++#: main.cpp:78
++#: main.cpp:79
++#: main.cpp:80
+ msgid "Developer"
+ msgstr "Vývojář"
+ 
+@@ -65,9 +69,10 @@
+ msgid "Swedish translation and intensive testing"
+ msgstr "Švédský překlad a intenzívní testování"
+ 
+-#: main.cpp:89 main.cpp:106
++#: main.cpp:89
++#: main.cpp:106
+ msgid "Brazilian Portuguese translation"
+-msgstr "Brazilsko portugalský překlad"
++msgstr "Brazilský portugalský překlad"
+ 
+ #: main.cpp:90
+ msgid "Ukrainian translation"
+@@ -77,7 +82,8 @@
+ msgid "Hungarian translation"
+ msgstr "Maďarský překlad"
+ 
+-#: main.cpp:92 main.cpp:100
++#: main.cpp:92
++#: main.cpp:100
+ msgid "Spanish translation"
+ msgstr "Španělský překlad"
+ 
+@@ -109,7 +115,8 @@
+ msgid "Czech translation"
+ msgstr "Český překlad"
+ 
+-#: main.cpp:101 main.cpp:107
++#: main.cpp:101
++#: main.cpp:107
+ msgid "Turkish translation"
+ msgstr "Turecký překlad"
+ 
+@@ -149,7 +156,8 @@
+ msgid "Smb4K - The SMB/CIFS Share Browser"
+ msgstr "Smb4K - Prohlížeč SMB/CIFS sdílení"
+ 
+-#: smb4k.cpp:86 widgets/smb4kbrowseractionmenu.cpp:62
++#: smb4k.cpp:86
++#: widgets/smb4kbrowseractionmenu.cpp:62
+ msgid "&Abort"
+ msgstr "&Zrušit"
+ 
+@@ -181,12 +189,16 @@
+ msgid "Version"
+ msgstr "Verze"
+ 
+-#: smb4k.cpp:187 smb4k.cpp:244 smb4k.cpp:254
++#: smb4k.cpp:187
++#: smb4k.cpp:244
++#: smb4k.cpp:254
+ #: widgets/smb4kappearanceoptions.cpp:43
+ msgid "Network Browser"
+ msgstr "Prohlížení sítě"
+ 
+-#: smb4k.cpp:192 smb4k.cpp:247 smb4k.cpp:259
++#: smb4k.cpp:192
++#: smb4k.cpp:247
++#: smb4k.cpp:259
+ msgid "Search Dialog"
+ msgstr "Vyhledávání"
+ 
+@@ -194,28 +206,31 @@
+ msgid "&Dock Widgets"
+ msgstr "&Umístění panelů"
+ 
+-#: smb4k.cpp:267 smb4k.cpp:471 smb4k_konqplugin.cpp:86
+-#: smb4k_konqplugin.cpp:306 widgets/smb4kbrowseractionmenu.cpp:66
+-#: widgets/smb4kbrowseractionmenu.cpp:93 widgets/smb4kbrowserwidget.cpp:64
+-#: widgets/smb4kbrowserwidget.cpp:527 widgets/smb4koptionsdlg.cpp:106
++#: smb4k.cpp:267
++#: smb4k.cpp:471
++#: smb4k_konqplugin.cpp:86
++#: smb4k_konqplugin.cpp:306
++#: widgets/smb4kbrowseractionmenu.cpp:66
++#: widgets/smb4kbrowseractionmenu.cpp:93
++#: widgets/smb4kbrowserwidget.cpp:64
++#: widgets/smb4kbrowserwidget.cpp:527
++#: widgets/smb4koptionsdlg.cpp:106
+ msgid "Network"
+ msgstr "Síť"
+ 
+-#: smb4k.cpp:271 smb4k.cpp:475
++#: smb4k.cpp:271
++#: smb4k.cpp:475
+ msgid "Master"
+ msgstr "Hlavní (master)"
+ 
+-#: smb4k.cpp:286 smb4k.cpp:490
++#: smb4k.cpp:286
++#: smb4k.cpp:490
+ msgid "None"
+ msgstr "Žádný"
+ 
+ #: smb4k.cpp:321
+-msgid ""
+-"Closing the main window will keep Smb4K running in the system tray. Use "
+-"'Quit' from the 'File' menu to quit the application."
+-msgstr ""
+-"Uzavřením okna poběží Smb4k nadále v systémové liště. Aplikace se ukončí "
+-"použitím tlačítka'Ukončit'v nabídce Soubor."
++msgid "Closing the main window will keep Smb4K running in the system tray. Use 'Quit' from the 'File' menu to quit the application."
++msgstr "Uzavřením okna poběží Smb4k nadále v systémové liště. Aplikace se ukončí použitím tlačítka'Ukončit'v nabídce Soubor."
+ 
+ #: smb4k.cpp:323
+ msgid "Docking in System Tray"
+@@ -229,7 +244,8 @@
+ msgid "Aborting..."
+ msgstr "Přerušuje se..."
+ 
+-#: smb4k.cpp:356 smb4k.cpp:426
++#: smb4k.cpp:356
++#: smb4k.cpp:426
+ msgid "Done."
+ msgstr "Hotovo."
+ 
+@@ -285,16 +301,19 @@
+ msgid "Synchronizing data..."
+ msgstr "Synchronizují se data..."
+ 
+-#: smb4k_konqplugin.cpp:87 widgets/smb4kbrowserwidget.cpp:65
++#: smb4k_konqplugin.cpp:87
++#: widgets/smb4kbrowserwidget.cpp:65
+ msgid "Type"
+ msgstr "Typ"
+ 
+-#: smb4k_konqplugin.cpp:88 widgets/smb4kbookmarkeditor.cpp:60
++#: smb4k_konqplugin.cpp:88
++#: widgets/smb4kbookmarkeditor.cpp:60
+ #: widgets/smb4kbrowserwidget.cpp:66
+ msgid "IP Address"
+ msgstr "IP adresa"
+ 
+-#: smb4k_konqplugin.cpp:89 widgets/smb4kbrowserwidget.cpp:67
++#: smb4k_konqplugin.cpp:89
++#: widgets/smb4kbrowserwidget.cpp:67
+ msgid "Comment"
+ msgstr "Poznámka"
+ 
+@@ -306,16 +325,20 @@
+ msgid "Samba Browser"
+ msgstr "Samba Prohlížeč"
+ 
+-#: smb4k_konqplugin.cpp:314 widgets/smb4kbrowserwidget.cpp:535
++#: smb4k_konqplugin.cpp:314
++#: widgets/smb4kbrowserwidget.cpp:535
+ msgid "Scan Wo&rkgroup"
+ msgstr "Skenovat Pra&covní skupinu"
+ 
+-#: smb4k_konqplugin.cpp:318 widgets/smb4kbrowserwidget.cpp:539
++#: smb4k_konqplugin.cpp:318
++#: widgets/smb4kbrowserwidget.cpp:539
+ msgid "Scan Compute&r"
+ msgstr "Skenovat Počíta&č"
+ 
+-#: smb4k_konqplugin.cpp:326 widgets/smb4kbrowseractionmenu.cpp:61
+-#: widgets/smb4kbrowseractionmenu.cpp:88 widgets/smb4kbrowserwidget.cpp:545
++#: smb4k_konqplugin.cpp:326
++#: widgets/smb4kbrowseractionmenu.cpp:61
++#: widgets/smb4kbrowseractionmenu.cpp:88
++#: widgets/smb4kbrowserwidget.cpp:545
+ msgid "Scan Netwo&rk"
+ msgstr "Skenovat Sí&ť"
+ 
+@@ -325,17 +348,15 @@
+ 
+ #: core/smb4kcore.cpp:182
+ msgid ""
+-"Up to KDE 3.3.x, KIO and Konqueror cannot handle CIFS shares. Konqueror will "
+-"hang if you try to access it.\n"
++"Up to KDE 3.3.x, KIO and Konqueror cannot handle CIFS shares. Konqueror will hang if you try to access it.\n"
+ "Do you want to continue?"
+ msgstr ""
+-"Do verze KDE 3.3.x, KIO a Konqueror nedokážou ovládat CIFS sdílení. "
+-"Konqueror může spadnout při pokusu o přístup.\n"
++"Do verze KDE 3.3.x, KIO a Konqueror nedokážou ovládat CIFS sdílení. Konqueror může spadnout při pokusu o přístup.\n"
+ "Chcete pokračovat?"
+ 
+ #: core/smb4kfileio.cpp:743
+ msgid "Parse error in output"
+-msgstr ""
++msgstr "Separovat chybu při výstupu"
+ 
+ #: core/smb4kglobal.cpp:109
+ msgid "Specify User"
+@@ -345,14 +366,15 @@
+ msgid "Please specify a user name."
+ msgstr "Specifikujte prosím uživatelské jméno."
+ 
+-#: core/smb4kglobal.cpp:123 core/smb4kpasswordhandler.cpp:202
++#: core/smb4kglobal.cpp:123
++#: core/smb4kpasswordhandler.cpp:202
+ #: widgets/smb4kauthoptions.cpp:66
+ msgid "User:"
+ msgstr "Uživatel:"
+ 
+ #: core/smb4kglobal.cpp:542
+ msgid "The net command '%1' is not supported by Smb4K."
+-msgstr "Síťový příkaz %1 není podporován Smb4K."
++msgstr "Síťový příkaz '%1'  není podporován Smb4K."
+ 
+ #: core/smb4kglobal.cpp:605
+ msgid "An error occurred while trying to get the browse list."
+@@ -403,18 +425,12 @@
+ msgstr "Hostitelské jméno nemohlo být určeno."
+ 
+ #: core/smb4kglobal.cpp:641
+-msgid ""
+-"The mimetype \"%1\" is not supported. Please convert the file to PostScript "
+-"or PDF."
+-msgstr ""
+-"Typ souboru \"%1\" není podporovaný! Konvertujte prosím soubor do "
+-"PostScriptu nebo PDF."
++msgid "The mimetype \"%1\" is not supported. Please convert the file to PostScript or PDF."
++msgstr "Typ souboru \"%1\" není podporovaný! Konvertujte prosím soubor do PostScriptu nebo PDF."
+ 
+ #: core/smb4kglobal.cpp:647
+ msgid "The file %1 is currently edited by the user %2. Please try again later."
+-msgstr ""
+-"Soubor %1 je právě editován jiným uživatelem %2. Zkuste to prosím později "
+-"znovu."
++msgstr "Soubor %1 je právě editován jiným uživatelem %2. Zkuste to prosím později znovu."
+ 
+ #: core/smb4kglobal.cpp:651
+ msgid "The directory %1 could not be created."
+@@ -422,23 +438,17 @@
+ 
+ #: core/smb4kglobal.cpp:654
+ msgid ""
+-"Either your PATH environment variable is not set correctly or there are the "
+-"following programs missing on your system:\n"
++"Either your PATH environment variable is not set correctly or there are the following programs missing on your system:\n"
+ "%1\n"
+ "Please correct this and start Smb4K again."
+ msgstr ""
+-"Buď je proměnná PATH prostřdí špatně nastavená nebo v systému chybějí "
+-"následující programy:\n"
++"Buď je proměnná PATH prostředí špatně nastavená nebo v systému chybějí následující programy:\n"
+ "%1\n"
+ "Opravte to prosím a spustěte Smb4K znovu."
+ 
+ #: core/smb4kglobal.cpp:657
+-msgid ""
+-"You previously chose to use %1, but now it is missing on your system. Smb4K "
+-"will disable this feature."
+-msgstr ""
+-"Předtím jste vybrali %1, ten ale teď chybí ve vašem systému. Smb4K zakáže "
+-"tuto vlastnost."
++msgid "You previously chose to use %1, but now it is missing on your system. Smb4K will disable this feature."
++msgstr "Předtím jste vybrali %1, ten ale teď chybí ve vašem systému. Smb4K zakáže tuto vlastnost."
+ 
+ #: core/smb4kglobal.cpp:660
+ msgid "The file %1 could not be written successfully."
+@@ -449,10 +459,8 @@
+ msgstr "Nebyl určený žádný disk."
+ 
+ #: core/smb4kglobal.cpp:666
+-msgid ""
+-"This share could not be unmounted because the mount point string was empty."
+-msgstr ""
+-"Toto sdílení nelze odpojit protože řetězec připojeného bodu je prázdný."
++msgid "This share could not be unmounted because the mount point string was empty."
++msgstr "Toto sdílení nelze odpojit protože řetězec připojeného bodu je prázdný."
+ 
+ #: core/smb4kglobal.cpp:669
+ msgid "Your kernel (%1) does not support this operation."
+@@ -467,13 +475,8 @@
+ msgstr "Tiskárny nemůžou být přidány do záložek."
+ 
+ #: core/smb4kglobal.cpp:678
+-msgid ""
+-"The search method you chose (smbclient) can't handle IP addresses correctly. "
+-"Please choose \"Use nmblookup\" in the configuration dialog and try again."
+-msgstr ""
+-"Zvolená metoda hledání (smbclient) nemůže korektně manipulovat s IP "
+-"adresami. Vyberte prosím \"Použít nmblookup.\" v dialogu nastavení a zkuste "
+-"to znovu. "
++msgid "The search method you chose (smbclient) can't handle IP addresses correctly. Please choose \"Use nmblookup\" in the configuration dialog and try again."
++msgstr "Zvolená metoda hledání (smbclient) nemůže korektně manipulovat s IP adresami. Vyberte prosím \"Použít nmblookup.\" v dialogu nastavení a zkuste to znovu. "
+ 
+ #: core/smb4kglobal.cpp:681
+ msgid "The command %1 could not be found."
+@@ -500,14 +503,8 @@
+ msgstr "Adresář %1 nebyl nalezen."
+ 
+ #: core/smb4kglobal.cpp:699
+-msgid ""
+-"The lock file (%1) is a symlink. Since this might indicate that someone trys "
+-"to exploit your system, please inform your system administrator. No action "
+-"has been performed."
+-msgstr ""
+-"Uzamknutý soubor (%1) je \"symbolický odkaz\". Toto může znamenat že někdo "
+-"mohl napadnou Váš počítač, prosím informujte svého systémového "
+-"administrátora. Akce nebyla provedena."
++msgid "The lock file (%1) is a symlink. Since this might indicate that someone trys to exploit your system, please inform your system administrator. No action has been performed."
++msgstr "Uzamknutý soubor (%1) je \"symbolický odkaz\". Toto může znamenat že někdo mohl napadnou Váš počítač, prosím informujte svého systémového administrátora. Akce nebyla provedena."
+ 
+ #: core/smb4kglobal.cpp:706
+ msgid "An error occurred while determining file permissions."
+@@ -526,14 +523,19 @@
+ "The list of mounted SMBFS and CIFS shares could not be imported.\n"
+ "Unfortunately, there was no error message."
+ msgstr ""
++"Seznam připojených SMBFS a CIFS připojení není možno importovat.\n"
++"Bohužel chybí výpis chyby. "
+ 
+ #: core/smb4kglobal.cpp:722
+ msgid ""
+ "The list of mounted SMBFS and CIFS shares could not be imported.\n"
+ "Read the error message under 'Details' to find out more."
+ msgstr ""
++"Seznam připojených SMBFS a CIFS připojení není možno importovat.\n"
++"Klikněte na tlačítko  'Detaily' pro další informace."
+ 
+-#: core/smb4kmounter.cpp:951 core/smb4kmounter.cpp:967
++#: core/smb4kmounter.cpp:951
++#: core/smb4kmounter.cpp:967
+ msgid "Do you really want to force the unmounting of this share?"
+ msgstr "Skutečně chcete toto sdílení násilně odpojit?"
+ 
+@@ -541,7 +543,8 @@
+ msgid "Disk"
+ msgstr "Disk"
+ 
+-#: core/smb4knetworkitems.cpp:197 widgets/smb4kprintdialog.cpp:49
++#: core/smb4knetworkitems.cpp:197
++#: widgets/smb4kprintdialog.cpp:49
+ msgid "Printer"
+ msgstr "Tiskárna"
+ 
+@@ -549,7 +552,8 @@
+ msgid "Opening the wallet failed! KWallet support will be disabled."
+ msgstr "Otevření správce hesel selhalo! Podpora KWallet bude vypnuta."
+ 
+-#: core/smb4kpasswordhandler.cpp:153 widgets/smb4koptionsdlg.cpp:156
++#: core/smb4kpasswordhandler.cpp:153
++#: widgets/smb4koptionsdlg.cpp:156
+ msgid "Authentication"
+ msgstr "Ověření "
+ 
+@@ -577,11 +581,13 @@
+ msgid "Please enter authentication data for %1."
+ msgstr "Prosím zadejte ověření pro %1."
+ 
+-#: core/smb4kpasswordhandler.cpp:220 widgets/smb4kauthoptions.cpp:69
++#: core/smb4kpasswordhandler.cpp:220
++#: widgets/smb4kauthoptions.cpp:69
+ msgid "Password:"
+ msgstr "Heslo:"
+ 
+-#: core/smb4ksynchronizer.cpp:100 core/smb4ksynchronizer.cpp:159
++#: core/smb4ksynchronizer.cpp:100
++#: core/smb4ksynchronizer.cpp:159
+ #: widgets/smb4koptionsdlg.cpp:256
+ msgid "Synchronization"
+ msgstr "Synchronizace"
+@@ -646,8 +652,10 @@
+ msgid "Show comment"
+ msgstr "Ukázat poznámky"
+ 
+-#: widgets/smb4kappearanceoptions.cpp:62 widgets/smb4koptionsdlg.cpp:131
+-#: widgets/smb4ksharewidget.cpp:61 widgets/smb4ksharewidget.cpp:287
++#: widgets/smb4kappearanceoptions.cpp:62
++#: widgets/smb4koptionsdlg.cpp:131
++#: widgets/smb4ksharewidget.cpp:61
++#: widgets/smb4ksharewidget.cpp:287
+ msgid "Shares"
+ msgstr "Sdílení"
+ 
+@@ -685,9 +693,7 @@
+ 
+ #: widgets/smb4kauthoptions.cpp:49
+ msgid "If no wallet is used, remember passwords during run time"
+-msgstr ""
+-"Pokud není použit správce hesel, pamatovat si hesla po dobu spuštěného "
+-"programu."
++msgstr "Pokud není použit správce hesel, pamatovat si hesla po dobu spuštěného programu."
+ 
+ #: widgets/smb4kauthoptions.cpp:53
+ msgid "Default Login"
+@@ -725,7 +731,8 @@
+ msgid "Pre&view"
+ msgstr "Ná&hled"
+ 
+-#: widgets/smb4kbrowseractionmenu.cpp:57 widgets/smb4kbrowseractionmenu.cpp:84
++#: widgets/smb4kbrowseractionmenu.cpp:57
++#: widgets/smb4kbrowseractionmenu.cpp:84
+ msgid "Au&thentication"
+ msgstr "Ov&ěření"
+ 
+@@ -733,7 +740,8 @@
+ msgid "&Print File"
+ msgstr "&Vytisknout soubor"
+ 
+-#: widgets/smb4kbrowseractionmenu.cpp:59 widgets/smb4kbrowseractionmenu.cpp:86
++#: widgets/smb4kbrowseractionmenu.cpp:59
++#: widgets/smb4kbrowseractionmenu.cpp:86
+ msgid "&Mount"
+ msgstr "&Připojit"
+ 
+@@ -749,17 +757,21 @@
+ msgid "Mount Share"
+ msgstr "Připojit Sdílení"
+ 
+-#: widgets/smb4kmountdialog.cpp:66 widgets/smb4knetworkitemtooltip.cpp:145
++#: widgets/smb4kmountdialog.cpp:66
++#: widgets/smb4knetworkitemtooltip.cpp:145
+ #: widgets/smb4ksharetooltip.cpp:74
+ msgid "Share:"
+ msgstr "Sdílení:"
+ 
+-#: widgets/smb4kmountdialog.cpp:71 widgets/smb4kprintdialog.cpp:65
++#: widgets/smb4kmountdialog.cpp:71
++#: widgets/smb4kprintdialog.cpp:65
+ msgid "IP Address:"
+ msgstr "IP adresa:"
+ 
+-#: widgets/smb4kmountdialog.cpp:75 widgets/smb4knetworkitemtooltip.cpp:77
+-#: widgets/smb4knetworkitemtooltip.cpp:118 widgets/smb4kprintdialog.cpp:74
++#: widgets/smb4kmountdialog.cpp:75
++#: widgets/smb4knetworkitemtooltip.cpp:77
++#: widgets/smb4knetworkitemtooltip.cpp:118
++#: widgets/smb4kprintdialog.cpp:74
+ msgid "Workgroup:"
+ msgstr "Pracovní skupina:"
+ 
+@@ -802,7 +814,8 @@
+ #: widgets/smb4knetworkitemtooltip.cpp:260
+ #: widgets/smb4knetworkitemtooltip.cpp:266
+ #: widgets/smb4knetworkitemtooltip.cpp:272
+-#: widgets/smb4knetworkitemtooltip.cpp:288 widgets/smb4kprintdialog.cpp:68
++#: widgets/smb4knetworkitemtooltip.cpp:288
++#: widgets/smb4kprintdialog.cpp:68
+ msgid "Unknown"
+ msgstr "Neznámý"
+ 
+@@ -832,9 +845,7 @@
+ 
+ #: widgets/smb4knetworkoptions.cpp:48
+ msgid "Query the current workgroup master browser to retrieve the browse list"
+-msgstr ""
+-"Získat seznam prohlížečů dotazem na aktuální hlavní prohlížeč pracovní "
+-"skupiny "
++msgstr "Získat seznam prohlížečů dotazem na aktuální hlavní prohlížeč pracovní skupiny "
+ 
+ #: widgets/smb4knetworkoptions.cpp:52
+ msgid "Query this master browser to retrieve the browse list:"
+@@ -845,14 +856,8 @@
+ msgstr "Prohledání sítě"
+ 
+ #: widgets/smb4knetworkoptions.cpp:65
+-msgid ""
+-"Smb4K uses <i>nmblookup</i> by default to do network searches. This method "
+-"is very reliable but fails sometimes if your network neighborhood is "
+-"configured uncommonly. In this case you should try to use <i>smbclient</i>."
+-msgstr ""
+-"Smb4K standatrně používá <i>nmblookup</i> pro prohledání sítě. Tato metoda "
+-"je velmi spolehlivá, ale občas selže pokud jsou okolní počítače nezvykle "
+-"nakonfigurované. V tomto případě by jste měli raději použít <i>smbclient</i>."
++msgid "Smb4K uses <i>nmblookup</i> by default to do network searches. This method is very reliable but fails sometimes if your network neighborhood is configured uncommonly. In this case you should try to use <i>smbclient</i>."
++msgstr "Smb4K standatrně používá <i>nmblookup</i> pro prohledání sítě. Tato metoda je velmi spolehlivá, ale občas selže pokud jsou okolní počítače nezvykle nakonfigurované. V tomto případě by jste měli raději použít <i>smbclient</i>."
+ 
+ #: widgets/smb4knetworkoptions.cpp:68
+ msgid "Use nmblookup (recommended)"
+@@ -882,21 +887,29 @@
+ msgid "Rsync Options"
+ msgstr "Volby Rsync"
+ 
+-#: widgets/smb4koptionsdlg.cpp:449 widgets/smb4koptionsdlg.cpp:458
+-#: widgets/smb4koptionsdlg.cpp:467 widgets/smb4koptionsdlg.cpp:477
+-#: widgets/smb4koptionsdlg.cpp:910 widgets/smb4koptionsdlg.cpp:913
+-#: widgets/smb4koptionsdlg.cpp:917 widgets/smb4koptionsdlg.cpp:918
+-#: widgets/smb4ksambaoptions.cpp:96 widgets/smb4ksambaoptions.cpp:99
+-#: widgets/smb4ksambaoptions.cpp:108 widgets/smb4ksambaoptions.cpp:115
++#: widgets/smb4koptionsdlg.cpp:449
++#: widgets/smb4koptionsdlg.cpp:458
++#: widgets/smb4koptionsdlg.cpp:467
++#: widgets/smb4koptionsdlg.cpp:477
++#: widgets/smb4koptionsdlg.cpp:910
++#: widgets/smb4koptionsdlg.cpp:913
++#: widgets/smb4koptionsdlg.cpp:917
++#: widgets/smb4koptionsdlg.cpp:918
++#: widgets/smb4ksambaoptions.cpp:96
++#: widgets/smb4ksambaoptions.cpp:99
++#: widgets/smb4ksambaoptions.cpp:108
++#: widgets/smb4ksambaoptions.cpp:115
+ msgid "default"
+ msgstr "výchozí"
+ 
+-#: widgets/smb4koptionsdlg.cpp:503 widgets/smb4koptionsdlg.cpp:944
++#: widgets/smb4koptionsdlg.cpp:503
++#: widgets/smb4koptionsdlg.cpp:944
+ #: widgets/smb4ksambaoptions.cpp:128
+ msgid "read-write"
+ msgstr "čtení-zápis"
+ 
+-#: widgets/smb4koptionsdlg.cpp:948 widgets/smb4ksambaoptions.cpp:129
++#: widgets/smb4koptionsdlg.cpp:948
++#: widgets/smb4ksambaoptions.cpp:129
+ msgid "read-only"
+ msgstr "pouze čtení"
+ 
+@@ -984,8 +997,10 @@
+ msgid "Rsync prefix:"
+ msgstr "Rsync prefix:"
+ 
+-#: widgets/smb4krsyncoptions.cpp:54 widgets/smb4krsyncoptions.cpp:144
+-#: widgets/smb4krsyncoptions.cpp:180 widgets/smb4ksambaoptions.cpp:82
++#: widgets/smb4krsyncoptions.cpp:54
++#: widgets/smb4krsyncoptions.cpp:144
++#: widgets/smb4krsyncoptions.cpp:180
++#: widgets/smb4ksambaoptions.cpp:82
+ msgid "General"
+ msgstr "Hlavní"
+ 
+@@ -1043,7 +1058,7 @@
+ 
+ #: widgets/smb4krsyncoptions.cpp:69
+ msgid "Preserve hard links"
+-msgstr "Zachovat \"tvrdé\" linky"
++msgstr "Zachovat tvrdé linky"
+ 
+ #: widgets/smb4krsyncoptions.cpp:70
+ msgid "Keep directory symlinks"
+@@ -1174,14 +1189,8 @@
+ msgstr "Filtr Pravidel"
+ 
+ #: widgets/smb4krsyncoptions.cpp:159
+-msgid ""
+-"The rules defined above will be added to the <i>rsync</i> command as they "
+-"are. Thus, you have to start with the '--filter=' argument. You should also "
+-"read rsync's manual page first."
+-msgstr ""
+-"Pravidla definovaná nahoře budou přidána do <i>rsync</i> příkazu tak jak "
+-"jsou. Tedy,musíte začít s argumentem '--filter='. Přečtete si také nejprve "
+-"manuál k rsync."
++msgid "The rules defined above will be added to the <i>rsync</i> command as they are. Thus, you have to start with the '--filter=' argument. You should also read rsync's manual page first."
++msgstr "Pravidla definovaná nahoře budou přidána do <i>rsync</i> příkazu tak jak jsou. Tedy,musíte začít s argumentem '--filter='. Přečtete si také nejprve manuál k rsync."
+ 
+ #: widgets/smb4krsyncoptions.cpp:161
+ msgid "Use \"--filter=': /.rsync-filter'\" filter rule"
+@@ -1352,12 +1361,8 @@
+ msgstr "Souborový systém"
+ 
+ #: widgets/smb4ksambaoptions.cpp:152
+-msgid ""
+-"NOTE: If you choose the CIFS file system, you might need to enable support "
+-"for either <i>super</i> or <i>sudo</i> in the Super User tab."
+-msgstr ""
+-"Poznámka: Pokud vyberete souborový systém CIFS,možná bude potřeba povolit "
+-"podporu buď pro <i>super</i> nebo <i>sudo</i> v záložce Superuživatel."
++msgid "NOTE: If you choose the CIFS file system, you might need to enable support for either <i>super</i> or <i>sudo</i> in the Super User tab."
++msgstr "Poznámka: Pokud vyberete souborový systém CIFS,možná bude potřeba povolit podporu buď pro <i>super</i> nebo <i>sudo</i> v záložce Superuživatel."
+ 
+ #: widgets/smb4ksambaoptions.cpp:174
+ msgid "Protocol Hint"
+@@ -1397,8 +1402,7 @@
+ 
+ #: widgets/smb4ksambaoptions.cpp:243
+ msgid "Try and bind to UDP port 137 to send and receive UDP datagrams"
+-msgstr ""
+-"K zasílání a přijímání UDP datových programů pokusit použít UDP port 137"
++msgstr "K zasílání a přijímání UDP datových programů pokusit použít UDP port 137"
+ 
+ #: widgets/smb4ksearchdialog.cpp:58
+ msgid "Search"
+@@ -1416,11 +1420,13 @@
+ msgid "The search for %1 failed."
+ msgstr "Vyhledávání %1 selhalo."
+ 
+-#: widgets/smb4kshareactionmenu.cpp:57 widgets/smb4kshareactionmenu.cpp:72
++#: widgets/smb4kshareactionmenu.cpp:57
++#: widgets/smb4kshareactionmenu.cpp:72
+ msgid "&Unmount"
+ msgstr "&Odpojit"
+ 
+-#: widgets/smb4kshareactionmenu.cpp:58 widgets/smb4kshareactionmenu.cpp:73
++#: widgets/smb4kshareactionmenu.cpp:58
++#: widgets/smb4kshareactionmenu.cpp:73
+ msgid "&Force Unmounting"
+ msgstr "&Odpojit násilím"
+ 
+@@ -1428,11 +1434,13 @@
+ msgid "U&nmount All"
+ msgstr "O&dpojit vše"
+ 
+-#: widgets/smb4kshareactionmenu.cpp:60 widgets/smb4kshareactionmenu.cpp:74
++#: widgets/smb4kshareactionmenu.cpp:60
++#: widgets/smb4kshareactionmenu.cpp:74
+ msgid "&Konqueror"
+ msgstr "&Konqueror"
+ 
+-#: widgets/smb4kshareactionmenu.cpp:61 widgets/smb4kshareactionmenu.cpp:75
++#: widgets/smb4kshareactionmenu.cpp:61
++#: widgets/smb4kshareactionmenu.cpp:75
+ msgid "S&ynchronize"
+ msgstr "S&ynchronizovat"
+ 
+@@ -1513,7 +1521,7 @@
+ "Use super user privileges to force the unmounting of (broken) shares\n"
+ "(Requires Linux kernel 2.4.11 or later)"
+ msgstr ""
+-"Použít práva superuživatele k násilnému odpojení (mrtvých) sdílení\n"
++"Použít práva superuživatele k násilnému odpojení (poškozených) sdílení\n"
+ "(Vyžaduje Linux kernel 2.4.11 nebo novější)"
+ 
+ #: widgets/smb4ksuperuseroptions.cpp:56
+@@ -1523,3 +1531,4 @@
+ #: widgets/smb4ksuperuseroptions.cpp:60
+ msgid "Remove Entries"
+ msgstr "Odstranit položky"
++
hunk ./source/kde-extra/smb4k/smb4k_cat.cpp.diff 1
+Nur in smb4k-0.7.5: subdirs.cvs.sh.5013.
+diff -ur --exclude='Makefile.*' --exclude='configure*' --exclude='*.kdev*' smb4k-0.7.5/utilities/smb4k_cat.cpp smb4k-0.7.5.sec/utilities/smb4k_cat.cpp
+--- smb4k-0.7.5/utilities/smb4k_cat.cpp	2006-08-26 10:28:16.000000000 +0200
++++ smb4k-0.7.5.sec/utilities/smb4k_cat.cpp	2006-12-13 08:53:27.000000000 +0100
+@@ -34,7 +34,7 @@
+ #include <cerrno>
+ using namespace std;
+ 
+-#define SMB4K_CAT_VERSION 0.2
++#define SMB4K_CAT_VERSION 0.3
+ 
+ //
+ // Usage
+@@ -55,36 +55,6 @@
+ }
+ 
+ //
+-// Find the config file
+-//
+-
+-const char *findfile( const char *name )
+-{
+-  const char *paths[] = { "./", "/etc/", "/usr/local/etc", "/opt/etc/" };
+-  string file = "";
+-
+-  for ( uint i = 0; i < sizeof( paths ) / sizeof( char * ); i++ )
+-  {
+-    string path( paths[i] );
+-    path.append( name );
+-
+-    if ( access( path.c_str(), F_OK ) == 0 )
+-    {
+-      file.assign( path );
+-      break;
+-    }
+-  }
+-
+-  if ( !strcmp( file.c_str(), "" ) )
+-  {
+-    cerr << "smb4k_cat: Could not find " << name << "." << endl;
+-    exit( EXIT_FAILURE );
+-  }
+-
+-  return file.c_str();
+-}
+-
+-//
+ // The main program
+ //
+ 
+@@ -106,14 +76,8 @@
+     {
+       char config[255];
+ 
+-      if ( !strchr( argv[1], '/' ) )
+-      {
+-        strcpy( config, findfile( argv[1] ) );
+-      }
+-      else
+-      {
+-        strcpy( config, argv[1] );
+-      }
++      (void) strncpy( config, argv[1], 254 );
++      config[254] = '\0';
+ 
+       if ( strlen( config ) != 0 )
+       {
hunk ./source/kde-extra/smb4k/smb4k_kill.cpp.diff 1
+diff -ur --exclude='Makefile.*' --exclude='configure*' --exclude='*.kdev*' smb4k-0.7.5/utilities/smb4k_kill.cpp smb4k-0.7.5.sec/utilities/smb4k_kill.cpp
+--- smb4k-0.7.5/utilities/smb4k_kill.cpp	2006-08-26 10:28:16.000000000 +0200
++++ smb4k-0.7.5.sec/utilities/smb4k_kill.cpp	2006-12-13 08:53:27.000000000 +0100
+@@ -34,7 +34,7 @@
+ #include <unistd.h>
+ using namespace std;
+ 
+-#define SMB4K_KILL_VERSION 0.3
++#define SMB4K_KILL_VERSION 0.5
+ 
+ 
+ //
+@@ -105,7 +105,11 @@
+ 
+   char *p = new char[100];
+ 
+-  args[k] = strcpy( p, findprog( "kill" ) );
++  const char *prg = findprog( "kill" );
++
++  args[k] = strncpy( p, prg, 99 );
++  p[99] = '\0';    // Do this for security reasons (see #9631)
++
+   k++;
+ 
+   for ( int i = 1; i < argc; i++ )
+@@ -127,11 +131,12 @@
+ 
+       if ( strlen( argv[i] ) > 100 )
+       {
+-        cerr << "smb4k_kill: One or more arguments exceed 100 characters." << endl;
++        cerr << "smb4k_kill: One or more arguments exceed 100 characters" << endl;
+         exit( EXIT_FAILURE );
+       }
+ 
+-      args[k] = strcpy( t, argv[i] );
++      args[k] = strncpy( t, argv[i], 99 );
++      t[99] = '\0';
+       k++;
+ 
+       continue;
+@@ -140,6 +145,12 @@
+ 
+   args[k] = NULL;
+ 
++  if ( k >= 25 )
++  {
++    cerr << "smb4k_kill: There are too many arguments" << endl;
++    exit( EXIT_FAILURE );
++  }
++
+   if ( execve( args[0], args, envp ) == -1 )
+   {
+     int err_code = errno;
hunk ./source/kde-extra/smb4k/smb4k_mount.cpp.diff 1
+diff -ur --exclude='Makefile.*' --exclude='configure*' --exclude='*.kdev*' smb4k-0.7.5/utilities/smb4k_mount.cpp smb4k-0.7.5.sec/utilities/smb4k_mount.cpp
+--- smb4k-0.7.5/utilities/smb4k_mount.cpp	2006-08-26 10:28:16.000000000 +0200
++++ smb4k-0.7.5.sec/utilities/smb4k_mount.cpp	2006-12-13 08:53:27.000000000 +0100
+@@ -34,7 +34,7 @@
+ #include <unistd.h>
+ using namespace std;
+ 
+-#define SMB4K_MOUNT_VERSION 0.5
++#define SMB4K_MOUNT_VERSION 0.7
+ 
+ //
+ // Returns the information about the program
+@@ -297,7 +297,9 @@
+         exit( EXIT_FAILURE );
+       }
+ 
+-      args[k] = strcpy( p, findprog( "mount_smbfs" ) );
++      const char *mnt_prg = findprog( "mount_smbfs" );
++      args[k] = strncpy( p, mnt_prg, 99 );
++      p[99] = '\0';
+ #endif
+ 
+       k++;
+@@ -320,7 +322,9 @@
+         exit( EXIT_FAILURE );
+       }
+ 
+-      args[k] = strcpy( p, findprog( "mount_smbfs" ) );
++      const char *mnt_prg = findprog( "mount_smbfs" );
++      args[k] = strncpy( p, mnt_prg, 99 );
++      p[99] = '\0';
+ #endif
+ 
+       k++;
+@@ -356,7 +360,9 @@
+                 exit( EXIT_FAILURE );
+               }
+ 
+-              args[0] = strcpy( p, findprog( "mount" ) );
++              const char *mnt_prg = findprog( "mount" );
++              args[0] = strncpy( p, mnt_prg, 99 );
++              p[99] = '\0';
+             }
+             else
+             {
+@@ -370,11 +376,15 @@
+ 
+               if ( !strcmp( argv[i+1], "smbfs" ) )
+               {
+-                args[0] = strcpy( p, findprog( "smbmount" ) );
++                const char *mnt_prg = findprog( "smbmount" );
++                args[0] = strncpy( p, mnt_prg, 99 );
++                p[99] = '\0';
+               }
+               else if ( !strcmp( argv[i+1], "cifs" ) )
+               {
+-                args[0] = strcpy( p, findprog( "mount.cifs" ) );
++                const char *mnt_prg = findprog( "mount.cifs" );
++                args[0] = strncpy( p, mnt_prg, 99 );
++                p[99] = '\0';
+               }
+ 
+               // For smbmount and mount.cifs, we do not need the -t option.
+@@ -393,7 +403,7 @@
+       }
+ #endif
+ 
+-      char *t = new char[strlen( argv[i] )+1];
++      char *t = new char[500];
+ 
+       if ( !t )
+       {
+@@ -401,7 +411,9 @@
+         exit( EXIT_FAILURE );
+       }
+ 
+-      args[k] = strcpy( t, replace_special_characters( argv[i] ) );
++      const char *rsc = replace_special_characters( argv[i] );
++      args[k] = strncpy( t, rsc, 499 );
++      t[499] = '\0';
+       k++;
+ 
+       continue;
+@@ -410,6 +422,12 @@
+ 
+   args[k] = NULL;
+ 
++  if ( k >= 25 )
++  {
++    cerr << "smb4k_mount: There are too many arguments" << endl;
++    exit( EXIT_FAILURE );
++  }
++
+   // FIXME: Do we need the following under FreeBSD?
+ 
+   if ( !suid_arg_exists )
hunk ./source/kde-extra/smb4k/smb4k_umount.cpp.diff 1
+diff -ur --exclude='Makefile.*' --exclude='configure*' --exclude='*.kdev*' smb4k-0.7.5/utilities/smb4k_umount.cpp smb4k-0.7.5.sec/utilities/smb4k_umount.cpp
+--- smb4k-0.7.5/utilities/smb4k_umount.cpp	2006-08-26 10:28:16.000000000 +0200
++++ smb4k-0.7.5.sec/utilities/smb4k_umount.cpp	2006-12-13 08:53:27.000000000 +0100
+@@ -41,12 +41,10 @@
+ #elif defined(__FreeBSD__)
+ #include <sys/param.h>
+ #include <sys/mount.h>
+-#elif defined(__irix__)
+-#include <sys/types.h>
+ #endif
+ using namespace std;
+ 
+-#define SMB4K_UMOUNT_VERSION 0.9
++#define SMB4K_UMOUNT_VERSION 0.11
+ 
+ //
+ // Returns the information about the program
+@@ -304,23 +302,27 @@
+ 
+   bool ok = false;
+ 
+-#if !defined(__FreeBSD__) && !defined(__solaris__) && !defined(USE_SOLARIS) && !defined(__irix__)
++#if !defined(__FreeBSD__) && !defined(__solaris__) && !defined(USE_SOLARIS)
+   // First entry is for CIFS, the second for SMBFS.
+   if ( (uint)filesystem.f_type == 0xFF534D42 || (uint)filesystem.f_type == 0x517B )
+   {
+-    strcpy( fs_buf, (uint)filesystem.f_type == 0xFF534D42 ? "cifs" : "smbfs" );
++    const char *fs_type = (uint)filesystem.f_type == 0xFF534D42 ? "cifs" : "smbfs";
++    (void) strncpy( fs_buf, fs_type, strlen( fs_type ) + 1 );
+ #elif defined(__FreeBSD__)
+   if ( !strcmp( filesystem.f_fstypename, "smbfs" ) )
+   {
+-    strcpy( fs_buf, "smbfs" );
++    const char *fs_type = "smbfs";
++    (void) strncpy( fs_buf, fs_type, strlen( fs_type ) + 1 );
+ #elif defined(__solaris__) || defined(USE_SOLARIS)
+   if ( (uint)filesystem.f_basetype == 0xFF534D42 || (uint)filesystem.f_basetype == 0x517B )
+   {
+-    strcpy( fs_buf, (uint)filesystem.f_basetype == 0xFF534D42 ? "cifs" : "smbfs" );
++    const char *fs_type = (uint)filesystem.f_basetype == 0xFF534D42 ? "cifs" : "smbfs";
++    (void) strncpy( fs_buf, fs_type, strlen( fs_type ) + 1 );
+ #elif defined(__irix__)
+   if ( (uint)filesystem.f_fstyp == 0xFF534D42 || (uint)filesystem.f_fstyp == 0x517B )
+   {
+-    strcpy( fs_buf, (uint)filesystem.f_fstyp == 0xFF534D42 ? "cifs" : "smbfs" );
++    const char *fs_type = (uint)filesystem.f_fstyp == 0xFF534D42 ? "cifs" : "smbfs"
++    (void) strncpy( fs_buf, fs_type, strlen( fs_type ) + 1 );
+ #endif
+     ok = true;
+   }
+@@ -375,7 +377,8 @@
+     }
+     else if ( !strcmp( argv[i], "--cifs" ) || !strcmp( argv[i], "--smbfs" ) )
+     {
+-      (void) strcpy( fs_arg, argv[i] );
++      (void) strncpy( fs_arg, argv[i], 9 );
++      fs_arg[9] = '\0';
+ 
+       continue;
+     }
+@@ -387,7 +390,7 @@
+ 
+       if ( argv[i][0] == '/' || ((argv[i][0] == '\047' /* ' */|| argv[i][0] == '\042' /* " */) && argv[i][1] == '/') )
+       {
+-        char *path = new char[strlen( argv[i] )+1];
++        char *path = new char[500];
+ 
+         if ( !path )
+         {
+@@ -395,7 +398,9 @@
+           exit( EXIT_FAILURE );
+         }
+ 
+-        args[k++] = strcpy( path, replace_special_characters( argv[i] ) );
++        const char *rsc = replace_special_characters( argv[i] );
++        args[k++] = strncpy( path, rsc, 499 );
++        path[499] = '\0';
+ 
+         char fs[6];
+ 
+@@ -415,11 +420,15 @@
+             {
+               if ( !strcmp( fs, "smbfs" ) )
+               {
+-                args[0] = strcpy( t, findprog( "smbumount" ) );
++                const char *umnt_prg = findprog( "smbumount" );
++                args[0] = strncpy( t, umnt_prg, 254 );
++                t[254] = '\0';
+               }
+               else if ( !strcmp( fs, "cifs" ) )
+               {
+-                args[0] = strcpy( t, findprog( "umount.cifs" ) );
++                const char *umnt_prg = findprog( "umount.cifs" );
++                args[0] = strncpy( t, umnt_prg, 254 );
++                t[254] = '\0';
+               }
+               else
+               {
+@@ -427,11 +436,15 @@
+                 // file system info.
+                 if ( !strcmp( fs_arg, "--smbfs" ) )
+                 {
+-                  args[0] = strcpy( t, findprog( "smbumount" ) );
++                  const char *umnt_prg = findprog( "smbumount" );
++                  args[0] = strncpy( t, umnt_prg, 254 );
++                  t[254] = '\0';
+                 }
+                 else if ( !strcmp( fs_arg, "--cifs" ) )
+                 {
+-                  args[0] = strcpy( t, findprog( "umount.cifs" ) );
++                  const char *umnt_prg = findprog( "umount.cifs" );
++                  args[0] = strncpy( t, umnt_prg, 254 );
++                  t[254] = '\0';
+                 }
+                 else
+                 {
+@@ -447,13 +460,17 @@
+             {
+               if ( !strcmp( fs, "smbfs" ) || !strcmp( fs, "cifs" ) )
+               {
+-                args[0] = strcpy( t, findprog( "umount" ) );
++                const char *umnt_prg = findprog( "umount" );
++                args[0] = strncpy( t, umnt_prg, 254 );
++                t[254] = '\0';
+               }
+               else
+               {
+                 if ( !strcmp( fs_arg, "--smbfs" ) || !strcmp( fs_arg, "--cifs" ) )
+                 {
+-                  args[0] = strcpy( t, findprog( "umount" ) );
++                  const char *umnt_prg = findprog( "umount" );
++                  args[0] = strncpy( t, umnt_prg, 254 );
++                  t[254] = '\0';
+                 }
+                 else
+                 {
+@@ -482,7 +499,7 @@
+       }
+       else
+       {
+-        char *t = new char[strlen( argv[i] )+1];
++        char *t = new char[500];
+ 
+         if ( !t )
+         {
+@@ -490,7 +507,8 @@
+           exit( EXIT_FAILURE );
+         }
+ 
+-        args[k++] = strcpy( t, argv[i] );
++        args[k++] = strncpy( t, argv[i], 499 );
++        t[499] = '\0';
+ 
+         continue;
+       }
+@@ -499,6 +517,12 @@
+ 
+   args[k] = NULL;
+ 
++  if ( k >= 5 )
++  {
++    cerr << "smb4k_umount: Too many arguments" << endl;
++    exit( EXIT_FAILURE );
++  }
++
+   if ( execve( args[0], args, envp ) == -1 )
+   {
+     int err_code = errno;
hunk ./source/kde-extra/smb4k/smb4kfileio.cpp.diff 1
+diff -ur --exclude='Makefile.*' --exclude='configure*' --exclude='*.kdev*' smb4k-0.7.5/smb4k/core/smb4kfileio.cpp smb4k-0.7.5.sec/smb4k/core/smb4kfileio.cpp
+--- smb4k-0.7.5/smb4k/core/smb4kfileio.cpp	2006-11-22 20:44:26.000000000 +0100
++++ smb4k-0.7.5.sec/smb4k/core/smb4kfileio.cpp	2006-12-18 07:40:35.000000000 +0100
+@@ -42,6 +42,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <errno.h>
++#include <fcntl.h>
+ #include <string.h>
+ 
+ // application specific includes
+@@ -53,7 +54,7 @@
+ 
+ // static varibles
+ static Smb4KFileIO::FileItem sudoers_item;
+-static QFile lock_file;
++static QCString lock_file;
+ static bool shutdown = false;
+ 
+ // Create a unique temporary directory.
+@@ -89,7 +90,7 @@
+   m_temp_dir = QDir( createtmpdir( tmp_dir ) );
+ 
+   m_state = Idle;
+-  
++
+   m_error_code = None;
+ 
+   connect( m_proc, SIGNAL( receivedStderr( KProcess *, char *, int ) ),
+@@ -608,9 +609,14 @@
+ 
+   if ( !failed && m_temp_dir.exists() )
+   {
+-    char tmpf[] = "XXXXXX";
++    QCString template_string = m_temp_dir.canonicalPath().local8Bit()+"/XXXXXX";
++    char tmpf[template_string.length()+1];
++    (void) qstrncpy( tmpf, template_string, template_string.length()+1 );
++
++    QFile tmp_file;
++    int file_descriptor;
+ 
+-    if ( mktemp( tmpf ) == NULL )
++    if ( (file_descriptor = mkstemp( tmpf )) == -1 )
+     {
+       int error_code = errno;
+ 
+@@ -618,12 +624,7 @@
+       return false;
+     }
+ 
+-    QFile tmp_file( tmpf );
+-    QDir::setCurrent( m_temp_dir.canonicalPath() );
+-    QFileInfo tmp_file_info( tmp_file );
+-    tmp_file_info.setCaching( false );
+-
+-    if ( !tmp_file.exists() && tmp_file.open( IO_WriteOnly ) )
++    if ( tmp_file.open( IO_WriteOnly, file_descriptor ) )
+     {
+       QTextStream ts( &tmp_file );
+       ts.setEncoding( QTextStream::Locale );
+@@ -633,33 +634,18 @@
+     }
+     else
+     {
+-      showCoreError( ERROR_WRITING_FILE, tmp_file_info.absFilePath() );
++      showCoreError( ERROR_WRITING_FILE, tmp_file.name() );
+       return false;
+     }
+ 
+-    // Now move it to the right location.
+-    if ( tmp_file.exists() && tmp_file_info.isFile() )
+-    {
+-      m_state = writeSU;
++    // Now move the file to the right location.
++    m_state = writeSU;
+ 
+-      QString command = "smb4k_mv "+item->owner()+":"+item->group()+" "+item->permissions()+" "+KProcess::quote( tmp_file_info.absFilePath() )+" "+KProcess::quote( item->path() );
++    QString command = "smb4k_mv "+item->owner()+":"+item->group()+" "+item->permissions()+" "+KProcess::quote( tmpf )+" "+KProcess::quote( item->path() );
+ 
+-      *m_proc << QString( "kdesu %1 ; rm -f %2" ).arg( command, KProcess::quote( tmp_file_info.absFilePath() ) );
+-      m_proc->start( KProcess::NotifyOnExit, KProcess::Stderr );
+-    }
+-    else
+-    {
+-      if ( !tmp_file.exists() )
+-      {
+-        showCoreError( ERROR_FILE_NOT_FOUND, tmp_file_info.absFilePath() );
+-      }
+-      else
+-      {
+-        showCoreError( ERROR_WRITING_FILE, tmp_file_info.absFilePath() );
+-      }
++    *m_proc << QString( "kdesu %1 ; rm -f %2" ).arg( command, KProcess::quote( tmpf ) );
+ 
+-      return false;
+-    }
++    m_proc->start( KProcess::NotifyOnExit, KProcess::Stderr );
+   }
+   else
+   {
+@@ -857,106 +843,130 @@
+ 
+ bool Smb4KFileIO::write_lock_file( const QString &filename )
+ {
+-  QDir dir( "/tmp" );
+-  bool lock_file_exists = false;
+-  bool ok = false;
+-
+-  const QFileInfoList *list = dir.entryInfoList( QDir::Files, QDir::Name );
+-
+-  if ( list != 0 )
++  // Define the path of the lock file.
++  // For operating systems that do not know the /var/lock
++  // directory (like FreeBSD), we fall back to either 
++  // /var/tmp or if this also does not exist to /tmp.
++  if ( lock_file.isEmpty() )
+   {
+-    for ( QFileInfoList::ConstIterator it = list->begin(); it != list->end(); ++it )
++    QDir dir( "/var/lock/" );
++
++    if ( dir.exists() )
++    {
++      lock_file = "/var/lock/smb4k.lock";
++    }
++    else
+     {
+-      (*it)->setCaching( false );
++      dir.setPath( "/var/tmp" );
+ 
+-      if ( (*it)->exists() && (*it)->fileName().compare( "smb4k.lock" ) == 0 && (*it)->fileName().length() == 10 )
++      if ( dir.exists() )
+       {
+-        if ( !(*it)->isSymLink() && (*it)->isReadable() && (*it)->isWritable() )
+-        {
+-          lock_file.setName( (*it)->absFilePath() );
+-          lock_file_exists = true;
+-        }
+-        else
+-        {
+-          // We will stop at the first error that occurrs.
+-          if ( (*it)->isSymLink() )
+-          {
+-            showCoreError( ERROR_LOCK_FILE_IS_SYMLINK, (*it)->absFilePath() );
+-          }
+-          else if ( !(*it)->isReadable() )
+-          {
+-            showCoreError( ERROR_READING_FILE, (*it)->absFilePath() );
+-          }
+-          else if ( !(*it)->isWritable() )
+-          {
+-            showCoreError( ERROR_WRITING_FILE, (*it)->absFilePath() );
+-          }
+-
+-          emit error_suid_writing();
+-          emit finished_suid_writing();
+-          return ok;
+-        }
+-
+-        break;
++        lock_file = "/var/tmp/smb4k.lock";
+       }
+       else
+       {
+-        continue;
++        lock_file = "/tmp/smb4k.lock";
+       }
+     }
+   }
+ 
+-  if ( !lock_file_exists )
++  int file_descriptor;
++  bool ok = false;
++
++  // Create the lock file if necessary and open it:
++  if ( (file_descriptor = open( lock_file, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH )) == -1 )
+   {
+-    lock_file.setName( "/tmp/smb4k.lock" );
++    // Error out if the opening failed:
++    showCoreError( ERROR_OPENING_FILE, lock_file );
+ 
+-    if ( lock_file.open( IO_WriteOnly ) )
+-    {
+-      QTextStream ts( &lock_file );
+-      ts.setEncoding( QTextStream::Locale );
++    return ok; // false
++  }
++  else
++  {
++    // Check what we actually opened:
+ 
+-      ts << getenv( "USER" ) << ":" << filename << endl;
+-    }
+-    else
++    struct stat file_stat;
++
++    if ( fstat( file_descriptor, &file_stat ) == -1 )
+     {
+-      showCoreError( ERROR_WRITING_FILE, lock_file.name() );
++      // Error out if we could not get the information about the file:
++      int error_number = errno;
++
++      showCoreError( ERROR_GETTING_PERMISSIONS, strerror( error_number ) );
+ 
+       return ok;
+     }
+ 
+-    lock_file.close();
+-    ok = true;
+-  }
+-  else
+-  {
+-    if ( lock_file.open( IO_ReadWrite ) )
++    if ( !S_ISREG( file_stat.st_mode ) || S_ISFIFO( file_stat.st_mode ) || S_ISLNK( file_stat.st_mode ) )
+     {
+-      QTextStream ts( &lock_file );
+-      ts.setEncoding( QTextStream::Locale );
++      // Close the file and error out, if we have opened an
++      // "irregular" file (i.e. a symlink, a fifo, etc.).
++
++      showCoreError( ERROR_LOCK_FILE_IS_SYMLINK, lock_file );
++
++      if ( close( file_descriptor ) == -1 )
++      {
++        int error_number = errno;
++
++        showCoreError( ERROR_UNKNOWN, strerror( error_number ) );
++      }
++
++      return ok; // false
++    }
++    else
++    {
++      // Continue if the file is regular.
+ 
+-      QStringList contents = QStringList::split( '\n', ts.read(), false );
+-      QString test_string = QString( ":%2" ).arg( filename );
++      char buffer[1000];
++      ssize_t size;
++
++      if ( (size = read( file_descriptor, buffer, 1000 )) == -1 )
++      {
++        showCoreError( ERROR_READING_FILE, lock_file );
++
++        return ok; // false
++      }
++
++      if ( size >= 1000 )
++      {
++        showCoreError( ERROR_UNKNOWN, i18n( "Buffer size exceeded" ) );
++
++        return ok; // false
++      }
++
++      QStringList contents = QStringList::split( '\n', QString::fromLocal8Bit( buffer, size ), false );
++      QString test_string = ":"+filename;
+       QString entry = contents.grep( test_string, true ).join( "\n" ).stripWhiteSpace();
+ 
+       if ( !entry.isEmpty() )
+       {
+         showCoreError( ERROR_LOCKED, entry );
+ 
+-        return ok;
++        return ok; // false
+       }
+       else
+       {
+-        ts << getenv( "USER" ) << ":" << filename << endl;
+-      }
++        contents << QString( "%1:%2" ).arg( getenv( "USER" ) ).arg( filename );
++        QCString out = contents.join( "\n" ).local8Bit();
+ 
+-      lock_file.close();
+-      ok = true;
+-    }
+-    else
+-    {
+-      showCoreError( ERROR_READING_FILE, lock_file.name() );
++        if ( write( file_descriptor, out, out.length() ) == -1 )
++        {
++          showCoreError( ERROR_WRITING_FILE, lock_file );
+ 
+-      return ok;
++          return ok; // false
++        }
++
++        if ( close( file_descriptor ) == -1 )
++        {
++          int error_number = errno;
++
++          showCoreError( ERROR_UNKNOWN, strerror( error_number ) );
++
++          return ok; // false
++        }
++
++        ok = true;
++      }
+     }
+   }
+ 
+@@ -970,101 +980,170 @@
+ 
+ bool Smb4KFileIO::remove_lock_file()
+ {
+-  QDir dir( "/tmp" );
+-  bool lock_file_exists = false;
+-  bool ok = true;
++  // We already have the name and location of the lock 
++  // file, so we do not need to define it here.
++
++  int file_descriptor;
++  bool ok = false;
+ 
+-  const QFileInfoList *list = dir.entryInfoList( QDir::Files, QDir::Name );
++  // Open the lock file:
++  if ( (file_descriptor = open( lock_file, O_RDWR )) == -1 )
++  {
++    // Error out if the opening failed:
++    if ( !shutdown )
++    {
++      showCoreError( ERROR_OPENING_FILE, lock_file );
++    }
+ 
+-  if ( list != 0 )
++    return ok; // false
++  }
++  else
+   {
+-    for ( QFileInfoList::ConstIterator it = list->begin(); it != list->end(); ++it )
++    // Check what we actually opened:
++
++    struct stat file_stat;
++
++    if ( fstat( file_descriptor, &file_stat ) == -1 )
++    {
++      // Error out if we could not get the information about the file:
++      int error_number = errno;
++
++      if ( !shutdown )
++      {
++        showCoreError( ERROR_GETTING_PERMISSIONS, strerror( error_number ) );
++      }
++
++      return ok;
++    }
++
++    if ( !S_ISREG( file_stat.st_mode ) || S_ISFIFO( file_stat.st_mode ) || S_ISLNK( file_stat.st_mode ) )
+     {
+-      (*it)->setCaching( false );
++      // Close the file and error out, if we have opened an
++      // "irregular" file (i.e. a symlink, a fifo, etc.).
+ 
+-      if ( (*it)->exists() && (*it)->fileName().compare( "smb4k.lock" ) == 0 && (*it)->fileName().length() == 10 )
++      if ( !shutdown )
+       {
+-        if ( !(*it)->isSymLink() && (*it)->isReadable() && (*it)->isWritable() )
++        showCoreError( ERROR_LOCK_FILE_IS_SYMLINK, lock_file );
++      }
++
++      if ( close( file_descriptor ) == -1 )
++      {
++        int error_number = errno;
++
++        if ( !shutdown )
+         {
+-          lock_file.setName( (*it)->absFilePath() );
+-          lock_file_exists = true;
++          showCoreError( ERROR_UNKNOWN, strerror( error_number ) );
+         }
+-        else
+-        {
+-          if ( !shutdown )
+-          {
+-            // We will stop at the first error that occurrs.
+-            if ( (*it)->isSymLink() )
+-            {
+-              showCoreError( ERROR_LOCK_FILE_IS_SYMLINK, (*it)->absFilePath() );
+-            }
+-            else if ( !(*it)->isReadable() )
+-            {
+-              showCoreError( ERROR_READING_FILE, (*it)->absFilePath() );
+-            }
+-            else if ( !(*it)->isWritable() )
+-            {
+-              showCoreError( ERROR_WRITING_FILE, (*it)->absFilePath() );
+-            }
+-          }
++      }
+ 
+-          emit finished_suid_writing();
+-          return !ok;
++      return ok; // false
++    }
++    else
++    {
++      // Continue if the file is regular.
++
++      char buffer[1000];
++      ssize_t size;
++
++      if ( (size = read( file_descriptor, buffer, 1000 )) == -1 )
++      {
++        if ( !shutdown )
++        {
++          showCoreError( ERROR_READING_FILE, lock_file );
+         }
+ 
+-        break;
++        return ok; // false
+       }
+-      else
++
++      if ( size >= 1000 )
+       {
+-        continue;
++        if ( !shutdown )
++        {
++          showCoreError( ERROR_UNKNOWN, i18n( "Buffer size exceeded" ) );
++        }
++
++        return ok; // false
+       }
+-    }
+-  }
+ 
+-  if ( lock_file_exists )
+-  {
+-    QStringList contents;
++      QStringList contents = QStringList::split( '\n', QString::fromLocal8Bit( buffer, size ), false );
+ 
+-    if ( lock_file.open( IO_ReadOnly ) )
+-    {
+-      QTextStream ts( &lock_file );
+-      ts.setEncoding( QTextStream::Locale );
++      // Prepare the contents of the file and write it to the disk.
++      // It it should be empty, remove the lock file.
++      for ( QStringList::Iterator it = contents.begin(); it != contents.end(); it++ )
++      {
++        if ( (*it).startsWith( QString( getenv( "USER" ) )+":" ) )
++        {
++          *it = QString::null;
+ 
+-      contents = QStringList::split( '\n', ts.read().stripWhiteSpace(), false );
++          continue;
++        }
++        else
++        {
++          continue;
++        }
++      }
+ 
+-      lock_file.close();
+-    }
++      contents.remove( QString::null );
+ 
+-    for ( QStringList::Iterator it = contents.begin(); it != contents.end(); ++it )
+-    {
+-      if ( (*it).startsWith( getenv( "USER" ) ) )
++      if ( !contents.isEmpty() )
+       {
+-        *it = QString::null;
+-        continue;
++        // Write the remaining contents to the lock file:
++
++        QCString out = contents.join( "\n" ).local8Bit();
++
++        if ( write( file_descriptor, out, out.length() ) == -1 )
++        {
++          if ( !shutdown )
++          {
++            showCoreError( ERROR_WRITING_FILE, lock_file );
++          }
++
++          return ok; // false
++        }
++
++        if ( close( file_descriptor ) == -1 )
++        {
++          int error_number = errno;
++
++          if ( !shutdown )
++          {
++            showCoreError( ERROR_UNKNOWN, strerror( error_number ) );
++          }
++
++          return ok; // false
++        }
++
++        ok = true;
+       }
+       else
+       {
+-        continue;
+-      }
+-    }
++        // Close and remove the lock file:
+ 
+-    contents.remove( QString::null );
++        if ( close( file_descriptor ) == -1 )
++        {
++          int error_number = errno;
+ 
+-    if ( !contents.isEmpty() )
+-    {
+-      if ( lock_file.open( IO_WriteOnly ) )
+-      {
+-        QTextStream ts( &lock_file );
+-        ts.setEncoding( QTextStream::Locale );
++          if ( !shutdown )
++          {
++            showCoreError( ERROR_UNKNOWN, strerror( error_number ) );
++          }
++
++          return ok; // false
++        }
++
++        if ( unlink( lock_file ) == -1 )
++        {
++          if ( !shutdown )
++          {
++            showCoreError( ERROR_UNKNOWN, lock_file );
++          }
+ 
+-        ts << contents.join( "\n" ) << endl;
+-        lock_file.close();
++          return ok; // false
++        }
++
++        ok = true;
+       }
+     }
+-    else
+-    {
+-      ok = lock_file.remove();
+-    }
+   }
+ 
+   return ok;
+@@ -1080,7 +1159,7 @@
+   if ( m_buffer.contains( "smb4k_cat" ) != 0 )
+   {
+     m_error_code = Cat;
+-    
++
+     showCoreError( ERROR_READING_FILE, sudoers_item.path() );
+     return;
+   }
+@@ -1105,7 +1184,7 @@
+     case readSudoers:
+       m_state = Idle;
+       m_proc->clearArguments();
+-      
++
+       if ( m_error_code == None )
+       {
+         processSudoers();
+@@ -1116,7 +1195,7 @@
+         emit finished_suid_writing();
+         remove_lock_file();
+       }
+-      
++
+       m_buffer = QString::null;
+       break;
+     default:
+@@ -1124,7 +1203,7 @@
+       m_proc->clearArguments();
+       break;
+   }
+-  
++
+   m_error_code = None;
+ }
+ 
}


More information about the Frugalware-darcs mailing list