diff --git a/COPYRIGHT b/COPYRIGHT
index 933e771..3ac5369 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -16,11 +16,6 @@ Files: resources/rapydscript/*
Copyright: Various
License: BSD
-Files: src/unrar/*
-Copyright: Various
-License: Non-free
- Code can be distributed freely.
-
Files: src/html5lib/*
Copyright: Copyright (c) 2006-2013 James Graham and other contributors
License: Expat
diff --git a/Changelog.yaml b/Changelog.yaml
index e4e041d..8105931 100644
--- a/Changelog.yaml
+++ b/Changelog.yaml
@@ -67,7 +67,7 @@
- title: "Save to disk: Dont error out if the user deletes all formats to be saved."
- - title: "Linux binary: Fix calibre not starting on systems where QT_QPA_PLATFORM is set to use wayland"
+ - title: "GNU/Linux binary: Fix calibre not starting on systems where QT_QPA_PLATFORM is set to use wayland"
improved recipes:
- The Economist
@@ -94,7 +94,7 @@
bug fixes:
- title: "Fix a regression that caused clicking the clear button in the main search bar to not unapply the current search until enter is pressed."
- - title: "Linux: Fix a regression causing calibre to fail to start on systems with no DBUS session bus"
+ - title: "GNU/Linux: Fix a regression causing calibre to fail to start on systems with no DBUS session bus"
- title: "Browser viewer: Fix body font being forced to sans-serif, overriding in book and user stylesheet settings"
@@ -134,7 +134,7 @@
- title: "Book details panel: Fix metadata field titles not being top aligned"
- - title: "Linux: Fix long startup delay on systems that do not have a desktop notification service running"
+ - title: "GNU/Linux: Fix long startup delay on systems that do not have a desktop notification service running"
- title: "3.11.1 fixes a couple of regression in 3.11.0 that broke configuring Get books and creating catalogs"
@@ -245,12 +245,12 @@
- title: "Book details popup window: Show the cover size in the bottom right corner if the option to show cover size in the Book details panel is set."
tickets: [1716520]
- - title: "Linux: Fix regression that broke using calibre on some older VNC servers"
+ - title: "GNU/Linux: Fix regression that broke using calibre on some older VNC servers"
- title: "Browser viewer: Do not fail if the book contains javascript that has errors."
tickets: [1715781]
- - title: "Linux: Fix file open dialog on older KDE desktops not working correctly."
+ - title: "GNU/Linux: Fix file open dialog on older KDE desktops not working correctly."
tickets: [1715648]
- title: "Update Ozon.ru metadata plugin for website changes."
@@ -262,7 +262,7 @@
- title: "Conversion: Expand -epub-writing-mode to -webkit-writing-mode and writing-mode properties for maximum compatibility."
tickets: [1713509]
- - title: "Linux: Fix SONY PRS-650 not being detected"
+ - title: "GNU/Linux: Fix SONY PRS-650 not being detected"
improved recipes:
- The Hindu
@@ -313,9 +313,9 @@
- title: "Workaround for Qt bug that prevented using the shift and ctrl keys with the touchscreen"
- - title: "Linux: fix native KDE file dialog not working on older systems"
+ - title: "GNU/Linux: fix native KDE file dialog not working on older systems"
- - title: "Linux: Fix KDE dialogs not supporting multiple file name filter groups"
+ - title: "GNU/Linux: Fix KDE dialogs not supporting multiple file name filter groups"
- title: "Fix libraries being sorted alphabetically by full path rather than just library name"
@@ -340,7 +340,7 @@
date: 2017-08-04
new features:
- - title: "Linux: Use native file dialogs via zenity or kdialog, if available"
+ - title: "GNU/Linux: Use native file dialogs via zenity or kdialog, if available"
- title: "Copy to library: Add an action to show a dialog that allows for easy selection of libraries for copy/move. Useful when there are a large number of libraries to choose from."
tickets: [1706198]
@@ -519,7 +519,7 @@
- title: "Server: Fix timeout errors when using SSL (particularly common when running the server on windows)"
- - title: "Linux: Fix slow mouse wheel scrolling in Cover grid because of Qt bug"
+ - title: "GNU/Linux: Fix slow mouse wheel scrolling in Cover grid because of Qt bug"
- title: "Blacklist the iOS Reader applications and Marvin XD plugins as they were preventing calibre from starting up and they have not worked in a long time anyway, since Apple restricted USB access to their iOS devices"
@@ -555,8 +555,6 @@
- title: "Edit metadata dialog: Add buttons to easily set/clear Yes/no columns"
tickets: [1698331]
- - title: "Support for RAR 5.0 format RAR and CBR files"
-
bug fixes:
- title: "Version 3.1.1 fixes a regression in 3.1.0 that prevented the standalone calibre-server.exe from working on Windows and macOS"
@@ -3720,7 +3718,7 @@
- title: "Add books: Improve performance when adding large numbers of books at once"
- - title: "Add books: Allow adding books from multiple ZIP/RAR archives, each containing many books, by right clicking on the Add books and choosing 'Add from archive'"
+ - title: "Add books: Allow adding books from multiple ZIP archives, each containing many books, by right clicking on the Add books and choosing 'Add from archive'"
- title: "Metadata download: Prioritize results that have the same language as the current calibre user interface language"
diff --git a/README.md b/README.md
index 584157f..df775a7 100644
--- a/README.md
+++ b/README.md
@@ -3,17 +3,22 @@ calibre
-calibre is an e-book manager. It can view, convert, edit and catalog e-books
-in all of the major e-book formats. It can also talk to e-book reader
-devices. It can go out to the internet and fetch metadata for your books.
-It can download newspapers and convert them into e-books for convenient
-reading. It is cross platform, running on Linux, Windows and OS X.
+This is a fully-libre fork of calibre, an e-book manager.
+It can view, convert, edit and catalog e-books in all of the major e-book formats.
+It can also talk to e-book reader devices. It can go out to the internet and fetch
+metadata for your books.
+It can download newspapers and convert them into e-books for convenient
+reading. It is cross platform, running on GNU/Linux, Windows and OS X.
For more information, see the [calibre About page](https://calibre-ebook.com/about)
[![Build Status](https://api.travis-ci.org/kovidgoyal/calibre.svg)](https://travis-ci.org/kovidgoyal/calibre)
[![Build status](https://ci.appveyor.com/api/projects/status/v3nkfq0t3pse8lep?svg=true&passingText=windows%20OK&failingText=windows%20KO)](https://ci.appveyor.com/project/kovidgoyal/calibre)
+
+
+
+
Screenshots
-------------
[Screenshots page](https://calibre-ebook.com/demo)
@@ -34,12 +39,5 @@ Bugs
------
Bug reports and feature requests should be made in the calibre bug tracker at [launchpad](https://bugs.launchpad.net/calibre).
-GitHub is only used for code hosting and pull requests.
-
-Support calibre
-----------------
-
-calibre is a result of the efforts of many volunteers from all over the world.
-If you find it useful, please consider contributing to support its development.
-[Donate to support calibre development](https://calibre-ebook.com/donate).
+If the bug is particular to this fork, then report it in the [Parabola Bug Tracker](https://labs.parabola.nu/projects)
diff --git a/imgsrc/mimetypes/rar.svg a/imgsrc/mimetypes/rar.svg
deleted file mode 100644
index 9b1f34e..0000000
--- a/imgsrc/mimetypes/rar.svg
+++ /dev/null
@@ -1,2765 +0,0 @@
-
-
-
diff --git a/manual/conversion.rst b/manual/conversion.rst
index 8fa28e6..6eca538 100644
--- a/manual/conversion.rst
+++ b/manual/conversion.rst
@@ -735,7 +735,7 @@ output ranging anywhere from decent to unusable, depending on the input PDF.
Comic book collections
~~~~~~~~~~~~~~~~~~~~~~~~~
-A comic book collection is a .cbc file. A .cbc file is a ZIP file that contains other CBZ/CBR files. In addition the
+A comic book collection is a .cbc file. A .cbc file is a ZIP file that contains other CBZ files. In addition the
.cbc file must contain a simple text file called comics.txt, encoded in UTF-8. The comics.txt file must contain
a list of the comics files inside the .cbc file, in the form filename:title, as shown below::
diff --git a/manual/faq.rst b/manual/faq.rst
index 0637394..adb2e84 100644
--- a/manual/faq.rst
+++ b/manual/faq.rst
@@ -18,7 +18,7 @@ What formats does calibre support conversion to/from?
calibre supports the conversion of many input formats to many output formats.
It can convert every input format in the following list, to every output format.
-*Input Formats:* AZW, AZW3, AZW4, CBZ, CBR, CBC, CHM, DJVU, DOCX, EPUB, FB2, HTML, HTMLZ, LIT, LRF, MOBI, ODT, PDF, PRC, PDB, PML, RB, RTF, SNB, TCR, TXT, TXTZ
+*Input Formats:* AZW, AZW3, AZW4, CBZ, CBC, CHM, DJVU, DOCX, EPUB, FB2, HTML, HTMLZ, LIT, LRF, MOBI, ODT, PDF, PRC, PDB, PML, RB, RTF, SNB, TCR, TXT, TXTZ
*Output Formats:* AZW3, EPUB, DOCX, FB2, HTMLZ, OEB, LIT, LRF, MOBI, PDB, PMLZ, RB, PDF, RTF, SNB, TCR, TXT, TXTZ, ZIP
diff --git a/manual/gui.rst b/manual/gui.rst
index 0c38741..54418f7 100644
--- a/manual/gui.rst
+++ b/manual/gui.rst
@@ -51,7 +51,7 @@ Add books
3. **Add books from directories, including sub-directories (Multiple books per directory, assumes every e-book file is a different book)**: Allows you to choose a directory. The directory and all its sub-directories are scanned recursively and any e-books found are added to the library. calibre assumes that each directory contains many books. All e-book files with the same name in a directory are assumed to be the same book in different formats. E-books with different names are added as different books.
- 4. **Add multiple books from archive (ZIP/RAR)**: Allows you to add multiple e-books that are stored inside the selected ZIP or RAR files. It is a convenient shortcut that avoids having to first unzip the archive and then add the books via one of the above two options.
+ 4. **Add multiple books from archive (ZIP)**: Allows you to add multiple e-books that are stored inside the selected ZIP files. It is a convenient shortcut that avoids having to first unzip the archive and then add the books via one of the above two options.
5. **Add empty book (Book Entry with no formats)**: Allows you to create a blank book record. This can be used to then manually fill out the information about a book that you may not have yet in your collection.
diff --git a/recipes/economist.recipe b/recipes/economist.recipe
index 0116528..4766232 100644
--- a/recipes/economist.recipe
+++ b/recipes/economist.recipe
@@ -39,7 +39,7 @@ class Economist(BasicNewsRecipe):
INDEX = 'https://www.economist.com/printedition'
description = (
'Global news and current affairs from a European'
- ' perspective. Best downloaded on Friday mornings (GMT)'
+ ' perspective. Best downloaded on Saturday mornings (GMT)'
)
extra_css = '''
.headline {font-size: x-large;}
diff --git a/resources/calibre-portable.bat a/resources/calibre-portable.bat
deleted file mode 100644
index e30cb26..0000000
--- a/resources/calibre-portable.bat
+++ /dev/null
@@ -1,207 +0,0 @@
-@echo OFF
-REM Calibre-Portable.bat
-REM ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
-REM
-REM Batch File to start a Calibre configuration on Windows
-REM giving explicit control of the location of:
-REM - Calibre Program Files
-REM - Calibre Library Files
-REM - Calibre Config Files
-REM - Calibre Metadata database
-REM - Calibre Source files
-REM - Calibre Temp Files
-REM By setting the paths correctly it can be used to run:
-REM - A "portable calibre" off a USB stick.
-REM - A network installation with local metadata database
-REM (for performance) and books stored on a network share
-REM - A local installation using customised settings
-REM
-REM If trying to run off a USB stick then the folder structure
-REM shown below is recommended (relative to the location of
-REM this batch file). This can structure can also be used
-REM when running of a local hard disk if you want to get the
-REM level of control this batch file provides.
-REM - Calibre2 Location of program files
-REM - CalibreConfig Location of Configuration files
-REM - CalibreLibrary Location of Books and metadata
-REM - CalibreSource Location of Calibre Source files (Optional)
-REM
-REM This batch file is designed so that if you create the recommended
-REM folder structure then it can be used 'as is' without modification.
-REM
-REM More information on the Environment Variables used by Calibre can
-REM be found at:
-REM https://manual.calibre-ebook.com/customize.html#environment-variables
-REM
-REM The documentation for this file in the Calibre manual can be found at:
-REM https://manual.calibre-ebook.com/portable.html
-REM
-REM CHANGE HISTORY
-REM ¬¬¬¬¬¬¬¬¬¬¬¬¬¬
-REM 22 Jan 2012 itimpi - Updated to keep it in line with the calibre-portable.sh
-REM file for Linux systems
-
-
-REM -------------------------------------
-REM Set up Calibre Config folder
-REM
-REM This is where user specific settings
-REM are stored.
-REM -------------------------------------
-
-IF EXIST CalibreConfig (
- SET CALIBRE_CONFIG_DIRECTORY=%cd%\CalibreConfig
- ECHO CONFIG FILES: %cd%\CalibreConfig
-)
-
-
-REM --------------------------------------------------------------
-REM Specify Location of ebooks
-REM
-REM Location where Book files are located
-REM Either set explicit path, or if running from a USB stick
-REM a relative path can be used to avoid need to know the
-REM drive letter of the USB stick.
-REM
-REM Comment out any of the following that are not to be used
-REM (although leaving them in does not really matter)
-REM --------------------------------------------------------------
-
-IF EXIST U:\eBooks\CalibreLibrary (
- SET CALIBRE_LIBRARY_DIRECTORY=U:\eBOOKS\CalibreLibrary
- ECHO LIBRARY FILES: U:\eBOOKS\CalibreLibrary
-)
-IF EXIST CalibreLibrary (
- SET CALIBRE_LIBRARY_DIRECTORY=%cd%\CalibreLibrary
- ECHO LIBRARY FILES: %cd%\CalibreLibrary
-)
-
-
-REM --------------------------------------------------------------
-REM Specify Location of metadata database (optional)
-REM
-REM Location where the metadata.db file is located. If not set
-REM the same location as Books files will be assumed. This.
-REM option is typically set to get better performance when the
-REM Library is on a (slow) network drive. Putting the metadata.db
-REM file locally then makes gives a big performance improvement.
-REM
-REM NOTE. If you use this option, then the ability to switch
-REM libraries within Calibre will be disabled. Therefore
-REM you do not want to set it if the metadata.db file
-REM is at the same location as the book files.
-REM
-REM Another point to watch is that plugins can cause problems
-REM as they often store absolute path information
-REM --------------------------------------------------------------
-
-IF EXIST %cd%\CalibreMetadata\metadata.db (
- IF NOT "%CALIBRE_LIBRARY_DIRECTORY%" == "%cd%\CalibreMetadata" (
- SET CALIBRE_OVERRIDE_DATABASE_PATH=%cd%\CalibreMetadata\metadata.db
- ECHO DATABASE: %cd%\CalibreMetadata\metadata.db
- ECHO '
- ECHO ***CAUTION*** Library Switching will be disabled
- ECHO '
- )
-)
-
-REM --------------------------------------------------------------
-REM Specify Location of source (optional)
-REM
-REM It is easy to run Calibre from source
-REM Just set the environment variable to where the source is located
-REM When running from source the GUI will have a '*' after the version.
-REM number that is displayed at the bottom of the Calibre main screen.
-REM
-REM More information on setting up a development environment can
-REM be found at:
-REM https://manual.calibre-ebook.com/develop.html#develop
-REM --------------------------------------------------------------
-
-IF EXIST CalibreSource\src (
- SET CALIBRE_DEVELOP_FROM=%cd%\CalibreSource\src
- ECHO SOURCE FILES: %cd%\CalibreSource\src
-) ELSE (
- ECHO SOURCE FILES: *** Not being Used ***
-)
-
-
-REM --------------------------------------------------------------
-REM Specify Location of calibre Windows binaries (optional)
-REM
-REM To avoid needing Calibre to be set in the search path, ensure
-REM that Calibre Program Files is current directory when starting.
-REM The following test falls back to using search path .
-REM This folder can be populated by copying the Calibre2 folder from
-REM an existing installation or by installing direct to here.
-REM
-REM NOTE. Do not try and put both Windows and Linux binaries into
-REM same folder as this can cause problems.
-REM --------------------------------------------------------------
-
-IF EXIST %cd%\Calibre2 (
- CD %cd%\Calibre2
- ECHO PROGRAM FILES: %cd%
-) ELSE (
- ECHO PROGRAM FILES: *** Use System search PATH ***
-)
-
-
-REM --------------------------------------------------------------
-REM Location of Calibre Temporary files (optional)
-REM
-REM Calibre creates a lot of temporary files while running
-REM In theory these are removed when Calibre finishes, but
-REM in practise files can be left behind (particularily if
-REM any errors occur). Using this option allows some
-REM explicit clean-up of these files.
-REM If not set Calibre uses the normal system TEMP location
-REM --------------------------------------------------------------
-
-SET CALIBRE_TEMP_DIR=%TEMP%\CALIBRE_TEMP
-ECHO TEMPORARY FILES: %CALIBRE_TEMP_DIR%
-
-IF EXIST "%CALIBRE_TEMP_DIR%" RMDIR /s /q "%CALIBRE_TEMP_DIR%"
-MKDIR "%CALIBRE_TEMP_DIR%"
-REM set the following for any components that do
-REM not obey the CALIBRE_TEMP_DIR setting
-SET TMP=%CALIBRE_TEMP_DIR%
-SET TEMP=%CALIBRE_TEMP_DIR%
-
-
-REM --------------------------------------------------------------
-REM Set the Interface language (optional)
-REM
-REM If not set Calibre uses the language set in Preferences
-REM --------------------------------------------------------------
-
-SET CALIBRE_OVERRIDE_LANG=EN
-ECHO INTERFACE LANGUAGE: %CALIBRE_OVERRIDE_LANG%
-
-REM ----------------------------------------------------------
-REM The following gives a chance to check the settings before
-REM starting Calibre. It can be commented out if not wanted.
-REM ----------------------------------------------------------
-
-ECHO '
-ECHO Press CTRL-C if you do not want to continue
-PAUSE
-
-
-REM --------------------------------------------------------
-REM Start up the calibre program.
-REM
-REM The use of 'belownormal' priority helps keep the system
-REM responsive while Calibre is running. Within Calibre itself
-REM the backgound processes should be set to run with 'low' priority.
-
-REM Using the START command starts up Calibre in a separate process.
-REM If used without /WAIT option it launches Calibre and contines batch file.
-REM normally this would simply run off the end and close the Command window.
-REM Use with /WAIT to wait until Calibre completes to run a task on exit
-REM --------------------------------------------------------
-
-ECHO "Starting up Calibre"
-ECHO OFF
-ECHO %cd%
-START /belownormal Calibre --with-library "%CALIBRE_LIBRARY_DIRECTORY%"
diff --git a/resources/calibre-portable.sh a/resources/calibre-portable.sh
deleted file mode 100755
index beafb10..0000000
--- a/resources/calibre-portable.sh
+++ /dev/null
@@ -1,395 +0,0 @@
-#!/bin/bash
-# Calibre-Portable.sh
-# ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
-#
-# Shell script File to start a Calibre configuration on Linux
-# giving explicit control of the location of:
-# - Calibre Program Files
-# - Calibre Library Files
-# - Calibre Config Files
-# - Calibre Metadata database
-# - Calibre Source files
-# - Calibre Temp Files
-# By setting the paths correctly it can be used to run:
-# - A "portable calibre" off a USB stick.
-# - A network installation with local metadata database
-# (for performance) and books stored on a network share
-# - A local installation using customised settings
-#
-# If trying to run off a USB stick then the folder structure
-# shown below is recommended (relative to the location of
-# this script file). This structure can also be used when
-# running of a local hard disk if you want to get the level
-# of control this script file provides.
-# - Calibre Location of linux program files
-# - CalibreConfig Location of Configuration files
-# - CalibreLibrary Location of Books and metadata
-# - CalibreSource Location of Calibre Source files (Optional)
-#
-# This script file is designed so that if you create the recommended
-# folder structure then it can be used 'as is' without modification.
-# To use your own structure, simply set the variables in the generated configuration file.
-#
-# More information on the Environment Variables used by Calibre can
-# be found at:
-# https://manual.calibre-ebook.com/customize.html#environment-variables
-#
-# NOTE: It is quite possible to have both Windows and Linux binaries on the same
-# USB stick but set up to use the same calibre settings otherwise.
-# In this case you use:
-# - calibre-portable.bat to run the Windows version
-# - calibre-portable.sh to run the Linux version
-#
-# CHANGE HISTORY
-# ¬¬¬¬¬¬¬¬¬¬¬¬¬¬
-# 22 Jan 2012 itimpi ----- First version based on the calibre-portable.bat file for Windows
-# It should have identical functionality but for a linux environment.
-# It might work on MacOS but that has not been validated.
-#
-# 02 Feb 2015 eschwartz -- Fix path issues, allow setting each location in one variable, allow
-# specifying a list of libraries in descending order of priority.
-#
-# 01 Apr 2015 eschwartz -- Fix temp dir and permissions, migrate settings to configuration file.
-
-# -----------------------------------------------------
-# On exit, make sure all files are marked world-writable.
-# This allows you to use calibre on other computers
-# without changing fstab rules and suchlike.
-# You can now use an ext3 drive instead of vfat so the
-# binaries and script will be executable.
-# -----------------------------------------------------
-
-cleanup() {
- # Check if user has disabled cleanup
- if [[ "${CALIBRE_NO_CLEANUP}" = "1" ]]; then
- return
- fi
-
- for i in "${CONFIG_DIR}" "${CALIBRE_LIBRARY_DIRECTORY}" \
- "${METADATA_DIR}" "${SRC_DIR}" "${BIN_DIR}"; do
- if [[ -d "${i}" ]]; then
- chmod a+rwX "${i}"
- fi
- done
- rm -rf "${CALIBRE_TEMP_DIR}"
-}
-
-trap cleanup EXIT
-
-# ------------------------------------------------
-# Interactive options.
-# ------------------------------------------------
-
-usage()
-{
- cat <<- _EOF_
- Usage: calibre-portable.sh [OPTIONS]
- Run a portable instance of calibre.
-
- OPTIONS
- -u, --upgrade-install upgrade or install the portable calibre binaries
- -h, --help show this usage message then exit
-_EOF_
-}
-
-do_upgrade()
-{
- wget -nv -O- https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py \
- | python -c "import sys; main=lambda x,y:sys.stderr.write('Download failed\n'); \
- exec(sys.stdin.read()); main('$(pwd)', True)"
-}
-
-while [[ "${#}" -gt 0 ]]; do
- case "${1}" in
- -h|--help)
- usage
- exit
- ;;
- -u|--upgrade-install)
- do_upgrade
- exit
- ;;
- *)
- echo "calibre-portable.sh: unecognzed option '${1}'"
- echo "Try 'calibre-portable.sh --help' for more information."
- exit 1
- esac
- shift
-done
-
-# ------------------------------------------------
-# Create or read configuration file.
-# ------------------------------------------------
-
-if [[ -f "$(pwd)/calibre-portable.conf" ]]; then
- source "$(pwd)/calibre-portable.conf"
-else
- cat <<- _EOF_ > $(pwd)/calibre-portable.conf
- # Configuration file for calibre-portable. Generated on $(date)
- # Settings in here will override the defaults specified in the portable launcher.
-
- ##################################################
- # Set up calibre config folder.
- #
- # This is where user specific settings are stored.
- ##################################################
-
- # CONFIG_DIR="\$(pwd)/CalibreConfig"
-
- ################################################################
- # -- Specify the location of your calibre library.
- #
- # -- Either set an explicit path, or if running from a USB stick
- # -- a relative path can be used to avoid needing to know the
- # -- mount point of the USB stick.
- #
- # -- Specify a list of libraries here, by adding new elements to the
- # -- array. The first value of LIBRARY_DIRS that is an existing directory
- # -- will be used as the current calibre library.
- ################################################################
-
- # LIBRARY_DIRS[0]="/path/to/first/CalibreLibrary"
- # LIBRARY_DIRS[1]="/path/to/second/CalibreLibrary"
- # LIBRARY_DIRS[2]="\$(pwd)/CalibreLibrary"
-
- ################################################################
- # -- Specify location of metadata database (optional).
- #
- # -- Location where the metadata.db file is located. If not set
- # -- then the same location as the library folder will be assumed.
- # -- This option is typically used to get better performance when the
- # -- library is on a (slow) network drive. Putting the metadata.db
- # -- file locally then makes gives a big performance improvement.
- #
- # -- NOTE. If you use this option, then the ability to switch
- # -- libraries within calibre will be disabled. Therefore
- # -- you do not want to set it if the metadata.db file
- # -- is at the same location as the book files.
- #
- # -- Another point to watch is that plugins can cause problems
- # -- as they often store absolute path information.
- ################################################################
-
- # METADATA_DIR="\$(pwd)/CalibreMetadata"
-
- ################################################################
- # -- Specify location of source (optional).
- #
- # -- It is easy to run calibre from source. Just set the environment
- # -- variable to where the source is located. When running from source
- # -- the GUI will have a '*' after the version number that is displayed
- # -- at the bottom of the calibre main screen.
- #
- # -- More information on setting up a development environment can
- # -- be found at:
- # -- https://manual.calibre-ebook.com/develop.html#develop
- ################################################################
-
- # SRC_DIR="$\(pwd)/CalibreSource/src"
-
- ################################################################
- # -- Specify location of calibre linux binaries (optional).
- #
- # -- To avoid needing Calibre to be set in the search path, ensure
- # -- that if Calibre Program Files exists, we manually specify the
- # -- location of the binary.
- # -- The following test falls back to using the search path, or you
- # -- can specifically use the search path by leaving the BIN_DIR blank.
- #
- # -- This folder can be populated by copying the /opt/calibre folder
- # -- from an existing installation or by installing direct to here.
- #
- # -- NOTE. Do not try and put both Windows and Linux binaries into
- # -- the same folder as this can cause problems.
- ################################################################
-
- # BIN_DIR="$\(pwd)/calibre"
-
- ################################################################
- # -- Location of calibre temporary files (optional).
- #
- # -- calibre creates a lot of temporary files while running
- # -- In theory these are removed when calibre finishes, but
- # -- in practice files can be left behind (particularly if
- # -- a crash occurs). Using this option allows some
- # -- explicit clean-up of these files.
- # -- If not set calibre uses the normal system TEMP location
- ################################################################
-
- # CALIBRE_TEMP_DIR="/tmp/CALIBRE_TEMP_\$(tr -dc 'A-Za-z0-9'
-
-
-
- Show notification when &new version is available
-
-
-
diff --git a/src/calibre/gui2/preferences/look_feel.ui b/src/calibre/gui2/preferences/look_feel.ui
index baa4a30..5636ef3 100644
--- a/src/calibre/gui2/preferences/look_feel.ui
+++ b/src/calibre/gui2/preferences/look_feel.ui
@@ -1200,7 +1200,7 @@ column being examined (the left-hand pane)
-
+
diff --git a/src/calibre/gui2/update.py b/src/calibre/gui2/update.py
index 9ea0993..9f59a9d 100644
--- a/src/calibre/gui2/update.py
+++ b/src/calibre/gui2/update.py
@@ -1,20 +1,18 @@
__license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal '
-import re, binascii, cPickle, ssl, json
+import binascii, cPickle
from future_builtins import map
from threading import Thread, Event
from PyQt5.Qt import (QObject, pyqtSignal, Qt, QUrl, QDialog, QGridLayout,
- QLabel, QCheckBox, QDialogButtonBox, QIcon)
+ QLabel, QCheckBox, QIcon)
-from calibre.constants import (__appname__, __version__, iswindows, isosx,
+from calibre.constants import (__appname__, iswindows, isosx,
isportable, is64bit, numeric_version)
from calibre import prints, as_unicode
-from calibre.utils.config import prefs
from calibre.utils.localization import localize_website_link
-from calibre.utils.https import get_https_resource_securely
-from calibre.gui2 import config, dynamic, open_url
+from calibre.gui2 import dynamic, open_url
from calibre.gui2.dialogs.plugin_updater import get_plugin_updates_available
URL = 'https://code.calibre-ebook.com/latest'
@@ -31,35 +29,7 @@ def get_download_url():
def get_newest_version():
- try:
- icon_theme_name = json.loads(I('icon-theme.json', data=True))['name']
- except Exception:
- icon_theme_name = ''
- headers={
- 'CALIBRE-VERSION':__version__,
- 'CALIBRE-OS': ('win' if iswindows else 'osx' if isosx else 'oth'),
- 'CALIBRE-INSTALL-UUID': prefs['installation_uuid'],
- 'CALIBRE-ICON-THEME': icon_theme_name,
- }
- try:
- version = get_https_resource_securely(URL, headers=headers)
- except ssl.SSLError as err:
- if getattr(err, 'reason', None) != 'CERTIFICATE_VERIFY_FAILED':
- raise
- # certificate verification failed, since the version check contains no
- # critical information, ignore and proceed
- # We have to do this as if the calibre CA certificate ever
- # needs to be revoked, then we wont be able to do version checks
- version = get_https_resource_securely(URL, headers=headers, cacerts=None)
- try:
- version = version.decode('utf-8').strip()
- except UnicodeDecodeError:
- version = u''
- ans = NO_CALIBRE_UPDATE
- m = re.match(ur'(\d+)\.(\d+).(\d+)$', version)
- if m is not None:
- ans = tuple(map(int, (m.group(1), m.group(2), m.group(3))))
- return ans
+ return NO_CALIBRE_UPDATE
class Signal(QObject):
@@ -82,12 +52,6 @@ class CheckForUpdates(Thread):
calibre_update_version = NO_CALIBRE_UPDATE
plugins_update_found = 0
try:
- version = get_newest_version()
- if version[:2] > numeric_version[:2]:
- calibre_update_version = version
- except Exception as e:
- prints('Failed to check for calibre update:', as_unicode(e))
- try:
update_plugins = get_plugin_updates_available(raise_error=True)
if update_plugins is not None:
plugins_update_found = len(update_plugins)
@@ -126,11 +90,6 @@ class UpdateNotification(QDialog):
self.setWindowIcon(QIcon(I('lt.png')))
self.l.addWidget(self.logo, 0, 0)
self.l.addWidget(self.label, 0, 1)
- self.cb = QCheckBox(
- _('Show this notification for future updates'), self)
- self.l.addWidget(self.cb, 1, 0, 1, -1)
- self.cb.setChecked(config.get('new_version_notification'))
- self.cb.stateChanged.connect(self.show_future)
self.bb = QDialogButtonBox(self)
b = self.bb.addButton(_('&Get update'), self.bb.AcceptRole)
b.setDefault(True)
@@ -152,9 +111,6 @@ class UpdateNotification(QDialog):
initial_filter=FILTER_UPDATE_AVAILABLE)
d.exec_()
- def show_future(self, *args):
- config.set('new_version_notification', bool(self.cb.isChecked()))
-
def accept(self):
open_url(QUrl(get_download_url()))
@@ -202,8 +158,7 @@ class UpdateMixin(object):
self.status_bar.update_label.setVisible(True)
if has_calibre_update:
- if (force or (config.get('new_version_notification') and
- dynamic.get('update to version %s'%calibre_version, True))):
+ if force:
if not no_show_popup:
self._update_notification__ = UpdateNotification(calibre_version,
number_of_plugin_updates, parent=self)
diff --git a/src/calibre/linux.py b/src/calibre/linux.py
index 17b55cb..f9b06ea 100644
--- a/src/calibre/linux.py
+++ b/src/calibre/linux.py
@@ -317,7 +317,7 @@ class ZshCompleter(object): # {{{
):
for fmt in fmts:
is_input = group_title == input_group
- if is_input and fmt in {'rar', 'zip', 'oebzip'}:
+ if is_input and fmt in {'zip', 'oebzip'}:
continue
p = (get_parser(input_fmt=fmt) if is_input
else get_parser(output_fmt=fmt))
diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py
index 897e6b5..2af959d 100644
--- a/src/calibre/test_build.py
+++ b/src/calibre/test_build.py
@@ -205,10 +205,6 @@ class BuildTest(unittest.TestCase):
from calibre.gui2.win_file_dialogs import test
test()
- def test_unrar(self):
- from calibre.utils.unrar import test_basic
- test_basic()
-
@unittest.skipUnless(iswindows, 'WPD is windows only')
def test_wpd(self):
wpd = plugins['wpd'][0]
diff --git a/src/calibre/utils/search_query_parser.py b/src/calibre/utils/search_query_parser.py
index 9fac662..f9d1535 100644
--- a/src/calibre/utils/search_query_parser.py
+++ b/src/calibre/utils/search_query_parser.py
@@ -456,16 +456,16 @@ class Tester(SearchQueryParser):
u'Tor Books',
u'lrf'],
8: [u'Stalky and Co.', u'Rudyard Kipling', u'manybooks.net', u'lrf'],
- 9: [u'A Game of Thrones', u'George R. R. Martin', None, u'lrf,rar'],
- 10: [u'A Clash of Kings', u'George R. R. Martin', None, u'lrf,rar'],
- 11: [u'A Storm of Swords', u'George R. R. Martin', None, u'lrf,rar'],
+ 9: [u'A Game of Thrones', u'George R. R. Martin', None, u'lrf'],
+ 10: [u'A Clash of Kings', u'George R. R. Martin', None, u'lrf'],
+ 11: [u'A Storm of Swords', u'George R. R. Martin', None, u'lrf'],
12: [u'Biggles - Pioneer Air Fighter', u'W. E. Johns', None, u'lrf,rtf'],
13: [u'Biggles of the Camel Squadron',
u'W. E. Johns',
u'London:Thames, (1977)',
u'lrf,rtf'],
- 14: [u'A Feast for Crows', u'George R. R. Martin', None, u'lrf,rar'],
- 15: [u'Cryptonomicon', u'Neal Stephenson', None, u'lrf,rar'],
+ 14: [u'A Feast for Crows', u'George R. R. Martin', None, u'lrf'],
+ 15: [u'Cryptonomicon', u'Neal Stephenson', None, u'lrf'],
16: [u'Quicksilver', u'Neal Stephenson', None, u'lrf,zip'],
17: [u'The Comedies of William Shakespeare',
u'William Shakespeare',
@@ -480,15 +480,15 @@ class Tester(SearchQueryParser):
None,
u'lrf'],
20: [u'An Ideal Husband', u'Oscar Wilde', u'manybooks.net', u'lrf'],
- 21: [u'Flight of the Nighthawks', u'Raymond E. Feist', None, u'lrf,rar'],
- 22: [u'Into a Dark Realm', u'Raymond E. Feist', None, u'lrf,rar'],
- 23: [u'The Sundering', u'Walter Jon Williams', None, u'lrf,rar'],
- 24: [u'The Praxis', u'Walter Jon Williams', None, u'lrf,rar'],
- 25: [u'Conventions of War', u'Walter Jon Williams', None, u'lrf,rar'],
- 26: [u'Banewreaker', u'Jacqueline Carey', None, u'lrf,rar'],
- 27: [u'Godslayer', u'Jacqueline Carey', None, u'lrf,rar'],
- 28: [u"Kushiel's Scion", u'Jacqueline Carey', None, u'lrf,rar'],
- 29: [u'Underworld', u'Don DeLillo', None, u'lrf,rar'],
+ 21: [u'Flight of the Nighthawks', u'Raymond E. Feist', None, u'lrf'],
+ 22: [u'Into a Dark Realm', u'Raymond E. Feist', None, u'lrf'],
+ 23: [u'The Sundering', u'Walter Jon Williams', None, u'lrf'],
+ 24: [u'The Praxis', u'Walter Jon Williams', None, u'lrf'],
+ 25: [u'Conventions of War', u'Walter Jon Williams', None, u'lrf'],
+ 26: [u'Banewreaker', u'Jacqueline Carey', None, u'lrf'],
+ 27: [u'Godslayer', u'Jacqueline Carey', None, u'lrf'],
+ 28: [u"Kushiel's Scion", u'Jacqueline Carey', None, u'lrf'],
+ 29: [u'Underworld', u'Don DeLillo', None, u'lrf'],
30: [u'Genghis Khan and The Making of the Modern World',
u'Jack Weatherford Orc',
u'Three Rivers Press',
@@ -499,9 +499,9 @@ class Tester(SearchQueryParser):
u'lrf,zip'],
32: [u'The Killer Angels', u'Michael Shaara', None, u'html,lrf'],
33: [u'Band Of Brothers', u'Stephen E Ambrose', None, u'lrf,txt'],
- 34: [u'The Gates of Rome', u'Conn Iggulden', None, u'lrf,rar'],
+ 34: [u'The Gates of Rome', u'Conn Iggulden', None, u'lrf'],
35: [u'The Death of Kings', u'Conn Iggulden', u'Bantam Dell', u'lit,lrf'],
- 36: [u'The Field of Swords', u'Conn Iggulden', None, u'lrf,rar'],
+ 36: [u'The Field of Swords', u'Conn Iggulden', None, u'lrf'],
37: [u'Masterman Ready', u'Marryat, Captain Frederick', None, u'lrf'],
38: [u'With the Lightnings',
u'David Drake',
@@ -514,16 +514,16 @@ class Tester(SearchQueryParser):
40: [u'The Far Side of The Stars',
u'David Drake',
u'Baen Publishing Enterprises',
- u'lrf,rar'],
+ u'lrf'],
41: [u'The Way to Glory',
u'David Drake',
u'Baen Publishing Enterprises',
- u'lrf,rar'],
- 42: [u'Some Golden Harbor', u'David Drake', u'Baen Books', u'lrf,rar'],
+ u'lrf'],
+ 42: [u'Some Golden Harbor', u'David Drake', u'Baen Books', u'lrf'],
43: [u'Harry Potter And The Half-Blood Prince',
u'J. K. Rowling',
None,
- u'lrf,rar'],
+ u'lrf'],
44: [u'Harry Potter and the Order of the Phoenix',
u'J. K. Rowling',
None,
@@ -532,12 +532,12 @@ class Tester(SearchQueryParser):
46: [u'The Stars at War II',
u'Steve White',
u'Baen Publishing Enterprises',
- u'lrf,rar'],
- 47: [u'Exodus', u'Steve White,Shirley Meier', u'Baen Books', u'lrf,rar'],
+ u'lrf'],
+ 47: [u'Exodus', u'Steve White,Shirley Meier', u'Baen Books', u'lrf'],
48: [u'Harry Potter and the Goblet of Fire',
u'J. K. Rowling',
None,
- u'lrf,rar'],
+ u'lrf'],
49: [u'Harry Potter and the Prisoner of Azkaban',
u'J. K. Rowling',
None,
@@ -550,20 +550,20 @@ class Tester(SearchQueryParser):
u'J.K. Rowling',
None,
u'lit,lrf,pdf'],
- 52: [u"His Majesty's Dragon", u'Naomi Novik', None, u'lrf,rar'],
+ 52: [u"His Majesty's Dragon", u'Naomi Novik', None, u'lrf'],
53: [u'Throne of Jade', u'Naomi Novik', u'Del Rey', u'lit,lrf'],
- 54: [u'Black Powder War', u'Naomi Novik', u'Del Rey', u'lrf,rar'],
+ 54: [u'Black Powder War', u'Naomi Novik', u'Del Rey', u'lrf'],
55: [u'War and Peace', u'Leo Tolstoy', u'gutenberg.org', u'lrf,txt'],
56: [u'Anna Karenina', u'Leo Tolstoy', u'gutenberg.org', u'lrf,txt'],
57: [u'A Shorter History of Rome',
u'Eugene Lawrence,Sir William Smith',
u'gutenberg.org',
u'lrf,zip'],
- 58: [u'The Name of the Rose', u'Umberto Eco', None, u'lrf,rar'],
+ 58: [u'The Name of the Rose', u'Umberto Eco', None, u'lrf'],
71: [u"Wind Rider's Oath", u'David Weber', u'Baen', u'lrf'],
74: [u'Rally Cry', u'William R Forstchen', None, u'htm,lrf'],
- 86: [u'Empire of Ivory', u'Naomi Novik', None, u'lrf,rar'],
- 87: [u"Renegade's Magic", u'Robin Hobb', None, u'lrf,rar'],
+ 86: [u'Empire of Ivory', u'Naomi Novik', None, u'lrf'],
+ 87: [u"Renegade's Magic", u'Robin Hobb', None, u'lrf'],
89: [u'Master and commander',
u"Patrick O'Brian",
u'Fontana,\n1971',
@@ -571,7 +571,7 @@ class Tester(SearchQueryParser):
91: [u'A Companion to Wolves',
u'Sarah Monette,Elizabeth Beär',
None,
- u'lrf,rar'],
+ u'lrf'],
92: [u'The Lions of al-Rassan', u'Guy Gavriel Kay', u'Eos', u'lit,lrf'],
93: [u'Gardens of the Moon', u'Steven Erikson', u'Tor Fantasy', u'lit,lrf'],
95: [u'The Master and Margarita',
@@ -595,7 +595,7 @@ class Tester(SearchQueryParser):
144: [u'Atonement',
u'Ian McEwan',
u'New York : Nan A. Talese/Doubleday, 2002.',
- u'lrf,rar'],
+ u'lrf'],
146: [u'1632', u'Eric Flint', u'Baen Books', u'lit,lrf'],
147: [u'1633', u'David Weber,Eric Flint,Dru Blair', u'Baen', u'lit,lrf'],
148: [u'1634: The Baltic War',
@@ -648,7 +648,7 @@ class Tester(SearchQueryParser):
253: [u"Hunter's Run",
u'George R. R. Martin,Gardner Dozois,Daniel Abraham',
u'Eos',
- u'lrf,rar'],
+ u'lrf'],
257: [u'Knife of Dreams', u'Robert Jordan', None, u'lit,lrf'],
258: [u'Saturday',
u'Ian McEwan',
@@ -668,7 +668,7 @@ class Tester(SearchQueryParser):
u'New York : Random House, 2005.',
u'lit,lrf'],
269: [u'Reap the Whirlwind', u'David Mack', u'Star Trek', u'lit,lrf'],
- 272: [u'Mistborn', u'Brandon Sanderson', u'Tor Fantasy', u'lrf,rar'],
+ 272: [u'Mistborn', u'Brandon Sanderson', u'Tor Fantasy', u'lrf'],
273: [u'The Thousandfold Thought',
u'R. Scott Bakker',
u'Overlook TP',
@@ -676,17 +676,17 @@ class Tester(SearchQueryParser):
276: [u'Elantris',
u'Brandon Sanderson',
u'New York : Tor, 2005.',
- u'lrf,rar'],
+ u'lrf'],
291: [u'Sundiver',
u'David Brin',
u'New York : Bantam Books, 1995.',
u'lit,lrf'],
- 299: [u'Imperium', u'Robert Harris', u'Arrow', u'lrf,rar'],
+ 299: [u'Imperium', u'Robert Harris', u'Arrow', u'lrf'],
300: [u'Startide Rising', u'David Brin', u'Bantam', u'htm,lrf'],
301: [u'The Uplift War', u'David Brin', u'Spectra', u'lit,lrf'],
- 304: [u'Brightness Reef', u'David Brin', u'Orbit', u'lrf,rar'],
+ 304: [u'Brightness Reef', u'David Brin', u'Orbit', u'lrf'],
305: [u"Infinity's Shore", u'David Brin', u'Spectra', u'txt'],
- 306: [u"Heaven's Reach", u'David Brin', u'Spectra', u'lrf,rar'],
+ 306: [u"Heaven's Reach", u'David Brin', u'Spectra', u'lrf'],
325: [u"Foundation's Triumph", u'David Brin', u'Easton Press', u'lit,lrf'],
327: [u'I am Charlotte Simmons', u'Tom Wolfe', u'Vintage', u'htm,lrf'],
335: [u'The Currents of Space', u'Isaac Asimov', None, u'lit,lrf'],
@@ -716,15 +716,15 @@ class Tester(SearchQueryParser):
u'Aspect',
u'lit,lrf'],
356: [u'The Naked God', u'Peter F. Hamilton', u'Aspect', u'lit,lrf'],
- 421: [u'A Shadow in Summer', u'Daniel Abraham', u'Tor Fantasy', u'lrf,rar'],
+ 421: [u'A Shadow in Summer', u'Daniel Abraham', u'Tor Fantasy', u'lrf'],
427: [u'Lonesome Dove', u'Larry M\\cMurtry', None, u'lit,lrf'],
440: [u'Ghost', u'John Ringo', u'Baen', u'lit,lrf'],
441: [u'Kildar', u'John Ringo', u'Baen', u'lit,lrf'],
- 443: [u'Hidden Empire ', u'Kevin J. Anderson', u'Aspect', u'lrf,rar'],
+ 443: [u'Hidden Empire ', u'Kevin J. Anderson', u'Aspect', u'lrf'],
444: [u'The Gun Seller',
u'Hugh Laurie',
u'Washington Square Press',
- u'lrf,rar']
+ u'lrf']
}
tests = {
diff --git a/src/calibre/utils/unrar.py a/src/calibre/utils/unrar.py
deleted file mode 100644
index 2fd0af3..0000000
--- a/src/calibre/utils/unrar.py
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/env python2
-# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:fdm=marker:ai
-from __future__ import (unicode_literals, division, absolute_import, print_function)
-
-__license__ = 'GPL v3'
-__copyright__ = '2012, Kovid Goyal '
-__docformat__ = 'restructuredtext en'
-
-import os
-import shutil
-import re
-from io import BytesIO
-
-from calibre.constants import filesystem_encoding, iswindows
-from calibre.ptempfile import PersistentTemporaryFile, TemporaryDirectory
-
-
-def as_unicode(x):
- if isinstance(x, bytes):
- x = x.decode(filesystem_encoding)
- return x
-
-
-class StreamAsPath(object):
-
- def __init__(self, stream):
- self.stream = stream
-
- def __enter__(self):
- self.temppath = None
- if isinstance(self.stream, basestring):
- return as_unicode(self.stream)
- name = getattr(self.stream, 'name', None)
- if name and os.access(name, os.R_OK):
- return as_unicode(name)
- pos = self.stream.tell()
- with PersistentTemporaryFile('for-unar', 'wb') as f:
- shutil.copyfileobj(self.stream, f)
- self.stream.seek(pos)
- self.temppath = f.name
- return as_unicode(f.name)
-
- def __exit__(self, *a):
- if self.temppath is not None:
- try:
- os.remove(self.temppath)
- except EnvironmentError:
- pass
- self.temppath = None
-
-
-def extract(path_or_stream, location):
- from unrardll import extract
- with StreamAsPath(path_or_stream) as path:
- return extract(path, location)
-
-
-def names(path_or_stream):
- from unrardll import names
- with StreamAsPath(path_or_stream) as path:
- for name in names(path, only_useful=True):
- yield name
-
-
-def comment(path_or_stream):
- from unrardll import comment
- with StreamAsPath(path_or_stream) as path:
- return comment(path)
-
-
-def extract_member(
- path_or_stream, match=re.compile(r'\.(jpg|jpeg|gif|png)\s*$', re.I), name=None):
- from unrardll import extract_member
- if iswindows and name is not None:
- name = name.replace(os.sep, '/')
-
- def is_match(header):
- fname = header['filename']
- if iswindows:
- fname = fname.replace(os.sep, '/')
- return (name is not None and fname == name) or \
- (match is not None and match.search(fname) is not None)
-
- with StreamAsPath(path_or_stream) as path:
- name, data = extract_member(path, is_match)
- if name is not None:
- return name, data
-
-
-def extract_first_alphabetically(stream):
- from calibre.libunzip import sort_key
- names_ = sorted([
- x for x in names(stream)
- if os.path.splitext(x)[1][1:].lower() in {
- 'png', 'jpg', 'jpeg', 'gif', 'webp'}],
- key=sort_key)
- return extract_member(stream, name=names_[0], match=None)
-
-
-def extract_cover_image(stream):
- from calibre.libunzip import sort_key, name_ok
- for name in sorted(names(stream), key=sort_key):
- if name_ok(name):
- return extract_member(stream, name=name, match=None)
-
-
-# Test normal RAR file {{{
-
-
-def test_basic():
-
- stream = BytesIO( # {{{
- b"Rar!\x1a\x07\x00\xcf\x90s\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x14\xe7z\x00\x80#\x00\x17\x00\x00\x00\r\x00\x00\x00\x03\xc2\xb3\x96o\x00\x00\x00\x00\x1d3\x03\x00\x00\x00\x00\x00CMT\x0c\x00\x8b\xec\x8e\xef\x14\xf6\xe6h\x04\x17\xff\xcd\x0f\xffk9b\x11]^\x80\xd3dt \x90+\x00\x14\x00\x00\x00\x08\x00\x00\x00\x03\xf1\x84\x93\\\xb9]yA\x1d3\t\x00\xa4\x81\x00\x001\\sub-one\x00\xc0\x0c\x00\x8f\xec\x89\xfe.JM\x86\x82\x0c_\xfd\xfd\xd7\x11\x1a\xef@\x9eHt \x80'\x00\x0e\x00\x00\x00\x04\x00\x00\x00\x03\x9f\xa8\x17\xf8\xaf]yA\x1d3\x07\x00\xa4\x81\x00\x00one.txt\x00\x08\xbf\x08\xae\xf3\xca\x87\xfeo\xfe\xd2n\x80-Ht \x82:\x00\x18\x00\x00\x00\x10\x00\x00\x00\x03\xa86\x81\xdf\xf9fyA\x1d3\x1a\x00\xa4\x81\x00\x00\xe8\xaf\xb6\xe6\xaf\x94\xe5\xb1\x81.txt\x00\x8bh\xf6\xd4kA\\.\x00txt\x0c\x00\x8b\xec\x8e\xef\x14\xf6\xe2l\x91\x189\xff\xdf\xfe\xc2\xd3:g\x9a\x19F=cYt \x928\x00\x11\x00\x00\x00\x08\x00\x00\x00\x03\x7f\xd6\xb6\x7f\xeafyA\x1d3\x16\x00\xa4\x81\x00\x00F\xc3\xbc\xc3\x9fe.txt\x00\x01\x00F\xfc\xdfe\x00.txt\x00\xc0