LINUX.ORG.RU

Патч для kdeutils-3.5.10 , исправляет поддержку 7zip архивов.


1

1

Да, видать не пользовался я совсем утилитками этими - такой баг пропустил!

Bug: https://bugs.kde.org/show_bug.cgi?id=172706

Оригинальный патч от АЛЬТ'а (для kdeutils 3.5.8) не накладывается, обошёлся таким минимумом:

--- ark/sevenzip.cpp.orig       2007-01-15 14:25:37.000000000 +0300
+++ ark/sevenzip.cpp    2015-09-13 12:38:50.821528560 +0300
@@ -40,6 +40,8 @@
 #include "arkutils.h"
 #include "filelistview.h"

+#include <qtextcodec.h>
+
 SevenZipArch::SevenZipArch( ArkWidget *gui, const QString &filename )
   : Arch( gui, filename ), m_nameColumnPos( -1 )
 {
@@ -241,14 +243,17 @@
   }
 }

-bool SevenZipArch::processLine( const QCString& _line )
+bool SevenZipArch::processLine( const QCString &_line )
 {
-  QCString line( _line );
+  QString line;
   QString columns[ 11 ];
   unsigned int pos = 0;
   int strpos, len;

-  columns[ 0 ] = line.right( line.length() - m_nameColumnPos +1);
+  QTextCodec *codec = QTextCodec::codecForLocale();
+  line = codec->toUnicode( _line );
+
+  columns[ 0 ] = line.right( line.length() - m_nameColumnPos);
   line.truncate( m_nameColumnPos );

   // Go through our columns, try to pick out data, return silently on failure
@@ -275,6 +280,8 @@
     columns[ curCol->colRef ] = line.mid( strpos, len );
   }

+  // Separated directories pass
+  if(columns[4].length() && columns[4][0] == 'D') return true;

   if ( m_dateCol >= 0 )
   {

Источник дополнительного вдохновения: https://git.trinitydesktop.org/cgit/tdeutils/commit/ark/sevenzip.cpp?id=1c849...

★★★★★

13.09.2015, kdeutils 3.5.8

Привет.

X10Dead ★★★★★
()

2007-01-15

с разморозкой, сообщаю уж было/есть два кризиса, и сейчас ещё не время просыпаться! Ложись в анабиоз снова! =)

Atlant ★★★★★
()

2007-01-15

чувак, лучше оставайся там)

anonymous
()
Ответ на: комментарий от Atlant

Если всё время спать - то проспишь всё на свете ...

Подумалось, что лучше куски патчей в одну ветку скидывать, а не делать 2-3-больше веток. Оно конечно предполагается потом выложить слакбилды куда-нибудь (это пока пересбор под сильно апгрейженную slackware 13.37 - новый gcc, но часть либ старая. И это сказывается!)

Патч под kdegraphics-3.5.10, убивает нафиг поддержку gphoto2 2.4.x, вбивает поддержку 2.5.x (собирается на 2.5.2 , модуль для kcontrol по крайней мере даёт посмотреть на список камер)

--- kdegraphics-3.5.10/kamera/kcontrol/kameradevice.cpp.orig    2006-07-22 08:10:31.000000000 +0000
+++ kdegraphics-3.5.10/kamera/kcontrol/kameradevice.cpp 2015-09-11 20:08:11.000000000 +0000
@@ -118,9 +118,9 @@
                gp_port_info_list_new(&il);
                gp_port_info_list_load(il);
                gp_port_info_list_get_info(il, gp_port_info_list_lookup_path(il, m_path.local8Bit().data()), &info);
-               gp_port_info_list_free(il);
                gp_camera_set_abilities(m_camera, m_abilities);
                gp_camera_set_port_info(m_camera, info);
+               gp_port_info_list_free(il);

                // this might take some time (esp. for non-existant camera) - better be done asynchronously
                result = gp_camera_init(m_camera, glob_context);
