Description of problem: in the past krusader allow some operation with files in the rpm as copying and reading text files Version-Release number of selected component (if applicable): all qt6 How reproducible: always Steps to Reproduce: 1.open rpm files and refresh(right click) to show content 2.try copy some files(F5)/ or try open text files for reading(F3) 3.show error with permission(access denied) Actual results: krusader is not able allow operation with files as before Expected results: works as before if possible Additional info:
konsole output martin@fedora:~$ krusader kf.i18n: KLocalizedString: Domain is not set for this string, translation will not work. Please see https://api.kde.org/frameworks/ki18n/html/prg_guide.html msgid: "No jobs" msgid_plural: "" msgctxt: "" 07:49:40.594-warning default unknown@0 # Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8. Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead. If this causes problems, reconfigure your locale. See the locale(1) manual for more information. 07:49:40.878-warning kf.i18n unknown@0 # Trying to convert empty KLocalizedString to QString. Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8. Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead. If this causes problems, reconfigure your locale. See the locale(1) manual for more information. Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8. Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead. If this causes problems, reconfigure your locale. See the locale(1) manual for more information. QIODevice::setTextModeEnabled (KrLinecountingProcess): The device is not open 07:49:47.326-warning kf.kio.workers.file unknown@0 # readData() returned -1 07:49:47.326-warning kf.kio.core unknown@0 # Connection::send() called with connection not inited QIODevice::setTextModeEnabled (KrLinecountingProcess): The device is not open 07:52:30.076-warning kf.kio.workers.file unknown@0 # readData() returned -1 07:52:30.076-warning kf.kio.core unknown@0 # Connection::send() called with connection not inited
--- a/plugins/krarc/krarc.cpp +++ b/plugins/krarc/krarc.cpp @@ -378,7 +378,6 @@ QDir::setCurrent(arcTempDir); SET_KRCODEC - proc.setTextModeEnabled(false); proc.start(); RESET_KRCODEC @@ -1030,6 +1029,7 @@ QString kio_krarcProtocol::localeEncodedString(QString str) { // Note: KRFUNC was not used here in order to avoid filling the log with too much information + return str; if (noencoding) return str;
Created attachment 2130741 [details] tempomary Patch for bug in krarc I managed to debug this issue with AI, compile a custom SRPM via mock, and confirmed the fix. The bug is caused by two Qt6 porting regressions inside plugins/krarc/krarc.cpp. Calling proc.setTextModeEnabled(false); before the process starts triggers a 'Device is not open' error and breaks the KIO worker stream. The custom localeEncodedString() hack using private unicode characters (0xE000) completely breaks the cpio command in Qt6. Bypassing it (e.g., returning the string directly) instantly resolves the 'Access Denied' / 'readData() returned -1' issue and allows reading and copying files from RPMs again. I am attaching a temporary .patch that makes the module functional again on modern UTF-8 systems, though upstream might need to rewrite the codec logic properly using Qt6 QStringEncoder."
https://bugs.kde.org/show_bug.cgi?id=516617