[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