@@ -346,7 +346,9 @@
        }
        for (int i = 0; i < gphoto_ports; i++) {
                if (gp_port_info_list_get_info(list, i, &info) >= 0) {
-                       if (strncmp(info.path, "serial:", 7) == 0)
-                               m_serialPortCombo->insertItem(QString::fromLatin1(info.path).mid(7));
+                       char *xpath;
+                       gp_port_info_get_path (info, &xpath);
+                       if (strncmp(xpath, "serial:", 7) == 0)
+                               m_serialPortCombo->insertItem(QString::fromLatin1(xpath).mid(7));
                }
        }
--- kdegraphics-3.5.10/kamera/kioslave/kamera.cpp.orig  2007-10-08 09:48:41.000000000 +0000
+++ kdegraphics-3.5.10/kamera/kioslave/kamera.cpp       2015-09-11 20:20:04.000000000 +0000
@@ -55,10 +55,10 @@
 {
        KDE_EXPORT int kdemain(int argc, char **argv);

-       static void frontendCameraStatus(GPContext *context, const char *format, va_list args, void *data);
+       static void frontendCameraStatus(GPContext *context, const char *status, void *data);
        static unsigned int frontendProgressStart(
-               GPContext *context, float totalsize, const char *format,
-               va_list args, void *data
+               GPContext *context, float totalsize, const char *status,
+               void *data
        );
        static void frontendProgressUpdate(
                GPContext *context, unsigned int id, float current, void *data
@@ -785,11 +785,12 @@
                        return;
                }
                gp_port_info_list_get_info(port_info_list, idx, &port_info);
-               gp_port_info_list_free(port_info_list);
+

                // create a new camera object
                gpr = gp_camera_new(&m_camera);
                if(gpr != GP_OK) {
+                       gp_port_info_list_free(port_info_list);
                        error(KIO::ERR_UNKNOWN, gp_result_as_string(gpr));
                        return;
                }
@@ -805,6 +806,8 @@
                gp_camera_set_port_speed(m_camera, 0); // TODO: the value needs to be configurable
                kdDebug(7123) << "Opening camera model " << user << " at " << host << endl;

+               gp_port_info_list_free(port_info_list);
+
                QString errstr;
                if (!openCamera(errstr)) {
                        kdDebug(7123) << "Unable to init camera: " << gp_result_as_string(gpr) << endl;
@@ -857,10 +860,7 @@
        udsEntry.append(atom);

        atom.m_uds = UDS_NAME;
-       if (info.file.fields & GP_FILE_INFO_NAME)
-               atom.m_str = QString::fromLocal8Bit(info.file.name);
-       else
-               atom.m_str = name;
+       atom.m_str = name;
        udsEntry.append(atom);

        if (info.file.fields & GP_FILE_INFO_SIZE) {
@@ -986,10 +986,12 @@
 }

 unsigned int frontendProgressStart(
-       GPContext * /*context*/, float totalsize, const char *format, va_list args,
+       GPContext * /*context*/, float totalsize, const char *status,
        void *data
 ) {
        KameraProtocol *object = (KameraProtocol*)data;
+
+#if 0
        char *status;

        /* We must copy the va_list to walk it twice, or all hell
@@ -1023,14 +1025,23 @@

        object->infoMessage(QString::fromLocal8Bit(status));
        delete [] status;
+
+#endif
+       /* libgphoto2 2.5 has resolved this already, no need for print */
+       object->infoMessage(QString::fromLocal8Bit(status));
+
        object->totalSize((int)totalsize); // hack: call slot directly
        return GP_OK;
 }

 // this callback function is activated on every status message from gphoto2
-static void frontendCameraStatus(GPContext * /*context*/, const char *format, va_list args, void *data)
-{
+static void frontendCameraStatus(
+       GPContext * /*context*/,
+       const char *status,
+       void *data
+) {
        KameraProtocol *object = (KameraProtocol*)data;
+#if 0
        char *status;

        /* We must copy the va_list to walk it twice, or all hell
@@ -1063,4 +1074,8 @@
 #endif
        object->infoMessage(QString::fromLocal8Bit(status));
        delete [] status;
+#endif
+       object->infoMessage(QString::fromLocal8Bit(status));
 }
+
+

Патч был от TDE изначально, с поддержкой автоопределения версии gphoto, но я бэкпортирования с cmake на autotools не осилил.

https://git.trinitydesktop.org/cgit/tdegraphics/commit/?id=d4d1a5808bad1023c8...

Andrew-R ★★★★★
() автор топика
Ответ на: комментарий от Andrew-R

Подумалось, что лучше куски патчей

Подумай ещё раз и не выкладывай этот мусор вообще никуда.

slovazap ★★★★★
()
Ответ на: комментарий от Andrew-R

Здорово! А можешь запилить «натуральную» сортировку в KDE3 или TDE? Столкнулся тут с проблемой, что файлы во всех программах (и Konqueror Amarok и пр.) сортируются как

1
11
12
13
2
21
22
23
3
и т.д.
Ну пажаласта!!!

Deleted
()
Ответ на: комментарий от anonymous

Файлы и названия песен не я именовал, это аудио-книги так «нумеруют». По сто файлов на книгу.

Deleted
()
Последнее исправление: Chelobaka (всего исправлений: 1)

Я вот накатываю выборочно приложения из kde4, вроде dolphin, которым нормальных лёгких аналогов нет. В своё время использовал kde3, и не понимаю, зачем сейчас с ним пердолиться.

anonymous
()
Ответ на: комментарий от Deleted

http://kde.6490.n7.nabble.com/PATCH-naturalCompare-case-sensitivity-and-QStri... - а разве он уже не там, года с 2008-го (КДЕ 4?)

+int KStringHandler::naturalCompare(const QString &_a, const QString &_b, Qt::CaseSensitivity caseSensitivity) 
+{ 
+    // This method chops the input a and b into pieces of 
+    // digits and non-digits (a1.05 becomes a | 1 | . | 05) 
+    // and compares these pieces of a and b to each other 
+    // (first with first, second with second, ...). 
+    // 
+    // This is based on the natural sort order code code by Martin Pool 
+    // http://sourcefrog.net/projects/natsort/

это конечно посложнее моих патчиков. Я подумаю, но скорее всего ничего не рожу :(

Andrew-R ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Да я скорее не из-за суперлёгкости КДЕ3 с ним вожусь, а просто кучка прог, которые «просто работают» для него удобная подобралась (kmail/kpdf/konqueror) - а тут ещё оказывается их фиксить самому (почти) можно.

Новый софт конечно хорошо, но там и баги новые (их мне в свежем ядре/Mesa/X хватает), а тут можно выборочно патчить. Вот я запатчил было kdebase альтовскими патчами - а они с местной системой автомонтирования (наполовину HAL, наполовину udev со скриптами) не очень дружат. Откатил, пересобрал.

Andrew-R ★★★★★
() автор топика
Ответ на: комментарий от ZenitharChampion

В OpenSUSE кеды3 патченные уже. Вот сейчас например я вляпался в этот баг: https://bugzilla.novell.com/show_bug.cgi?id=793548#c7 (Bug 793548 - kdeutils3 fails for 32-bit architecture in Factory) - который привел к вот этому простому патчу на спек https://build.opensuse.org/request/show/145805#

@@ -130,6 +130,9 @@
 pushd klaptopdaemon/linux
 %patch16
 popd
+sed -i 1i\ '#define HAVE_STRLCAT' ksim/monitors/snmp/snmp.cpp
+sed -i 1i\ '#define HAVE_STRLCAT' ksim/monitors/snmp/value.cpp
+sed -i 1i\ '#define HAVE_STRLCAT' ksim/monitors/snmp/session.cpp
 
 %ifarch s390 s390x
 rm -rf kfloppy doc/kfloppy

компилим-с. (те же три строчки в слакбилд вставил). Удивительно, но обновление net-snmp до той версии, что у Слаквари в -current (5.7.3)- не помогло, хотя там вроде баг с экспортируемой функцией пофиксили.

НО оказалось что в Slackware-14.1 вообще по-умолчанию 7zip нема, так что его я тоже второй раз компилю из слакбилда.

Andrew-R ★★★★★
() автор топика

Пиши в Тринити, если они ещё живы.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.