You've already forked qBittorrent
							
							
				mirror of
				https://github.com/qbittorrent/qBittorrent
				synced 2025-11-02 08:10:54 +01:00 
			
		
		
		
	Compare commits
	
		
			271 Commits
		
	
	
		
			release-4.
			...
			release-4.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					7825d8627f | ||
| 
						 | 
					b798c591e7 | ||
| 
						 | 
					9e7d21d7aa | ||
| 
						 | 
					38a15b27f0 | ||
| 
						 | 
					cb31684a66 | ||
| 
						 | 
					850cde19f7 | ||
| 
						 | 
					fc5b3b4f70 | ||
| 
						 | 
					73fd4d83af | ||
| 
						 | 
					811b525b1d | ||
| 
						 | 
					0f8def9a49 | ||
| 
						 | 
					359b464958 | ||
| 
						 | 
					b5b0d68dd9 | ||
| 
						 | 
					f48c49c248 | ||
| 
						 | 
					11ca744548 | ||
| 
						 | 
					82e6fc700e | ||
| 
						 | 
					59fd70c638 | ||
| 
						 | 
					617bf767df | ||
| 
						 | 
					55180e3598 | ||
| 
						 | 
					56b62e6573 | ||
| 
						 | 
					b37e7b0340 | ||
| 
						 | 
					21aebaf16f | ||
| 
						 | 
					5792465317 | ||
| 
						 | 
					e98f44af63 | ||
| 
						 | 
					40cf0203fb | ||
| 
						 | 
					05a82afeb6 | ||
| 
						 | 
					a456f1b0f9 | ||
| 
						 | 
					4acc44a5b0 | ||
| 
						 | 
					9c2a1146df | ||
| 
						 | 
					807abeae87 | ||
| 
						 | 
					dd2a0d0484 | ||
| 
						 | 
					3f3400f43b | ||
| 
						 | 
					334b57a89a | ||
| 
						 | 
					00d6c83ee5 | ||
| 
						 | 
					e8850c7a70 | ||
| 
						 | 
					2ef96eb218 | ||
| 
						 | 
					4682e31ab7 | ||
| 
						 | 
					988f7e2ef8 | ||
| 
						 | 
					6007913291 | ||
| 
						 | 
					cdcc7a210b | ||
| 
						 | 
					a466ff5057 | ||
| 
						 | 
					e954835579 | ||
| 
						 | 
					3e9be3a0e8 | ||
| 
						 | 
					4ab32a76f6 | ||
| 
						 | 
					bad60058df | ||
| 
						 | 
					31a6ad1eb6 | ||
| 
						 | 
					a8bfec081e | ||
| 
						 | 
					ae21d0f1e2 | ||
| 
						 | 
					c599976b6f | ||
| 
						 | 
					bcee784097 | ||
| 
						 | 
					697fc626cd | ||
| 
						 | 
					2f15ea9b54 | ||
| 
						 | 
					d03209a73d | ||
| 
						 | 
					ac9ba255d8 | ||
| 
						 | 
					9a7e79bd0e | ||
| 
						 | 
					e8be3bf939 | ||
| 
						 | 
					74e52746b1 | ||
| 
						 | 
					8d26a221e0 | ||
| 
						 | 
					3fdab88eb7 | ||
| 
						 | 
					d376d912b3 | ||
| 
						 | 
					e329c41ef2 | ||
| 
						 | 
					01e4179555 | ||
| 
						 | 
					06f503b5df | ||
| 
						 | 
					e2f3dad7b8 | ||
| 
						 | 
					377f31085c | ||
| 
						 | 
					ec13d195f8 | ||
| 
						 | 
					c01aed8d90 | ||
| 
						 | 
					ad7b8a9bfa | ||
| 
						 | 
					5bba1ed208 | ||
| 
						 | 
					fe94e14bcc | ||
| 
						 | 
					b0af479ab9 | ||
| 
						 | 
					24ff369f29 | ||
| 
						 | 
					979c9a7094 | ||
| 
						 | 
					7b90ac52c1 | ||
| 
						 | 
					ecfbda78bc | ||
| 
						 | 
					9ba7470815 | ||
| 
						 | 
					6394467cc7 | ||
| 
						 | 
					f6d72fa79f | ||
| 
						 | 
					32ed5f1c8e | ||
| 
						 | 
					5026da5773 | ||
| 
						 | 
					ef130e4438 | ||
| 
						 | 
					4fbd52c2d5 | ||
| 
						 | 
					8f29b70c1e | ||
| 
						 | 
					9a4dd3ea9d | ||
| 
						 | 
					fcd3bb6918 | ||
| 
						 | 
					9f69fd8750 | ||
| 
						 | 
					ea7e47d113 | ||
| 
						 | 
					294bb26996 | ||
| 
						 | 
					4b2e9dba51 | ||
| 
						 | 
					1d9dcde99b | ||
| 
						 | 
					32bf448725 | ||
| 
						 | 
					732d5d6db9 | ||
| 
						 | 
					3b325106da | ||
| 
						 | 
					3aeca37c5d | ||
| 
						 | 
					4253515736 | ||
| 
						 | 
					e365d57063 | ||
| 
						 | 
					df6df20969 | ||
| 
						 | 
					4e5a85dda5 | ||
| 
						 | 
					bad603454b | ||
| 
						 | 
					7b006a47ba | ||
| 
						 | 
					11da8b82e8 | ||
| 
						 | 
					383a5f11bc | ||
| 
						 | 
					76ab5f12c5 | ||
| 
						 | 
					be74987084 | ||
| 
						 | 
					8f6c305d14 | ||
| 
						 | 
					e29b9655eb | ||
| 
						 | 
					ae7fa9ea82 | ||
| 
						 | 
					fee9030337 | ||
| 
						 | 
					f48d057c47 | ||
| 
						 | 
					f14573307c | ||
| 
						 | 
					560ba8c0b8 | ||
| 
						 | 
					4b2376c4fd | ||
| 
						 | 
					76faed3818 | ||
| 
						 | 
					62657d9fda | ||
| 
						 | 
					5877308a49 | ||
| 
						 | 
					24dcbe7d43 | ||
| 
						 | 
					7649fe0a0e | ||
| 
						 | 
					b3b334da77 | ||
| 
						 | 
					03a55da260 | ||
| 
						 | 
					1a9eadf8e6 | ||
| 
						 | 
					7b3fb2a35a | ||
| 
						 | 
					a55ea29919 | ||
| 
						 | 
					264b689912 | ||
| 
						 | 
					684cf82f89 | ||
| 
						 | 
					3f0e0a319a | ||
| 
						 | 
					0b4d9c72a7 | ||
| 
						 | 
					ff71f6bcd9 | ||
| 
						 | 
					7a5c5baad1 | ||
| 
						 | 
					a18976d0b5 | ||
| 
						 | 
					6d836ea49c | ||
| 
						 | 
					2e97311147 | ||
| 
						 | 
					57bc564b2c | ||
| 
						 | 
					1295f1e31f | ||
| 
						 | 
					4916ed0efb | ||
| 
						 | 
					f15f99cb27 | ||
| 
						 | 
					93365d3b20 | ||
| 
						 | 
					c756ab021d | ||
| 
						 | 
					34528dd544 | ||
| 
						 | 
					9380209afb | ||
| 
						 | 
					be2895ac6f | ||
| 
						 | 
					e26d4642b8 | ||
| 
						 | 
					f470972bd4 | ||
| 
						 | 
					443378c041 | ||
| 
						 | 
					e20dbe34a4 | ||
| 
						 | 
					86bde47a06 | ||
| 
						 | 
					e273c777c7 | ||
| 
						 | 
					17845c6b25 | ||
| 
						 | 
					27827ce16a | ||
| 
						 | 
					b444ecc6af | ||
| 
						 | 
					34995350ee | ||
| 
						 | 
					73ceee52f8 | ||
| 
						 | 
					85a3ba0eed | ||
| 
						 | 
					86cce76e9d | ||
| 
						 | 
					3358fd8e91 | ||
| 
						 | 
					120965f823 | ||
| 
						 | 
					e70ee9a5b6 | ||
| 
						 | 
					a2d8e84e83 | ||
| 
						 | 
					4a3648a693 | ||
| 
						 | 
					baad45e638 | ||
| 
						 | 
					d9cb00aab2 | ||
| 
						 | 
					d703d98836 | ||
| 
						 | 
					2f0646e7f0 | ||
| 
						 | 
					1a8a6dcef7 | ||
| 
						 | 
					990f961126 | ||
| 
						 | 
					06f04dea19 | ||
| 
						 | 
					8eced2ef1f | ||
| 
						 | 
					1e486ea92e | ||
| 
						 | 
					b47f38675e | ||
| 
						 | 
					864f3393a0 | ||
| 
						 | 
					cebef74326 | ||
| 
						 | 
					e257b35cac | ||
| 
						 | 
					1f33991e4b | ||
| 
						 | 
					794053f212 | ||
| 
						 | 
					3a130e1f74 | ||
| 
						 | 
					3423f93230 | ||
| 
						 | 
					2219167253 | ||
| 
						 | 
					a0a32b89a6 | ||
| 
						 | 
					59162bf426 | ||
| 
						 | 
					dfd148f55f | ||
| 
						 | 
					3af720b3bc | ||
| 
						 | 
					11240d0837 | ||
| 
						 | 
					e64fd9c544 | ||
| 
						 | 
					50ef812427 | ||
| 
						 | 
					bd4d2fa424 | ||
| 
						 | 
					e2ee928017 | ||
| 
						 | 
					62e71a15a4 | ||
| 
						 | 
					c62127e9f1 | ||
| 
						 | 
					2171d579ee | ||
| 
						 | 
					6e5a969e2d | ||
| 
						 | 
					bfbc7ef28a | ||
| 
						 | 
					b1cefbf9b5 | ||
| 
						 | 
					201638854e | ||
| 
						 | 
					847ecdeedb | ||
| 
						 | 
					acc159fa60 | ||
| 
						 | 
					bb7e80a8a6 | ||
| 
						 | 
					39973f1bb1 | ||
| 
						 | 
					1e9151364a | ||
| 
						 | 
					fd50d6e9af | ||
| 
						 | 
					427acf0c46 | ||
| 
						 | 
					f0a50424be | ||
| 
						 | 
					aded9afc0e | ||
| 
						 | 
					060b7480db | ||
| 
						 | 
					7f2a01dcd6 | ||
| 
						 | 
					fef0e70c9f | ||
| 
						 | 
					9cc112aa4e | ||
| 
						 | 
					44d4d41365 | ||
| 
						 | 
					a21c386dbf | ||
| 
						 | 
					1c4139906a | ||
| 
						 | 
					1a21f45c75 | ||
| 
						 | 
					0061b75200 | ||
| 
						 | 
					420c93a99e | ||
| 
						 | 
					93f1183cd7 | ||
| 
						 | 
					b8fcc1fed2 | ||
| 
						 | 
					2b91be1905 | ||
| 
						 | 
					7c9ef96ef8 | ||
| 
						 | 
					37b4b69199 | ||
| 
						 | 
					fc18e6f8df | ||
| 
						 | 
					4793a35e0b | ||
| 
						 | 
					4599da3ce1 | ||
| 
						 | 
					dec4e41fdd | ||
| 
						 | 
					780ece0c25 | ||
| 
						 | 
					aac8bfc398 | ||
| 
						 | 
					1a06a18336 | ||
| 
						 | 
					2d4f963d65 | ||
| 
						 | 
					b54fe08201 | ||
| 
						 | 
					d1d0300491 | ||
| 
						 | 
					7fff06f07b | ||
| 
						 | 
					3f9351042d | ||
| 
						 | 
					9e01dbab0f | ||
| 
						 | 
					d4a4b02cf6 | ||
| 
						 | 
					1f2c7a6671 | ||
| 
						 | 
					5a7b88c16c | ||
| 
						 | 
					93351476e4 | ||
| 
						 | 
					e1bfa95a63 | ||
| 
						 | 
					7030cc08e7 | ||
| 
						 | 
					a1da9812a5 | ||
| 
						 | 
					8ebc0f529c | ||
| 
						 | 
					e0d47649bc | ||
| 
						 | 
					524d503860 | ||
| 
						 | 
					cffafa8e9f | ||
| 
						 | 
					0fda919268 | ||
| 
						 | 
					7d98c34e17 | ||
| 
						 | 
					93147e787b | ||
| 
						 | 
					80435bae7e | ||
| 
						 | 
					b367e5c197 | ||
| 
						 | 
					5336c71da5 | ||
| 
						 | 
					27f6db976d | ||
| 
						 | 
					8223d61fa7 | ||
| 
						 | 
					3eef12bd8f | ||
| 
						 | 
					9e70a6c499 | ||
| 
						 | 
					fec3a87421 | ||
| 
						 | 
					59aac32eb9 | ||
| 
						 | 
					5ef3917769 | ||
| 
						 | 
					2f767d96d9 | ||
| 
						 | 
					de24fdfdc2 | ||
| 
						 | 
					3bb6a68c9d | ||
| 
						 | 
					f2406eb2f3 | ||
| 
						 | 
					4923ed7da0 | ||
| 
						 | 
					82056355f6 | ||
| 
						 | 
					f3bd2a295f | ||
| 
						 | 
					cc96760839 | ||
| 
						 | 
					ae95943f69 | ||
| 
						 | 
					d3067f939e | ||
| 
						 | 
					b6addd304c | ||
| 
						 | 
					d1ae6e8d58 | ||
| 
						 | 
					4445c2dab2 | ||
| 
						 | 
					fcc1564a62 | ||
| 
						 | 
					615eeb7144 | ||
| 
						 | 
					855bb118b5 | ||
| 
						 | 
					9f1eb3600a | ||
| 
						 | 
					fb885d89c1 | ||
| 
						 | 
					a846916beb | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -22,6 +22,7 @@ qrc_*.cpp
 | 
			
		||||
ui_*.h
 | 
			
		||||
*.moc
 | 
			
		||||
src/lang/qbittorrent_*.qm
 | 
			
		||||
src/webui/www/translations/webui_*.qm
 | 
			
		||||
.DS_Store
 | 
			
		||||
.qmake.stash
 | 
			
		||||
src/qbittorrent.app
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										80
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								.travis.yml
									
									
									
									
									
								
							@@ -3,7 +3,8 @@ language: cpp
 | 
			
		||||
os:
 | 
			
		||||
  - linux
 | 
			
		||||
  - osx
 | 
			
		||||
osx_image: xcode7.3
 | 
			
		||||
 | 
			
		||||
dist: xenial
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  matrix:
 | 
			
		||||
@@ -38,11 +39,6 @@ cache:
 | 
			
		||||
  directories:
 | 
			
		||||
    - $HOME/hombebrew_cache
 | 
			
		||||
 | 
			
		||||
# opt-in Ubuntu Trusty
 | 
			
		||||
dist: trusty
 | 
			
		||||
# container-based builds
 | 
			
		||||
sudo: false
 | 
			
		||||
 | 
			
		||||
addons:
 | 
			
		||||
  coverity_scan:
 | 
			
		||||
    project:
 | 
			
		||||
@@ -54,34 +50,30 @@ addons:
 | 
			
		||||
    notification_email: sledgehammer999@qbittorrent.org
 | 
			
		||||
  apt:
 | 
			
		||||
    sources:
 | 
			
		||||
      # sources list: https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
 | 
			
		||||
      - ubuntu-toolchain-r-test
 | 
			
		||||
      #- boost-latest
 | 
			
		||||
      # sources list: https://github.com/travis-ci/apt-source-safelist/blob/master/ubuntu.json
 | 
			
		||||
      - sourceline: 'ppa:qbittorrent-team/qbittorrent-stable'
 | 
			
		||||
      - sourceline: 'ppa:beineri/opt-qt551-trusty'
 | 
			
		||||
      - sourceline: 'ppa:adrozdoff/cmake'
 | 
			
		||||
    packages:
 | 
			
		||||
      # packages list: https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
 | 
			
		||||
      # packages list: https://github.com/travis-ci/apt-package-safelist/blob/master/ubuntu-trusty
 | 
			
		||||
      - [autoconf, automake, colormake]
 | 
			
		||||
      - [cmake, ninja-build]
 | 
			
		||||
      - [ninja-build]
 | 
			
		||||
      - libssl-dev
 | 
			
		||||
      - [libboost-dev, libboost-system-dev]
 | 
			
		||||
      - libtorrent-rasterbar-dev
 | 
			
		||||
      - [qt55base, qt55svg, qt55tools]
 | 
			
		||||
      - [gcc-6, g++-6]
 | 
			
		||||
      - [qtbase5-dev, qttools5-dev-tools, libqt5svg5-dev]
 | 
			
		||||
 | 
			
		||||
before_install:
 | 
			
		||||
  # only allow specific build for coverity scan, others will stop
 | 
			
		||||
  - if [ "$TRAVIS_BRANCH" = "$coverity_branch" ] && ! [ "$TRAVIS_OS_NAME" = "linux" -a "$lt_branch" = "RC_1_0" -a "$gui" = true -a "$build_system" = "qmake" ]; then exit ; fi
 | 
			
		||||
 | 
			
		||||
  - shopt -s expand_aliases
 | 
			
		||||
  - alias make="colormake -j3" # Using nprocs/2 sometimes may fail (gcc is killed by system)
 | 
			
		||||
  - alias make="colormake -j2" # Using nprocs/2 sometimes may fail (gcc is killed by system)
 | 
			
		||||
  - qbt_path="$HOME/qbt_install"
 | 
			
		||||
  - |
 | 
			
		||||
    if [ "$TRAVIS_OS_NAME" = "linux" ]; then
 | 
			
		||||
      qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH=/opt/qt55/lib/pkgconfig:$PKG_CONFIG_PATH"
 | 
			
		||||
    else
 | 
			
		||||
      qbtconf="$qbtconf --prefix="$qbt_path""
 | 
			
		||||
      qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig:$PKG_CONFIG_PATH"
 | 
			
		||||
      CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedefs -Wno-inconsistent-missing-override"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
  # options for specific branches
 | 
			
		||||
@@ -90,14 +82,6 @@ before_install:
 | 
			
		||||
    if [ "$TRAVIS_OS_NAME" = "linux" ]; then
 | 
			
		||||
      # setup virtual display for after_success target
 | 
			
		||||
      if [ "$gui" = true ]; then export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi ;
 | 
			
		||||
 | 
			
		||||
      # Qt 5
 | 
			
		||||
      PATH=/opt/qt55/bin:${PATH}
 | 
			
		||||
 | 
			
		||||
      if [ "$build_system" = "cmake" ]; then
 | 
			
		||||
          COMPILER_VERSION=6
 | 
			
		||||
          export CXX="${CXX}-${COMPILER_VERSION}" CC="${CC}-${COMPILER_VERSION}"
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
  # print settings
 | 
			
		||||
@@ -121,47 +105,24 @@ install:
 | 
			
		||||
      # dependencies
 | 
			
		||||
      brew update > /dev/null
 | 
			
		||||
      brew outdated "pkg-config" || brew upgrade "pkg-config"
 | 
			
		||||
      brew install colormake ccache zlib qt
 | 
			
		||||
      brew install colormake ccache zlib qt openssl libtorrent-rasterbar
 | 
			
		||||
      PATH="/usr/local/opt/ccache/libexec:$PATH"
 | 
			
		||||
      brew link --force zlib qt
 | 
			
		||||
 | 
			
		||||
      wget https://builds.shiki.hu/homebrew/version
 | 
			
		||||
      if ! cmp --quiet "version" "$HOME/hombebrew_cache/version" ; then
 | 
			
		||||
        echo "Cached files are different from server. Downloading new ones."
 | 
			
		||||
        # First delete old files
 | 
			
		||||
        rm -r "$HOME/hombebrew_cache"
 | 
			
		||||
        mkdir "$HOME/hombebrew_cache"
 | 
			
		||||
        cp "version" $HOME/hombebrew_cache
 | 
			
		||||
        cd "$HOME/hombebrew_cache"
 | 
			
		||||
        wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar.rb
 | 
			
		||||
        wget https://builds.shiki.hu/homebrew/5146d2df7e48f321511273fb9829ebdc3a6dc519f9ef36a344a343ae524c3ae6--libtorrent-rasterbar-1.1.9+git20180812.0bcf6cef23+patched-configure.el_capitan.bottle.tar.gz
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      # Copy custom libtorrent bottle to homebrew's download cache so it can find and install it
 | 
			
		||||
      # Also install our custom libtorrent formula by passing the local path to it
 | 
			
		||||
      # These 2 files are restored from Travis' cache.
 | 
			
		||||
      cp "$HOME/hombebrew_cache/5146d2df7e48f321511273fb9829ebdc3a6dc519f9ef36a344a343ae524c3ae6--libtorrent-rasterbar-1.1.9+git20180812.0bcf6cef23+patched-configure.el_capitan.bottle.tar.gz" "$(brew --cache)/downloads"
 | 
			
		||||
      brew install "$HOME/hombebrew_cache/libtorrent-rasterbar.rb"
 | 
			
		||||
      
 | 
			
		||||
      # NOTE about the bottle name
 | 
			
		||||
      # The part before the "--" characters is a sha256 hash of the string
 | 
			
		||||
      # of the URL homebrew itself would use to download the bottle.
 | 
			
		||||
      # In this case the URL is the following:
 | 
			
		||||
      # http://127.0.0.1/libtorrent-rasterbar-1.1.9+git20180812.0bcf6cef23+patched-configure.el_capitan.bottle.tar.gz
 | 
			
		||||
 | 
			
		||||
      if [ "$build_system" = "cmake" ]; then
 | 
			
		||||
        brew outdated cmake || brew upgrade cmake
 | 
			
		||||
        brew install ninja
 | 
			
		||||
 | 
			
		||||
        ln -s /usr/local/opt/qt/mkspecs /usr/local/mkspecs
 | 
			
		||||
        ln -s /usr/local/opt/qt/plugins /usr/local/plugins
 | 
			
		||||
        sudo ln -s /usr/local/opt/qt/mkspecs /usr/local/mkspecs
 | 
			
		||||
        sudo ln -s /usr/local/opt/qt/plugins /usr/local/plugins
 | 
			
		||||
        
 | 
			
		||||
        MY_CMAKE_OPENSSL_HINT="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/"
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      MY_CMAKE_OPENSSL_HINT="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/"
 | 
			
		||||
    fi
 | 
			
		||||
  - |
 | 
			
		||||
    if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
 | 
			
		||||
      export use_ccache=true
 | 
			
		||||
      ccache -M 512M
 | 
			
		||||
      ccache -V && ccache --show-stats && ccache --zero-stats
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
@@ -180,16 +141,7 @@ script:
 | 
			
		||||
      BUILD_TOOL="ninja"
 | 
			
		||||
    fi
 | 
			
		||||
    if [ "$build_system" = "qmake" ]; then
 | 
			
		||||
      if [ "$TRAVIS_OS_NAME" = "osx" ]; then
 | 
			
		||||
        # For some reason for RC_1_1 we need to also specify the OpenSSL compiler/linker flags
 | 
			
		||||
        # Homebrew doesn't symlink OpenSSL for security reasons
 | 
			
		||||
        ./bootstrap.sh && ./configure $qbtconf CXXFLAGS="$(PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig:$PKG_CONFIG_PATH" pkg-config --cflags openssl)" LDFLAGS="$(PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig:$PKG_CONFIG_PATH" pkg-config --libs openssl)"
 | 
			
		||||
        sed -i "" -e "s/^\(CC.*&&\).*$/\1 $CC/" src/Makefile  # workaround for Qt & ccache: https://bugreports.qt.io/browse/QTBUG-31034
 | 
			
		||||
        sed -i "" -e "s/^\(CXX.*&&\).*$/\1 $CXX/" src/Makefile
 | 
			
		||||
        sed -i "" -e 's/^\(CXXFLAGS.*\)$/\1 -Wno-unused-local-typedefs -Wno-inconsistent-missing-override/' src/Makefile
 | 
			
		||||
      else
 | 
			
		||||
        ./bootstrap.sh && ./configure $qbtconf
 | 
			
		||||
      fi
 | 
			
		||||
      ./bootstrap.sh && ./configure $qbtconf CXXFLAGS="$CXXFLAGS"
 | 
			
		||||
      BUILD_TOOL="make"
 | 
			
		||||
    fi
 | 
			
		||||
  - $BUILD_TOOL && $BUILD_TOOL install
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								.tx/config
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								.tx/config
									
									
									
									
									
								
							@@ -10,10 +10,18 @@ type = QT
 | 
			
		||||
minimum_perc = 23
 | 
			
		||||
mode = developer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[qbittorrent.qbittorrentdesktop_master]
 | 
			
		||||
source_file = dist/unix/qbittorrent.desktop
 | 
			
		||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
 | 
			
		||||
source_lang = en
 | 
			
		||||
type = DESKTOP
 | 
			
		||||
minimum_perc = 23
 | 
			
		||||
mode = developer
 | 
			
		||||
 | 
			
		||||
[qbittorrent.qbittorrent_webui]
 | 
			
		||||
file_filter = src/webui/www/translations/webui_<lang>.ts
 | 
			
		||||
lang_map = pt: pt_PT
 | 
			
		||||
source_file = src/webui/www/translations/webui_en.ts
 | 
			
		||||
source_lang = en
 | 
			
		||||
type = QT
 | 
			
		||||
minimum_perc = 23
 | 
			
		||||
mode = developer
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
 | 
			
		||||
 | 
			
		||||
message(WARNING "No official support for cmake build system. If it is broken, please submit patches!")
 | 
			
		||||
message(AUTHOR_WARNING "If the build fails, please try the autotools/qmake method.")
 | 
			
		||||
 | 
			
		||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
 | 
			
		||||
include(FunctionReadVersion)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										161
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						
									
										161
									
								
								Changelog
									
									
									
									
									
								
							@@ -1,3 +1,164 @@
 | 
			
		||||
* Sun Oct 27 2019 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.1.9
 | 
			
		||||
    - BUGFIX: Preserve relative order when moving to top/bottom in queue (Chocobo1)
 | 
			
		||||
    - WINDOWS: Use real physical screen DPI (Chocobo1)
 | 
			
		||||
    - WEBUI: Bump Web API version
 | 
			
		||||
 | 
			
		||||
* Mon Sep 23 2019 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.1.8
 | 
			
		||||
    - BUGFIX: Fix filename validation on non-Windows OS (Chocobo1)
 | 
			
		||||
    - BUGFIX: ScanFolders/FileSystemWatcher now detect magnet files with case insensitivity in filename (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix failed seeding after creating a torrent and auto-adding it to the session (Chocobo1)
 | 
			
		||||
 | 
			
		||||
* Sun Aug 04 2019 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.1.7
 | 
			
		||||
    - FEATURE: Add 12 hour and 24 hour speed graphs (dzmat)
 | 
			
		||||
    - FEATURE: Change "Add new torrent" dialog to horizontal layout (Evgeny Lensky)
 | 
			
		||||
    - BUGFIX: Fix messed up symbols in log (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix incomplete file extension not applied for new torrents (Chocobo1)
 | 
			
		||||
    - BUGFIX: Save updated resume data for completed torrents (Vladimir Golovnev (Glassez))
 | 
			
		||||
    - BUGFIX: Fix requested torrent resume data handling (Vladimir Golovnev (Glassez))
 | 
			
		||||
    - BUGFIX: Prevent command injection via "Run external program" function (Chocobo1)
 | 
			
		||||
    - BUGFIX: Avoid race conditions when adding torrent (Vladimir Golovnev (Glassez))
 | 
			
		||||
    - BUGFIX: Fix torrent checking issues (Vladimir Golovnev (Glassez))
 | 
			
		||||
    - BUGFIX: Use proper log message when there are no error (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix torrent properties not saved for paused torrents (Chocobo1)
 | 
			
		||||
    - BUGFIX: Some improvements on qtsingleapplication code (Chocobo1)
 | 
			
		||||
    - BUGFIX: Remove limits of "Disk cache expiry interval" setting (Chocobo1)
 | 
			
		||||
    - BUGFIX: Remove upper limit of "Disk cache" setting (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix crash when removing phantom tags (Chocobo1)
 | 
			
		||||
    - BUGFIX: Improve handleFileErrorAlert error message (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix updated save path not saved for paused torrents (Chocobo1)
 | 
			
		||||
    - BUGFIX: Log save_resume_data_failed_alert (Chocobo1)
 | 
			
		||||
    - BUGFIX: Don't remove parent directories (Chocobo1)
 | 
			
		||||
    - BUGFIX: Properly remove empty leftover folders after rename (Chocobo1)
 | 
			
		||||
    - BUGFIX: Focus behavior row in Options dialog (silverqx)
 | 
			
		||||
    - BUGFIX: Fix unable to rename folder on Windows when same is used in different case(Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix unable to control add torrent dialogs when opened simultaneously (Chocobo1)
 | 
			
		||||
    - BUGFIX: Disable "Upload mode" when start preloaded torrent (Vladimir Golovnev (Glassez))
 | 
			
		||||
    - BUGFIX: Fix wrong comparison result when sorting items(Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix sequential downloading when redirected (Vladimir Golovnev (Glassez))
 | 
			
		||||
    - BUGFIX: Fix typos (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix assertion fail (Chocobo1)
 | 
			
		||||
    - BUGFIX: Change number of time axis divisions from 5 to 6 for convenience (dzmat)
 | 
			
		||||
    - BUGFIX: Don't turn window blank when closed to system tray (Ekin Dursun)
 | 
			
		||||
    - WEBUI: Fix WebUI encoding of special characters (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Change the speed unit from Bytes/s to KiB/s for the rate limiter(jerrymakesjelly)
 | 
			
		||||
    - WEBUI: Fix '+' char not decoded to space correctly (Chocobo1)
 | 
			
		||||
    - RSS: Ignore RSS articles with non-unique identifiers (Vladimir Golovnev (Glassez))
 | 
			
		||||
    - RSS: Perform more RSS parsing in working thread (Vladimir Golovnev (Glassez))
 | 
			
		||||
    - RSS: Download RSS enclosure element if no proper MIME type is found (Matan Bareket)
 | 
			
		||||
 | 
			
		||||
* Sun May 05 2019 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.1.6
 | 
			
		||||
    - BUGFIX: Force recheck multiple torrents one by one in all possible cases. Closes #9120 (glassez)
 | 
			
		||||
    - BUGFIX: Don't query Google for tracker favicons, for privacy reasons (sledgehammer999)
 | 
			
		||||
    - BUGFIX: Work around the crash occurred in QTimer. Closes #9985 (Chocobo1)
 | 
			
		||||
    - BUGFIX: Increase the .torrent file download size limit to 100 MiB (thalieht)
 | 
			
		||||
    - BUGFIX: Disable downloading tracker favicons by default. Works around reported crashes in Linux. Closes #9667 (Chocobo1)
 | 
			
		||||
    - WEBUI: Separate URL components before percent-decoding. Allow special characters in query string parameters. Closes #9116 (glassez)
 | 
			
		||||
    - WEBUI: Prevent login credential appearing in URL. Closes #10221 (Chocobo1)
 | 
			
		||||
    - WEBUI: Display warning when Javascript is disabled (Chocobo1)
 | 
			
		||||
    - WEBUI: Fix translatable strings (Chocobo1)
 | 
			
		||||
    - WEBUI: Correctly handle '+' sign in x-www-form-urlencoded data. Closes #10451 (Chocobo1)
 | 
			
		||||
    - WEBUI: Remove closed connections immediately. Closes #10487 (Chocobo1)
 | 
			
		||||
    - WEBUI: Fix "Create subfolder" option is not working. Closes ##10392 (Chocobo1)
 | 
			
		||||
    - SEARCH: Make num enter key work the same as return in searchjobwidget (thalieht)
 | 
			
		||||
    - LINUX: Make window title bar icon work in Wayland (Peter Eszlari)
 | 
			
		||||
    - LINUX: Update appdata.xml file (Chocobo1)
 | 
			
		||||
    - MACOS: Fix progress bar drawing by using different style than native (Nick Korotysh)
 | 
			
		||||
    - MACOS: Updated and cleaned up fields in Info.plist (Nick Korotysh)
 | 
			
		||||
    - OTHER: Mention more translators in the about tab. Closes #10043 (sledgehammer999)
 | 
			
		||||
 | 
			
		||||
* Mon Dec 24 2018 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.1.5
 | 
			
		||||
    - FEATURE: Add checking_mem_usage option to AdvancedSettings (FranciscoPombal)
 | 
			
		||||
    - FEATURE: Save torrents queue in separate file. Now a new file named 'queue' is created, saving on each line the infohash of each queued torrent in sorted order. (glassez)
 | 
			
		||||
    - BUGFIX: Fix regression on resuming torrents without metadata (thalieht)
 | 
			
		||||
    - BUGFIX: Reorder and rename Tracker list context menu option (Thomas Piccirello)
 | 
			
		||||
    - BUGFIX: Rename Tracker List columns (Thomas Piccirello)
 | 
			
		||||
    - BUGFIX: Show error message when Session failed to start (glassez)
 | 
			
		||||
    - BUGFIX: Embedded tracker: Use ip parameter from tracker request if provided (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix weekday names translations (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix strings not translated (Chocobo1)
 | 
			
		||||
    - WEBUI: Change qBittorrent exit message to HTML5 (Chocobo1)
 | 
			
		||||
    - WEBUI: Revise CSP header (Chocobo1)
 | 
			
		||||
    - WEBUI: Enforce referrer-policy in WebUI (Chocobo1)
 | 
			
		||||
    - WEBUI: Add torrent name filtering to WebUI (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Send numeric status without translation (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add WebUI Trackers context menu (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add DHT, PeX, and LSD to WebUI Tracker list (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add additional Tracker columns to WebUI (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Bump Web API version
 | 
			
		||||
    - WEBUI: Fix display bugs in WebUI Files tab. Remove <IE9 support (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Fix incorrect priority value sent from WebUI (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Set priority for multiple files in one WebAPI request (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Match WebUI Peers table column order to GUI (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Fetch data less frequently when torrents tab isn't visible (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add Search tab to WebUI (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add ability to pass urls to the webui download page (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Fix JavaScript error (Tom Piccirello)
 | 
			
		||||
    - WEBUI: Disallow setting a blank alternative WebUI location (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add slow torrent options (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add "Use alternative Web UI" option (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add "Apply rate limit to peers on LAN" option (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add email "From" option (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Set WebUI download options using set preferences (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Show list of categories on WebUI download page (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Hide WebUI text input for custom monitor save locations (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add "When adding a torrent" options (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add WebUI Auto TMM options (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add speed limit icons to WebUI Speed options (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add WebUI Random port button and proxy unencrypted password notice (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Replace WebUI Options fixed-width labels (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Reorder WebUI options to match GUI (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Allow WebUI sidebar to be collapsed (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Show ellipsis when WebUI sidebar is too narrow (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Fix WebUI bug on override of Start Download option.Closes #9855. (Tom Piccirello)
 | 
			
		||||
    - WEBUI: Fix missing words in WebUI (Chocobo1)
 | 
			
		||||
    - WEBUI: Add SameSite attribute to WebUI session cookie (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Put WebUI security related options into a groupbox (Chocobo1)
 | 
			
		||||
    - WEBUI: Add option for WebUI Host header validation (Chocobo1)
 | 
			
		||||
    - WEBUI: Show icon in WebUI sorted column (Thomas Piccirello)
 | 
			
		||||
    - RSS: Keep track of REPACK/PROPER downloads. Closes #9898. (Stephen Dawkins)
 | 
			
		||||
    - SEARCH: Only instantiate SearchPluginManager as needed (Thomas Piccirello)
 | 
			
		||||
    - MACOS: Make file icon look like other macOS icons (Nick Korotysh)
 | 
			
		||||
    - MACOS: Save option to start minimized in Mac (thalieht)
 | 
			
		||||
 | 
			
		||||
* Mon Nov 19 2018 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.1.4
 | 
			
		||||
    - FEATURE: Recognize *.ts files as previewable (silver)
 | 
			
		||||
    - FEATURE: Allow to disable speed graphs (dzmat)
 | 
			
		||||
    - FEATURE: Clear LineEdit on ESC (silverqx)
 | 
			
		||||
    - BUGFIX: Fix divide-by-zero crash (Chocobo1)
 | 
			
		||||
    - BUGFIX: Remove speed limit checkbox in Options dialog (Chocobo1)
 | 
			
		||||
    - BUGFIX: Fix speed graph "high speeds" bug (dzmat)
 | 
			
		||||
    - BUGFIX: Don't update torrent status unnecessarily (glassez)
 | 
			
		||||
    - BUGFIX: Improve force recheck of paused torrent (glassez)
 | 
			
		||||
    - BUGFIX: Restore torrent in two steps (glassez)
 | 
			
		||||
    - BUGFIX: Improve scaling of speed graphs (dzmat)
 | 
			
		||||
    - BUGFIX: Add isNetworkFileSystem() detection on Windows. This allows network mounts to be monitored correctly by polling timer. (Chocobo1)
 | 
			
		||||
    - BUGFIX: Reduce horizontal graphs resolution. Improves perfomance. (dzmat)
 | 
			
		||||
    - BUGFIX: Don't recheck just checked torrent (mj-p, glassez)
 | 
			
		||||
    - BUGFIX: Add SMB2 magic number (Chocobo1)
 | 
			
		||||
    - BUGFIX: Restore startup perfomance to v4.1.2 times. Needs at least libtorrent 1.1.10 (sledgehammer999)
 | 
			
		||||
    - BUGFIX: Make strings actually translatable (sledgehammer999)
 | 
			
		||||
    - WEBUI: Handle downloading .torrent file as success (Tom Piccirello)
 | 
			
		||||
    - WEBUI: Fix Alternative Web UI to be available (glassez)
 | 
			
		||||
    - WEBUI: Consider empty locale setting as not set (glassez)
 | 
			
		||||
    - WEBUI: Add free disk space to WebUI status bar (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add WebUI search API controller (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Fix WebUI Auto TMM context menu bug (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Use independent translation for WebUI (glassez)
 | 
			
		||||
    - WEBUI: Add categories WebAPI (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Fix minor JavaScript defects (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Add locale to js file path (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Translate WebUI torrents Status column (Thomas Piccirello)
 | 
			
		||||
    - WEBUI: Bump Web API version
 | 
			
		||||
    - RSS: Allow to disable downloading REPACK/PROPER matches (Stephen Dawkins)
 | 
			
		||||
    - RSS: Improve RSS Feed updating (glassez)
 | 
			
		||||
    - SEARCH: Allow resizing search filter in search job (thalieht)
 | 
			
		||||
    - SEARCH: Improve parser for search engine versions.txt (Chocobo1)
 | 
			
		||||
    - SEARCH: Update Python URLs (Chocobo1)
 | 
			
		||||
    - SEARCH: Fix asking to install Python (Chocobo1)
 | 
			
		||||
    - SEARCH: Reformat python code to be compliant with PEP8 (Chocobo1)
 | 
			
		||||
    - OTHER: cmake: restore out-of-source build (Eugene Shalygin)
 | 
			
		||||
    - OTHER: cmake: cmake: use C++14 when available (Eugene Shalygin)
 | 
			
		||||
 | 
			
		||||
* Tue Sep 18 2018 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.1.3
 | 
			
		||||
    - FEATURE: Preselect name without extension when renaming files (thalieht)
 | 
			
		||||
    - FEATURE: Allow setting seq & first/last from context menu without metadata (thalieht)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
#! /bin/sh
 | 
			
		||||
# Wrapper for compilers which do not understand '-c -o'.
 | 
			
		||||
 | 
			
		||||
scriptversion=2012-10-14.11; # UTC
 | 
			
		||||
scriptversion=2018-03-07.03; # UTC
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 | 
			
		||||
# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 | 
			
		||||
# Written by Tom Tromey <tromey@cygnus.com>.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@@ -17,7 +17,7 @@ scriptversion=2012-10-14.11; # UTC
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
# As a special exception to the GNU General Public License, if you
 | 
			
		||||
# distribute this file as part of a program that contains a
 | 
			
		||||
@@ -255,7 +255,8 @@ EOF
 | 
			
		||||
    echo "compile $scriptversion"
 | 
			
		||||
    exit $?
 | 
			
		||||
    ;;
 | 
			
		||||
  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
 | 
			
		||||
  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
 | 
			
		||||
  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
 | 
			
		||||
    func_cl_wrapper "$@"      # Doesn't return...
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
@@ -339,9 +340,9 @@ exit $ret
 | 
			
		||||
# Local Variables:
 | 
			
		||||
# mode: shell-script
 | 
			
		||||
# sh-indentation: 2
 | 
			
		||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
 | 
			
		||||
# eval: (add-hook 'before-save-hook 'time-stamp)
 | 
			
		||||
# time-stamp-start: "scriptversion="
 | 
			
		||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
 | 
			
		||||
# time-stamp-time-zone: "UTC"
 | 
			
		||||
# time-stamp-time-zone: "UTC0"
 | 
			
		||||
# time-stamp-end: "; # UTC"
 | 
			
		||||
# End:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										966
									
								
								build-aux/config.guess
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										966
									
								
								build-aux/config.guess
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2770
									
								
								build-aux/config.sub
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2770
									
								
								build-aux/config.sub
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
# install - install a program, script, or datafile
 | 
			
		||||
 | 
			
		||||
scriptversion=2013-12-25.23; # UTC
 | 
			
		||||
scriptversion=2018-03-11.20; # UTC
 | 
			
		||||
 | 
			
		||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
 | 
			
		||||
# later released in X11R6 (xc/config/util/install.sh) with the
 | 
			
		||||
@@ -271,15 +271,18 @@ do
 | 
			
		||||
    fi
 | 
			
		||||
    dst=$dst_arg
 | 
			
		||||
 | 
			
		||||
    # If destination is a directory, append the input filename; won't work
 | 
			
		||||
    # if double slashes aren't ignored.
 | 
			
		||||
    # If destination is a directory, append the input filename.
 | 
			
		||||
    if test -d "$dst"; then
 | 
			
		||||
      if test "$is_target_a_directory" = never; then
 | 
			
		||||
        echo "$0: $dst_arg: Is a directory" >&2
 | 
			
		||||
        exit 1
 | 
			
		||||
      fi
 | 
			
		||||
      dstdir=$dst
 | 
			
		||||
      dst=$dstdir/`basename "$src"`
 | 
			
		||||
      dstbase=`basename "$src"`
 | 
			
		||||
      case $dst in
 | 
			
		||||
	*/) dst=$dst$dstbase;;
 | 
			
		||||
	*)  dst=$dst/$dstbase;;
 | 
			
		||||
      esac
 | 
			
		||||
      dstdir_status=0
 | 
			
		||||
    else
 | 
			
		||||
      dstdir=`dirname "$dst"`
 | 
			
		||||
@@ -288,6 +291,11 @@ do
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  case $dstdir in
 | 
			
		||||
    */) dstdirslash=$dstdir;;
 | 
			
		||||
    *)  dstdirslash=$dstdir/;;
 | 
			
		||||
  esac
 | 
			
		||||
 | 
			
		||||
  obsolete_mkdir_used=false
 | 
			
		||||
 | 
			
		||||
  if test $dstdir_status != 0; then
 | 
			
		||||
@@ -324,34 +332,43 @@ do
 | 
			
		||||
            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
 | 
			
		||||
            ;;
 | 
			
		||||
          *)
 | 
			
		||||
            # Note that $RANDOM variable is not portable (e.g. dash);  Use it
 | 
			
		||||
            # here however when possible just to lower collision chance.
 | 
			
		||||
            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
 | 
			
		||||
            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
 | 
			
		||||
 | 
			
		||||
            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
 | 
			
		||||
 | 
			
		||||
            # Because "mkdir -p" follows existing symlinks and we likely work
 | 
			
		||||
            # directly in world-writeable /tmp, make sure that the '$tmpdir'
 | 
			
		||||
            # directory is successfully created first before we actually test
 | 
			
		||||
            # 'mkdir -p' feature.
 | 
			
		||||
            if (umask $mkdir_umask &&
 | 
			
		||||
                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
 | 
			
		||||
                $mkdirprog $mkdir_mode "$tmpdir" &&
 | 
			
		||||
                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
 | 
			
		||||
            then
 | 
			
		||||
              if test -z "$dir_arg" || {
 | 
			
		||||
                   # Check for POSIX incompatibilities with -m.
 | 
			
		||||
                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
 | 
			
		||||
                   # other-writable bit of parent directory when it shouldn't.
 | 
			
		||||
                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
 | 
			
		||||
                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
 | 
			
		||||
                   test_tmpdir="$tmpdir/a"
 | 
			
		||||
                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
 | 
			
		||||
                   case $ls_ld_tmpdir in
 | 
			
		||||
                     d????-?r-*) different_mode=700;;
 | 
			
		||||
                     d????-?--*) different_mode=755;;
 | 
			
		||||
                     *) false;;
 | 
			
		||||
                   esac &&
 | 
			
		||||
                   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
 | 
			
		||||
                     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
 | 
			
		||||
                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
 | 
			
		||||
                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
 | 
			
		||||
                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
 | 
			
		||||
                   }
 | 
			
		||||
                 }
 | 
			
		||||
              then posix_mkdir=:
 | 
			
		||||
              fi
 | 
			
		||||
              rmdir "$tmpdir/d" "$tmpdir"
 | 
			
		||||
              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
 | 
			
		||||
            else
 | 
			
		||||
              # Remove any dirs left behind by ancient mkdir implementations.
 | 
			
		||||
              rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
 | 
			
		||||
              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
 | 
			
		||||
            fi
 | 
			
		||||
            trap '' 0;;
 | 
			
		||||
        esac;;
 | 
			
		||||
@@ -427,8 +444,8 @@ do
 | 
			
		||||
  else
 | 
			
		||||
 | 
			
		||||
    # Make a couple of temp file names in the proper directory.
 | 
			
		||||
    dsttmp=$dstdir/_inst.$$_
 | 
			
		||||
    rmtmp=$dstdir/_rm.$$_
 | 
			
		||||
    dsttmp=${dstdirslash}_inst.$$_
 | 
			
		||||
    rmtmp=${dstdirslash}_rm.$$_
 | 
			
		||||
 | 
			
		||||
    # Trap to clean up those temp files at exit.
 | 
			
		||||
    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
 | 
			
		||||
@@ -493,9 +510,9 @@ do
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Local variables:
 | 
			
		||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
 | 
			
		||||
# eval: (add-hook 'before-save-hook 'time-stamp)
 | 
			
		||||
# time-stamp-start: "scriptversion="
 | 
			
		||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
 | 
			
		||||
# time-stamp-time-zone: "UTC"
 | 
			
		||||
# time-stamp-time-zone: "UTC0"
 | 
			
		||||
# time-stamp-end: "; # UTC"
 | 
			
		||||
# End:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
#! /bin/sh
 | 
			
		||||
# Common wrapper for a few potentially missing GNU programs.
 | 
			
		||||
 | 
			
		||||
scriptversion=2013-10-28.13; # UTC
 | 
			
		||||
scriptversion=2018-03-07.03; # UTC
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 | 
			
		||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 | 
			
		||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 | 
			
		||||
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
@@ -17,7 +17,7 @@ scriptversion=2013-10-28.13; # UTC
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
# As a special exception to the GNU General Public License, if you
 | 
			
		||||
# distribute this file as part of a program that contains a
 | 
			
		||||
@@ -101,9 +101,9 @@ else
 | 
			
		||||
  exit $st
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
perl_URL=http://www.perl.org/
 | 
			
		||||
flex_URL=http://flex.sourceforge.net/
 | 
			
		||||
gnu_software_URL=http://www.gnu.org/software
 | 
			
		||||
perl_URL=https://www.perl.org/
 | 
			
		||||
flex_URL=https://github.com/westes/flex
 | 
			
		||||
gnu_software_URL=https://www.gnu.org/software
 | 
			
		||||
 | 
			
		||||
program_details ()
 | 
			
		||||
{
 | 
			
		||||
@@ -207,9 +207,9 @@ give_advice "$1" | sed -e '1s/^/WARNING: /' \
 | 
			
		||||
exit $st
 | 
			
		||||
 | 
			
		||||
# Local variables:
 | 
			
		||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
 | 
			
		||||
# eval: (add-hook 'before-save-hook 'time-stamp)
 | 
			
		||||
# time-stamp-start: "scriptversion="
 | 
			
		||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
 | 
			
		||||
# time-stamp-time-zone: "UTC"
 | 
			
		||||
# time-stamp-time-zone: "UTC0"
 | 
			
		||||
# time-stamp-end: "; # UTC"
 | 
			
		||||
# End:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								cmake/Modules/QbtTranslations.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								cmake/Modules/QbtTranslations.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
# macros to handle translation files
 | 
			
		||||
 | 
			
		||||
# qbt_add_translations(<target> QRC_FILE <filename> TS_FILES <filenames>)
 | 
			
		||||
# handles out of source builds for Qt resource files that include translations
 | 
			
		||||
# The function generates translations out of the supplied list of .ts files in the build directory,
 | 
			
		||||
# copies the .qrc file there, calls qt5_add_resources() adds its output to the target sources list.
 | 
			
		||||
function(qbt_add_translations _target)
 | 
			
		||||
    set(oneValueArgs QRC_FILE)
 | 
			
		||||
    set(multiValueArgs TS_FILES)
 | 
			
		||||
    cmake_parse_arguments(QBT_TR "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 | 
			
		||||
 | 
			
		||||
    get_target_property(_binaryDir ${_target} BINARY_DIR)
 | 
			
		||||
 | 
			
		||||
    if (NOT QBT_TR_QRC_FILE)
 | 
			
		||||
        message(FATAL_ERROR "QRC file is empty")
 | 
			
		||||
    endif()
 | 
			
		||||
    if (NOT QBT_TR_TS_FILES)
 | 
			
		||||
        message(FATAL_ERROR "TS_FILES files are empty")
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    if(IS_ABSOLUTE "${QBT_TR_QRC_FILE}")
 | 
			
		||||
        file(RELATIVE_PATH _qrcToTs "${CMAKE_CURRENT_SOURCE_DIR}" "${QBT_TR_QRC_FILE}")
 | 
			
		||||
    else()
 | 
			
		||||
        set(_qrcToTs "${QBT_TR_QRC_FILE}")
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    get_filename_component(_qrcToTsDir "${_qrcToTs}" DIRECTORY)
 | 
			
		||||
 | 
			
		||||
    get_filename_component(_qmFilesBinaryDir "${CMAKE_CURRENT_BINARY_DIR}/${_qrcToTsDir}" ABSOLUTE)
 | 
			
		||||
    # to make qt5_add_translation() work as we need
 | 
			
		||||
    set_source_files_properties(${QBT_TR_TS_FILES} PROPERTIES OUTPUT_LOCATION "${_qmFilesBinaryDir}")
 | 
			
		||||
    qt5_add_translation(_qmFiles ${QBT_TR_TS_FILES})
 | 
			
		||||
 | 
			
		||||
    set(_qrc_dest_dir "${_binaryDir}/${_qrcToTsDir}")
 | 
			
		||||
    set(_qrc_dest_file "${_binaryDir}/${QBT_TR_QRC_FILE}")
 | 
			
		||||
 | 
			
		||||
    message(STATUS "copying ${QBT_TR_QRC_FILE} to ${_qrc_dest_dir}")
 | 
			
		||||
    file(COPY ${QBT_TR_QRC_FILE} DESTINATION ${_qrc_dest_dir})
 | 
			
		||||
 | 
			
		||||
    set_source_files_properties("${_qrc_dest_file}" PROPERTIES
 | 
			
		||||
        GENERATED True
 | 
			
		||||
        OBJECT_DEPENDS "${_qmFiles}")
 | 
			
		||||
 | 
			
		||||
    # With AUTORCC enabled rcc is ran by cmake before language files are generated,
 | 
			
		||||
    # and thus we call rcc explicitly
 | 
			
		||||
    qt5_add_resources(_resources "${_qrc_dest_file}")
 | 
			
		||||
    target_sources(${_target} PRIVATE "${_resources}")
 | 
			
		||||
endfunction()
 | 
			
		||||
@@ -5,6 +5,8 @@ BINDIR = @EXPAND_BINDIR@
 | 
			
		||||
DATADIR = @EXPAND_DATADIR@
 | 
			
		||||
MANPREFIX = @EXPAND_MANDIR@
 | 
			
		||||
 | 
			
		||||
QMAKE_CC = @QBT_CC@
 | 
			
		||||
QMAKE_CXX = @QBT_CXX@
 | 
			
		||||
QMAKE_CXXFLAGS += @QBT_CONF_EXTRA_CFLAGS@
 | 
			
		||||
 | 
			
		||||
EXTERNAL_INCLUDES = @QBT_CONF_INCLUDES@
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								configure.ac
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
AC_INIT([qbittorrent], [v4.1.3], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
 | 
			
		||||
AC_INIT([qbittorrent], [v4.1.9], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
 | 
			
		||||
AC_CONFIG_AUX_DIR([build-aux])
 | 
			
		||||
AC_CONFIG_MACRO_DIR([m4])
 | 
			
		||||
AC_PROG_CC
 | 
			
		||||
@@ -8,7 +8,9 @@ AC_LANG(C++)
 | 
			
		||||
AC_CANONICAL_HOST
 | 
			
		||||
AM_INIT_AUTOMAKE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# use compiler from env variables if available
 | 
			
		||||
QBT_CC="$CC"
 | 
			
		||||
QBT_CXX="$CXX"
 | 
			
		||||
 | 
			
		||||
# Define --wth-* and --enable-* arguments
 | 
			
		||||
 | 
			
		||||
@@ -162,14 +164,13 @@ AS_CASE(["x$enable_qt_dbus"],
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
AX_BOOST_BASE([1.35],
 | 
			
		||||
              [AC_MSG_NOTICE([Boost CPPFLAGS: "$BOOST_CPPFLAGS"
 | 
			
		||||
                Boost LDFLAGS: "$BOOST_LDFLAGS"])],
 | 
			
		||||
              [AC_MSG_NOTICE([Boost CXXFLAGS: "$BOOST_CPPFLAGS"])
 | 
			
		||||
               AC_MSG_NOTICE([Boost LDFLAGS: "$BOOST_LDFLAGS"])],
 | 
			
		||||
              [AC_MSG_ERROR([Could not find Boost])])
 | 
			
		||||
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
 | 
			
		||||
CXXFLAGS="$BOOST_CPPFLAGS $CXXFLAGS"
 | 
			
		||||
LDFLAGS="$BOOST_LDFLAGS $LDFLAGS"
 | 
			
		||||
 | 
			
		||||
# add workaround for problematic boost version
 | 
			
		||||
AC_LANG_PUSH(C++)
 | 
			
		||||
# taken from ax_boost_base.m4
 | 
			
		||||
m4_define([DETECT_BOOST_VERSION_PROGRAM],
 | 
			
		||||
    [AC_LANG_PROGRAM([[#include <boost/version.hpp>]],
 | 
			
		||||
@@ -177,7 +178,6 @@ m4_define([DETECT_BOOST_VERSION_PROGRAM],
 | 
			
		||||
 | 
			
		||||
AC_COMPILE_IFELSE([DETECT_BOOST_VERSION_PROGRAM(106000)], [],
 | 
			
		||||
    [QBT_ADD_DEFINES="$QBT_ADD_DEFINES BOOST_NO_CXX11_RVALUE_REFERENCES"])
 | 
			
		||||
AC_LANG_POP([C++])
 | 
			
		||||
 | 
			
		||||
AX_BOOST_SYSTEM()
 | 
			
		||||
AC_MSG_NOTICE([Boost.System LIB: "$BOOST_SYSTEM_LIB"])
 | 
			
		||||
@@ -196,14 +196,46 @@ AS_CASE(["x$with_qtsingleapplication"],
 | 
			
		||||
 | 
			
		||||
PKG_CHECK_MODULES(libtorrent,
 | 
			
		||||
                  [libtorrent-rasterbar >= 1.0.6],
 | 
			
		||||
                  [CPPFLAGS="$libtorrent_CFLAGS $CPPFLAGS"
 | 
			
		||||
                  [CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS"
 | 
			
		||||
                  LIBS="$libtorrent_LIBS $LIBS"])
 | 
			
		||||
 | 
			
		||||
PKG_CHECK_MODULES(zlib,
 | 
			
		||||
                 [zlib >= 1.2.5.2],
 | 
			
		||||
                 [CPPFLAGS="$zlib_CFLAGS $CPPFLAGS"
 | 
			
		||||
                 [CXXFLAGS="$zlib_CFLAGS $CXXFLAGS"
 | 
			
		||||
                 LIBS="$zlib_LIBS $LIBS"])
 | 
			
		||||
 | 
			
		||||
# Check if already in >= C++11 mode because of the flags returned by one of the above packages
 | 
			
		||||
AC_MSG_CHECKING([if compiler is using C++11 or later mode])
 | 
			
		||||
AC_COMPILE_IFELSE([DETECT_CPP11_PROGRAM()],
 | 
			
		||||
                  [AC_MSG_RESULT([yes])
 | 
			
		||||
                   QBT_CXX11_FOUND="yes"],
 | 
			
		||||
                  [AC_MSG_RESULT([no])
 | 
			
		||||
                   QBT_CXX11_FOUND="no"])
 | 
			
		||||
                  
 | 
			
		||||
# In case of no, check if the compiler can support at least C++11
 | 
			
		||||
# and if yes, enable it leaving a warning to the user
 | 
			
		||||
AS_IF([test "x$QBT_CXX11_FOUND" = "xno"],
 | 
			
		||||
      [AC_MSG_CHECKING([if compiler supports C++11])
 | 
			
		||||
       TMP_CXXFLAGS="$CXXFLAGS"
 | 
			
		||||
       CXXFLAGS="$CXXFLAGS -std=c++11"
 | 
			
		||||
       AC_COMPILE_IFELSE([DETECT_CPP11_PROGRAM()],
 | 
			
		||||
                        [AC_MSG_RESULT([yes])
 | 
			
		||||
                         AC_MSG_CHECKING([if C++11 is disabled by the set compiler flags])
 | 
			
		||||
                         # prepend the flag so it won't override conflicting user defined flags
 | 
			
		||||
                         CXXFLAGS="-std=c++11 $TMP_CXXFLAGS"
 | 
			
		||||
                         AC_COMPILE_IFELSE([DETECT_CPP11_PROGRAM()],
 | 
			
		||||
                                           [AC_MSG_RESULT([no])
 | 
			
		||||
                                            CXXFLAGS="$TMP_CXXFLAGS -std=c++11"
 | 
			
		||||
                                            AC_MSG_WARN([C++11 mode is now force enabled.
 | 
			
		||||
Make sure you use the same C++ mode for qBittorrent and its dependencies.
 | 
			
		||||
To explicitly set qBittorrent to a later mode use CXXFLAGS.
 | 
			
		||||
Example: `CXXFLAGS="\$CXXFLAGS -std=c++14" ./configure`])],
 | 
			
		||||
                                           [AC_MSG_RESULT([yes])
 | 
			
		||||
                                            AC_MSG_ERROR([The compiler supports C++11 but the user or a dependency has explicitly enabled a lower mode.])])],
 | 
			
		||||
                        [AC_MSG_RESULT([no])
 | 
			
		||||
                         AC_MSG_ERROR([A compiler supporting C++11 is required.])])
 | 
			
		||||
      ])
 | 
			
		||||
 | 
			
		||||
# These are required because autoconf doesn't expand these **particular**
 | 
			
		||||
# vars automatically. And qmake cannot autoexpand them.
 | 
			
		||||
AX_DEFINE_DIR([EXPAND_PREFIX], [prefix])
 | 
			
		||||
@@ -230,18 +262,20 @@ extract() {
 | 
			
		||||
  for i in $string; do
 | 
			
		||||
    case "$(echo "$i" | cut -c1)" in
 | 
			
		||||
      '') ;;
 | 
			
		||||
      D) QBT_CONF_DEFINES="$(echo $i | cut -c2-) $QBT_CONF_DEFINES";;
 | 
			
		||||
      I) QBT_CONF_INCLUDES="$(echo $i | cut -c2-) $QBT_CONF_INCLUDES";;
 | 
			
		||||
      *) QBT_CONF_EXTRA_CFLAGS="-$i $QBT_CONF_EXTRA_CFLAGS";;
 | 
			
		||||
      D) QBT_CONF_DEFINES="$QBT_CONF_DEFINES $(echo $i | cut -c2-)";;
 | 
			
		||||
      I) QBT_CONF_INCLUDES="$QBT_CONF_INCLUDES $(echo $i | cut -c2-)";;
 | 
			
		||||
      *) QBT_CONF_EXTRA_CFLAGS="$QBT_CONF_EXTRA_CFLAGS -$i";;
 | 
			
		||||
    esac
 | 
			
		||||
  done
 | 
			
		||||
  IFS=$SAVEIFS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extract "$CFLAGS $CPPFLAGS $CXXFLAGS"
 | 
			
		||||
extract "$CFLAGS $CXXFLAGS"
 | 
			
		||||
QBT_ADD_DEFINES="$QBT_ADD_DEFINES $QBT_CONF_DEFINES"
 | 
			
		||||
 | 
			
		||||
# Substitute the values of these vars in conf.pri.in
 | 
			
		||||
AC_SUBST(QBT_CC)
 | 
			
		||||
AC_SUBST(QBT_CXX)
 | 
			
		||||
AC_SUBST(QBT_CONF_INCLUDES)
 | 
			
		||||
AC_SUBST(QBT_CONF_EXTRA_CFLAGS)
 | 
			
		||||
AC_SUBST(QBT_ADD_CONFIG)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								dist/mac/Info.plist
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								dist/mac/Info.plist
									
									
									
									
										vendored
									
									
								
							@@ -2,6 +2,10 @@
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>CFBundleDevelopmentRegion</key>
 | 
			
		||||
	<string>en</string>
 | 
			
		||||
	<key>CFBundleDisplayName</key>
 | 
			
		||||
	<string>qBittorrent</string>
 | 
			
		||||
	<key>CFBundleDocumentTypes</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<dict>
 | 
			
		||||
@@ -21,6 +25,10 @@
 | 
			
		||||
			<array>
 | 
			
		||||
				<string>org.bittorrent.torrent</string>
 | 
			
		||||
			</array>
 | 
			
		||||
			<key>NSExportableTypes</key>
 | 
			
		||||
			<array>
 | 
			
		||||
				<string>org.bittorrent.torrent</string>
 | 
			
		||||
			</array>
 | 
			
		||||
			<key>LSIsAppleDefaultForType</key>
 | 
			
		||||
			<true/>
 | 
			
		||||
		</dict>
 | 
			
		||||
@@ -28,6 +36,8 @@
 | 
			
		||||
	<key>CFBundleURLTypes</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>CFBundleTypeRole</key>
 | 
			
		||||
			<string>Viewer</string>
 | 
			
		||||
			<key>CFBundleURLSchemes</key>
 | 
			
		||||
			<array>
 | 
			
		||||
				<string>magnet</string>
 | 
			
		||||
@@ -45,21 +55,19 @@
 | 
			
		||||
	<key>CFBundlePackageType</key>
 | 
			
		||||
	<string>APPL</string>
 | 
			
		||||
	<key>CFBundleShortVersionString</key>
 | 
			
		||||
	<string>4.1.3</string>
 | 
			
		||||
	<key>CFBundleSignature</key>
 | 
			
		||||
	<string>qBit</string>
 | 
			
		||||
	<string>4.1.9</string>
 | 
			
		||||
	<key>CFBundleExecutable</key>
 | 
			
		||||
	<string>@EXECUTABLE@</string>
 | 
			
		||||
	<key>CFBundleIdentifier</key>
 | 
			
		||||
	<string>org.qbittorrent</string>
 | 
			
		||||
	<string>org.qbittorrent.qBittorrent</string>
 | 
			
		||||
	<key>LSMinimumSystemVersion</key>
 | 
			
		||||
	<string>${MACOSX_DEPLOYMENT_TARGET}.0</string>
 | 
			
		||||
	<key>NSPrincipalClass</key>
 | 
			
		||||
	<string>NSApplication</string>
 | 
			
		||||
	<key>NSHighResolutionCapable</key>
 | 
			
		||||
	<string>True</string>
 | 
			
		||||
	<key>NSAppleScriptEnabled</key>
 | 
			
		||||
	<string>YES</string>
 | 
			
		||||
	<key>NSHumanReadableCopyright</key>
 | 
			
		||||
	<string>Copyright © 2006-2018 The qBittorrent project</string>
 | 
			
		||||
	<string>Copyright © 2006-2019 The qBittorrent project</string>
 | 
			
		||||
	<key>UTExportedTypeDeclarations</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<dict>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								dist/mac/qBitTorrentDocument.icns
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/mac/qBitTorrentDocument.icns
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										6
									
								
								dist/unix/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/unix/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							@@ -31,12 +31,12 @@ if (Qt5Widgets_FOUND)
 | 
			
		||||
            DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor
 | 
			
		||||
            FILES_MATCHING PATTERN "*.png")
 | 
			
		||||
 | 
			
		||||
    install(FILES qbittorrent.desktop
 | 
			
		||||
    install(FILES org.qbittorrent.qBittorrent.desktop
 | 
			
		||||
            DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications/
 | 
			
		||||
            COMPONENT data)
 | 
			
		||||
 | 
			
		||||
    install(FILES qbittorrent.appdata.xml
 | 
			
		||||
            DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/appdata/
 | 
			
		||||
    install(FILES org.qbittorrent.qBittorrent.appdata.xml
 | 
			
		||||
            DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo/
 | 
			
		||||
            COMPONENT data)
 | 
			
		||||
 | 
			
		||||
    install(FILES
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										75
									
								
								dist/unix/org.qbittorrent.qBittorrent.appdata.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								dist/unix/org.qbittorrent.qBittorrent.appdata.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,75 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!-- Copyright 2014 sledgehammer999 <sledgehammer999@qbittorrent.org> -->
 | 
			
		||||
<component type="desktop">
 | 
			
		||||
  <id>org.qbittorrent.qBittorrent</id>
 | 
			
		||||
  <metadata_license>CC0-1.0</metadata_license>
 | 
			
		||||
  <project_license>GPL-2.0 and OpenSSL</project_license>
 | 
			
		||||
  <name>qBittorrent</name>
 | 
			
		||||
  <summary>An open-source Bittorrent client</summary>
 | 
			
		||||
  <description>
 | 
			
		||||
    <p>
 | 
			
		||||
      The qBittorrent project aims to provide an open-source software alternative to µTorrent.
 | 
			
		||||
      Additionally, qBittorrent runs and provides the same features on all major platforms (FreeBSD, Linux, macOS, OS/2, Windows).
 | 
			
		||||
      qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.
 | 
			
		||||
    </p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li>Polished µTorrent-like User Interface</li>
 | 
			
		||||
      <li>
 | 
			
		||||
        Well-integrated and extensible Search Engine
 | 
			
		||||
        <ul>
 | 
			
		||||
          <li>Simultaneous search in many Torrent search sites</li>
 | 
			
		||||
          <li>Category-specific search requests (e.g. Books, Music, Software)</li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      </li>
 | 
			
		||||
      <li>RSS feed support with advanced download filters (incl. regex)</li>
 | 
			
		||||
      <li>
 | 
			
		||||
        Many Bittorrent extensions supported:
 | 
			
		||||
        <ul>
 | 
			
		||||
          <li>Magnet links</li>
 | 
			
		||||
          <li>Distributed hash table (DHT), peer exchange protocol (PEX), local peer discovery (LSD)</li>
 | 
			
		||||
          <li>Private torrents</li>
 | 
			
		||||
          <li>Encrypted connections</li>
 | 
			
		||||
          <li>and many more...</li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      </li>
 | 
			
		||||
      <li>Remote control through Web user interface, written with AJAX</li>
 | 
			
		||||
      <li>Sequential downloading (Download in order)</li>
 | 
			
		||||
      <li>
 | 
			
		||||
        Advanced control over torrents, trackers and peers
 | 
			
		||||
        <ul>
 | 
			
		||||
          <li>Torrents queueing and prioritizing</li>
 | 
			
		||||
          <li>Torrent content selection and prioritizing</li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      </li>
 | 
			
		||||
      <li>Bandwidth scheduler</li>
 | 
			
		||||
      <li>Torrent creation tool</li>
 | 
			
		||||
      <li>IP Filtering (eMule & PeerGuardian format compatible)</li>
 | 
			
		||||
      <li>IPv6 compliant</li>
 | 
			
		||||
      <li>UPnP / NAT-PMP port forwarding support</li>
 | 
			
		||||
      <li>Available on all platforms: Windows, Linux, macOS, FreeBSD, OS/2</li>
 | 
			
		||||
      <li>Available in ~70 languages</li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </description>
 | 
			
		||||
  <launchable type="desktop-id">org.qbittorrent.qBittorrent.desktop</launchable>
 | 
			
		||||
  <screenshots>
 | 
			
		||||
    <screenshot type="default">
 | 
			
		||||
      <image height="675" width="1200">https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_01.png</image>
 | 
			
		||||
    </screenshot>
 | 
			
		||||
    <screenshot>
 | 
			
		||||
      <image height="675" width="1200">https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_02.png</image>
 | 
			
		||||
    </screenshot>
 | 
			
		||||
    <screenshot>
 | 
			
		||||
      <image height="675" width="1200">https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_03.png</image>
 | 
			
		||||
    </screenshot>
 | 
			
		||||
    <screenshot>
 | 
			
		||||
      <image height="675" width="1200">https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_04.png</image>
 | 
			
		||||
    </screenshot>
 | 
			
		||||
  </screenshots>
 | 
			
		||||
  <update_contact>sledgehammer999@qbittorrent.org</update_contact>
 | 
			
		||||
  <developer_name>The qBittorrent Project</developer_name>
 | 
			
		||||
  <url type="homepage">https://www.qbittorrent.org/</url>
 | 
			
		||||
  <url type="bugtracker">http://bugs.qbittorrent.org/</url>
 | 
			
		||||
  <url type="donation">https://www.qbittorrent.org/donate</url>
 | 
			
		||||
  <url type="help">http://forum.qbittorrent.org/</url>
 | 
			
		||||
  <url type="translate">https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent</url>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										66
									
								
								dist/unix/qbittorrent.appdata.xml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										66
									
								
								dist/unix/qbittorrent.appdata.xml
									
									
									
									
										vendored
									
									
								
							@@ -1,66 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!-- Copyright 2014 sledgehammer999 <sledgehammer999@qbittorrent.org> -->
 | 
			
		||||
<component type="desktop">
 | 
			
		||||
  <id>qbittorrent.desktop</id>
 | 
			
		||||
  <metadata_license>CC0-1.0</metadata_license>
 | 
			
		||||
  <project_license>GPL-2.0 and OpenSSL</project_license>
 | 
			
		||||
  <name>qBittorrent</name>
 | 
			
		||||
  <summary>A Bittorrent Client</summary>
 | 
			
		||||
  <description>
 | 
			
		||||
    <p>
 | 
			
		||||
   Aiming to be a good alternative to all other bittorrent clients out
 | 
			
		||||
   there, qBittorrent is fast, stable and provides unicode support as well
 | 
			
		||||
   as many other features. Additionally, qBittorrent runs and provides those
 | 
			
		||||
   same features on all major platforms (Linux, Mac OS X, Windows, FreeBSD).
 | 
			
		||||
  </p>
 | 
			
		||||
    <p>
 | 
			
		||||
   It is programmed in C++ / Qt and uses libtorrent (sometimes called
 | 
			
		||||
   libtorrent-rasterbar) by Arvid Norberg. GeoLite data, created by MaxMind,
 | 
			
		||||
   are included in qBittorrent. Its features include:
 | 
			
		||||
  </p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li>Polished µTorrent-like User Interface</li>
 | 
			
		||||
      <li>Well-integrated and extensible Search Engine</li>
 | 
			
		||||
      <li>All Bittorrent extensions (DHT, Peer Exchange, Full encryption, Magnet/BitComet URIs, ...)</li>
 | 
			
		||||
      <li>Remote control through a Web user interface</li>
 | 
			
		||||
      <li>Advanced control over trackers, peers and torrents</li>
 | 
			
		||||
      <li>UPnP / NAT-PMP port forwarding support</li>
 | 
			
		||||
      <li>Available in ~25 languages (Unicode support)</li>
 | 
			
		||||
      <li>Torrent creation tool</li>
 | 
			
		||||
      <li>Advanced RSS support with download filters (inc. regex)</li>
 | 
			
		||||
      <li>Bandwidth scheduler</li>
 | 
			
		||||
      <li>IP Filtering (eMule and PeerGuardian compatible)</li>
 | 
			
		||||
      <li>IPv6 compliant</li>
 | 
			
		||||
      <li>Sequential downloading (aka "Download in order")</li>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </description>
 | 
			
		||||
  <screenshots>
 | 
			
		||||
    <screenshot type="default">
 | 
			
		||||
      <image height="675" width="1200">
 | 
			
		||||
    https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_01.png
 | 
			
		||||
   </image>
 | 
			
		||||
    </screenshot>
 | 
			
		||||
    <screenshot>
 | 
			
		||||
      <image height="675" width="1200">
 | 
			
		||||
    https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_02.png
 | 
			
		||||
   </image>
 | 
			
		||||
    </screenshot>
 | 
			
		||||
    <screenshot>
 | 
			
		||||
      <image height="675" width="1200">
 | 
			
		||||
    https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_03.png
 | 
			
		||||
   </image>
 | 
			
		||||
    </screenshot>
 | 
			
		||||
    <screenshot>
 | 
			
		||||
      <image height="675" width="1200">
 | 
			
		||||
    https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_04.png
 | 
			
		||||
   </image>
 | 
			
		||||
    </screenshot>
 | 
			
		||||
  </screenshots>
 | 
			
		||||
  <url type="homepage">https://www.qbittorrent.org/</url>
 | 
			
		||||
  <update_contact>sledgehammer999@qbittorrent.org</update_contact>
 | 
			
		||||
  <developer_name>The qBittorrent Project</developer_name>
 | 
			
		||||
  <url type="bugtracker">http://bugs.qbittorrent.org/</url>
 | 
			
		||||
  <url type="donation">https://www.qbittorrent.org/donate</url>
 | 
			
		||||
  <url type="help">http://forum.qbittorrent.org/</url>
 | 
			
		||||
  <url type="translate">https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent</url>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										4
									
								
								dist/windows/options.nsi
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/windows/options.nsi
									
									
									
									
										vendored
									
									
								
							@@ -27,7 +27,7 @@ XPStyle on
 | 
			
		||||
!define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path
 | 
			
		||||
 | 
			
		||||
; Program specific
 | 
			
		||||
!define PROG_VERSION "4.1.3"
 | 
			
		||||
!define PROG_VERSION "4.1.9"
 | 
			
		||||
 | 
			
		||||
!define MUI_FINISHPAGE_RUN
 | 
			
		||||
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
 | 
			
		||||
@@ -50,7 +50,7 @@ XPStyle on
 | 
			
		||||
;Installer Version Information
 | 
			
		||||
VIAddVersionKey "ProductName" "qBittorrent"
 | 
			
		||||
VIAddVersionKey "CompanyName" "The qBittorrent project"
 | 
			
		||||
VIAddVersionKey "LegalCopyright" "Copyright ©2006-2018 The qBittorrent project"
 | 
			
		||||
VIAddVersionKey "LegalCopyright" "Copyright ©2006-2019 The qBittorrent project"
 | 
			
		||||
VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client"
 | 
			
		||||
VIAddVersionKey "FileVersion" "${PROG_VERSION}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@
 | 
			
		||||
#   and this notice are preserved. This file is offered as-is, without any
 | 
			
		||||
#   warranty.
 | 
			
		||||
 | 
			
		||||
#serial 42
 | 
			
		||||
#serial 47
 | 
			
		||||
 | 
			
		||||
# example boost program (need to pass version)
 | 
			
		||||
m4_define([_AX_BOOST_BASE_PROGRAM],
 | 
			
		||||
@@ -113,7 +113,8 @@ AC_DEFUN([_AX_BOOST_BASE_RUNDETECT],[
 | 
			
		||||
    dnl are found, e.g. when only header-only libraries are installed!
 | 
			
		||||
    AS_CASE([${host_cpu}],
 | 
			
		||||
      [x86_64],[libsubdirs="lib64 libx32 lib lib64"],
 | 
			
		||||
      [ppc64|s390x|sparc64|aarch64|ppc64le],[libsubdirs="lib64 lib lib64"],
 | 
			
		||||
      [mips*64*],[libsubdirs="lib64 lib32 lib lib64"],
 | 
			
		||||
      [ppc64|powerpc64|s390x|sparc64|aarch64|ppc64le|powerpc64le|riscv64],[libsubdirs="lib64 lib lib64"],
 | 
			
		||||
      [libsubdirs="lib"]
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@
 | 
			
		||||
#   and this notice are preserved. This file is offered as-is, without any
 | 
			
		||||
#   warranty.
 | 
			
		||||
 | 
			
		||||
#serial 19
 | 
			
		||||
#serial 20
 | 
			
		||||
 | 
			
		||||
AC_DEFUN([AX_BOOST_SYSTEM],
 | 
			
		||||
[
 | 
			
		||||
@@ -108,7 +108,7 @@ AC_DEFUN([AX_BOOST_SYSTEM],
 | 
			
		||||
 | 
			
		||||
            fi
 | 
			
		||||
            if test "x$ax_lib" = "x"; then
 | 
			
		||||
                AC_MSG_ERROR(Could not find a version of the library!)
 | 
			
		||||
                AC_MSG_ERROR(Could not find a version of the Boost::System library!)
 | 
			
		||||
            fi
 | 
			
		||||
			if test "x$link_system" = "xno"; then
 | 
			
		||||
				AC_MSG_ERROR(Could not link against $ax_lib !)
 | 
			
		||||
 
 | 
			
		||||
@@ -36,3 +36,16 @@ AC_DEFUN([FIND_QTDBUS],
 | 
			
		||||
                        [AC_MSG_RESULT([not found])
 | 
			
		||||
                         HAVE_QTDBUS=[false]])
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
# DETECT_CPP11_PROGRAM()
 | 
			
		||||
# Detects if at least C++11 mode is enabled.
 | 
			
		||||
# --------------------------------------
 | 
			
		||||
AC_DEFUN([DETECT_CPP11_PROGRAM],
 | 
			
		||||
       [AC_LANG_PROGRAM([[
 | 
			
		||||
            #ifndef __cplusplus
 | 
			
		||||
            #error "This is not a C++ compiler"
 | 
			
		||||
            #elif __cplusplus < 201103L
 | 
			
		||||
            #error "This is not a C++11 compiler"
 | 
			
		||||
            #endif]],
 | 
			
		||||
            [[]])
 | 
			
		||||
])
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,13 @@
 | 
			
		||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
 | 
			
		||||
set(CMAKE_CXX_STANDARD "11")
 | 
			
		||||
 | 
			
		||||
# If C++14 is available, use it as libtorent ABI depends on 11/14 version
 | 
			
		||||
if (cxx_std_14 IN_LIST CMAKE_CXX_COMPILE_FEATURES)
 | 
			
		||||
    message(STATUS "Building in C++14 mode")
 | 
			
		||||
    set(CMAKE_CXX_STANDARD "14")
 | 
			
		||||
else()
 | 
			
		||||
    message(STATUS "Building in C++11 mode")
 | 
			
		||||
    set(CMAKE_CXX_STANDARD "11")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
include(MacroQbtCompilerSettings)
 | 
			
		||||
qbt_set_compiler_options()
 | 
			
		||||
@@ -13,7 +21,7 @@ if (Boost_VERSION VERSION_LESS 106000)
 | 
			
		||||
    add_definitions(-DBOOST_NO_CXX11_RVALUE_REFERENCES)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
find_package(Qt5 ${requiredQtVersion} REQUIRED COMPONENTS Core Network Xml)
 | 
			
		||||
find_package(Qt5 ${requiredQtVersion} REQUIRED COMPONENTS Core Network Xml LinguistTools)
 | 
			
		||||
find_package(Qt5Widgets ${requiredQtVersion})
 | 
			
		||||
if (Qt5Widgets_FOUND)
 | 
			
		||||
    find_package(Qt5DBus ${requiredQtVersion})
 | 
			
		||||
 
 | 
			
		||||
@@ -23,29 +23,19 @@ set_target_properties(qBittorrent
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# translations
 | 
			
		||||
include(QbtTranslations)
 | 
			
		||||
 | 
			
		||||
file(GLOB QBT_TS_FILES ../lang/*.ts)
 | 
			
		||||
get_filename_component(QBT_QM_FILES_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/../lang" ABSOLUTE)
 | 
			
		||||
set_source_files_properties(${QBT_TS_FILES} PROPERTIES OUTPUT_LOCATION "${QBT_QM_FILES_BINARY_DIR}")
 | 
			
		||||
qbt_add_translations(qBittorrent QRC_FILE "../lang/lang.qrc" TS_FILES ${QBT_TS_FILES})
 | 
			
		||||
 | 
			
		||||
find_package(Qt5 COMPONENTS LinguistTools REQUIRED)
 | 
			
		||||
qt5_add_translation(QBT_QM_FILES ${QBT_TS_FILES})
 | 
			
		||||
 | 
			
		||||
get_filename_component(_lang_qrc_src "${CMAKE_CURRENT_SOURCE_DIR}/../lang/lang.qrc" ABSOLUTE)
 | 
			
		||||
get_filename_component(_lang_qrc_dst "${CMAKE_CURRENT_BINARY_DIR}/../lang/lang.qrc" ABSOLUTE)
 | 
			
		||||
get_filename_component(_lang_qrc_dst_dir "${CMAKE_CURRENT_BINARY_DIR}/../lang" ABSOLUTE)
 | 
			
		||||
 | 
			
		||||
message(STATUS "copying ${_lang_qrc_src} -> ${_lang_qrc_dst}")
 | 
			
		||||
file(COPY ${_lang_qrc_src} DESTINATION ${_lang_qrc_dst_dir})
 | 
			
		||||
 | 
			
		||||
set_source_files_properties("${_lang_qrc_dst}" PROPERTIES GENERATED True)
 | 
			
		||||
foreach(qm_file ${QBT_QM_FILES})
 | 
			
		||||
    set_source_files_properties("${_lang_qrc_dst}" PROPERTIES OBJECT_DEPENDS ${qm_file})
 | 
			
		||||
endforeach()
 | 
			
		||||
if (WEBUI)
 | 
			
		||||
    file(GLOB QBT_WEBUI_TS_FILES ../webui/www/translations/*.ts)
 | 
			
		||||
    qbt_add_translations(qBittorrent QRC_FILE "../webui/www/translations/webui_translations.qrc" TS_FILES ${QBT_WEBUI_TS_FILES})
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
set(QBT_APP_RESOURCES
 | 
			
		||||
../icons/icons.qrc
 | 
			
		||||
../searchengine/searchengine.qrc
 | 
			
		||||
"${_lang_qrc_dst}"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# With AUTORCC rcc is ran by cmake before language files are generated,
 | 
			
		||||
 
 | 
			
		||||
@@ -44,6 +44,7 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef DISABLE_GUI
 | 
			
		||||
#include <QMessageBox>
 | 
			
		||||
#ifdef Q_OS_WIN
 | 
			
		||||
#include <QSessionManager>
 | 
			
		||||
#include <QSharedMemory>
 | 
			
		||||
@@ -61,6 +62,7 @@
 | 
			
		||||
 | 
			
		||||
#include "base/bittorrent/session.h"
 | 
			
		||||
#include "base/bittorrent/torrenthandle.h"
 | 
			
		||||
#include "base/exceptions.h"
 | 
			
		||||
#include "base/iconprovider.h"
 | 
			
		||||
#include "base/logger.h"
 | 
			
		||||
#include "base/net/downloadmanager.h"
 | 
			
		||||
@@ -72,6 +74,7 @@
 | 
			
		||||
#include "base/rss/rss_autodownloader.h"
 | 
			
		||||
#include "base/rss/rss_session.h"
 | 
			
		||||
#include "base/scanfoldersmodel.h"
 | 
			
		||||
#include "base/search/searchpluginmanager.h"
 | 
			
		||||
#include "base/settingsstorage.h"
 | 
			
		||||
#include "base/utils/fs.h"
 | 
			
		||||
#include "base/utils/misc.h"
 | 
			
		||||
@@ -121,6 +124,7 @@ Application::Application(const QString &id, int &argc, char **argv)
 | 
			
		||||
    qRegisterMetaType<Log::Msg>("Log::Msg");
 | 
			
		||||
 | 
			
		||||
    setApplicationName("qBittorrent");
 | 
			
		||||
    setOrganizationDomain("qbittorrent.org");
 | 
			
		||||
    validateCommandLineParameters();
 | 
			
		||||
 | 
			
		||||
    QString profileDir = m_commandLineArgs.portableMode
 | 
			
		||||
@@ -142,6 +146,9 @@ Application::Application(const QString &id, int &argc, char **argv)
 | 
			
		||||
#if !defined(DISABLE_GUI)
 | 
			
		||||
    setAttribute(Qt::AA_UseHighDpiPixmaps, true);  // opt-in to the high DPI pixmap support
 | 
			
		||||
    setQuitOnLastWindowClosed(false);
 | 
			
		||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
 | 
			
		||||
    setDesktopFileName("org.qbittorrent.qBittorrent");
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(Q_OS_WIN) && !defined(DISABLE_GUI)
 | 
			
		||||
@@ -325,7 +332,11 @@ void Application::runExternalProgram(const BitTorrent::TorrentHandle *torrent) c
 | 
			
		||||
 | 
			
		||||
    ::LocalFree(args);
 | 
			
		||||
#else
 | 
			
		||||
    QProcess::startDetached(QLatin1String("/bin/sh"), {QLatin1String("-c"), program});
 | 
			
		||||
    // Cannot give users shell environment by default, as doing so could
 | 
			
		||||
    // enable command injection via torrent name and other arguments
 | 
			
		||||
    // (especially when some automated download mechanism has been setup).
 | 
			
		||||
    // See: https://github.com/qbittorrent/qBittorrent/issues/10925
 | 
			
		||||
    QProcess::startDetached(program);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -427,7 +438,7 @@ void Application::processParams(const QStringList ¶ms)
 | 
			
		||||
    BitTorrent::AddTorrentParams torrentParams;
 | 
			
		||||
    TriStateBool skipTorrentDialog;
 | 
			
		||||
 | 
			
		||||
    foreach (QString param, params) {
 | 
			
		||||
    for (QString param : params) {
 | 
			
		||||
        param = param.trimmed();
 | 
			
		||||
 | 
			
		||||
        // Process strings indicating options specified by the user.
 | 
			
		||||
@@ -494,26 +505,42 @@ int Application::exec(const QStringList ¶ms)
 | 
			
		||||
    GuiIconProvider::initInstance();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    BitTorrent::Session::initInstance();
 | 
			
		||||
    connect(BitTorrent::Session::instance(), &BitTorrent::Session::torrentFinished, this, &Application::torrentFinished);
 | 
			
		||||
    connect(BitTorrent::Session::instance(), &BitTorrent::Session::allTorrentsFinished, this, &Application::allTorrentsFinished, Qt::QueuedConnection);
 | 
			
		||||
    try {
 | 
			
		||||
        BitTorrent::Session::initInstance();
 | 
			
		||||
        connect(BitTorrent::Session::instance(), &BitTorrent::Session::torrentFinished, this, &Application::torrentFinished);
 | 
			
		||||
        connect(BitTorrent::Session::instance(), &BitTorrent::Session::allTorrentsFinished, this, &Application::allTorrentsFinished, Qt::QueuedConnection);
 | 
			
		||||
 | 
			
		||||
#ifndef DISABLE_COUNTRIES_RESOLUTION
 | 
			
		||||
    Net::GeoIPManager::initInstance();
 | 
			
		||||
        Net::GeoIPManager::initInstance();
 | 
			
		||||
#endif
 | 
			
		||||
    ScanFoldersModel::initInstance(this);
 | 
			
		||||
        ScanFoldersModel::initInstance(this);
 | 
			
		||||
 | 
			
		||||
#ifndef DISABLE_WEBUI
 | 
			
		||||
    m_webui = new WebUI;
 | 
			
		||||
        m_webui = new WebUI;
 | 
			
		||||
#ifdef DISABLE_GUI
 | 
			
		||||
    if (m_webui->isErrored())
 | 
			
		||||
        return 1;
 | 
			
		||||
    connect(m_webui, &WebUI::fatalError, this, []() { QCoreApplication::exit(1); });
 | 
			
		||||
        if (m_webui->isErrored())
 | 
			
		||||
            return 1;
 | 
			
		||||
        connect(m_webui, &WebUI::fatalError, this, []() { QCoreApplication::exit(1); });
 | 
			
		||||
#endif // DISABLE_GUI
 | 
			
		||||
#endif // DISABLE_WEBUI
 | 
			
		||||
 | 
			
		||||
    new RSS::Session; // create RSS::Session singleton
 | 
			
		||||
    new RSS::AutoDownloader; // create RSS::AutoDownloader singleton
 | 
			
		||||
        new RSS::Session; // create RSS::Session singleton
 | 
			
		||||
        new RSS::AutoDownloader; // create RSS::AutoDownloader singleton
 | 
			
		||||
    }
 | 
			
		||||
    catch (const RuntimeError &err) {
 | 
			
		||||
#ifdef DISABLE_GUI
 | 
			
		||||
        fprintf(stderr, "%s", err.what());
 | 
			
		||||
#else
 | 
			
		||||
        QMessageBox msgBox;
 | 
			
		||||
        msgBox.setIcon(QMessageBox::Critical);
 | 
			
		||||
        msgBox.setText(tr("Application failed to start."));
 | 
			
		||||
        msgBox.setInformativeText(err.message());
 | 
			
		||||
        msgBox.show(); // Need to be shown or to moveToCenter does not work
 | 
			
		||||
        msgBox.move(Utils::Misc::screenCenter(&msgBox));
 | 
			
		||||
        msgBox.exec();
 | 
			
		||||
#endif
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#ifdef DISABLE_GUI
 | 
			
		||||
#ifndef DISABLE_WEBUI
 | 
			
		||||
@@ -723,6 +750,7 @@ void Application::cleanup()
 | 
			
		||||
    delete m_fileLogger;
 | 
			
		||||
    Logger::freeInstance();
 | 
			
		||||
    IconProvider::freeInstance();
 | 
			
		||||
    SearchPluginManager::freeInstance();
 | 
			
		||||
    Utils::Fs::removeDirRecursive(Utils::Fs::tempPath());
 | 
			
		||||
 | 
			
		||||
#ifndef DISABLE_GUI
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,7 @@
 | 
			
		||||
#include <QMessageBox>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "base/global.h"
 | 
			
		||||
#include "base/utils/misc.h"
 | 
			
		||||
#include "base/utils/string.h"
 | 
			
		||||
 | 
			
		||||
@@ -486,7 +487,7 @@ CommandLineParameterError::CommandLineParameterError(const QString &messageForUs
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const QString& CommandLineParameterError::messageForUser() const
 | 
			
		||||
const QString &CommandLineParameterError::messageForUser() const
 | 
			
		||||
{
 | 
			
		||||
    return m_messageForUser;
 | 
			
		||||
}
 | 
			
		||||
@@ -497,7 +498,7 @@ QString wrapText(const QString &text, int initialIndentation = USAGE_TEXT_COLUMN
 | 
			
		||||
    QStringList lines = {words.first()};
 | 
			
		||||
    int currentLineMaxLength = wrapAtColumn - initialIndentation;
 | 
			
		||||
 | 
			
		||||
    foreach (const QString &word, words.mid(1)) {
 | 
			
		||||
    for (const QString &word : asConst(words.mid(1))) {
 | 
			
		||||
        if (lines.last().length() + word.length() + 1 < currentLineMaxLength) {
 | 
			
		||||
            lines.last().append(' ' + word);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,7 @@
 | 
			
		||||
#include <QFile>
 | 
			
		||||
#include <QTextStream>
 | 
			
		||||
 | 
			
		||||
#include "base/global.h"
 | 
			
		||||
#include "base/logger.h"
 | 
			
		||||
#include "base/utils/fs.h"
 | 
			
		||||
 | 
			
		||||
@@ -50,7 +51,7 @@ FileLogger::FileLogger(const QString &path, const bool backup, const int maxSize
 | 
			
		||||
        this->deleteOld(age, ageType);
 | 
			
		||||
 | 
			
		||||
    const Logger *const logger = Logger::instance();
 | 
			
		||||
    foreach (const Log::Msg &msg, logger->getMessages())
 | 
			
		||||
    for (const Log::Msg &msg : asConst(logger->getMessages()))
 | 
			
		||||
        addLogMessage(msg);
 | 
			
		||||
 | 
			
		||||
    connect(logger, &Logger::newLogMessage, this, &FileLogger::addLogMessage);
 | 
			
		||||
@@ -87,7 +88,7 @@ void FileLogger::deleteOld(const int age, const FileLogAgeType ageType)
 | 
			
		||||
    QDateTime date = QDateTime::currentDateTime();
 | 
			
		||||
    QDir dir(Utils::Fs::branchPath(m_path));
 | 
			
		||||
 | 
			
		||||
    foreach (const QFileInfo file, dir.entryInfoList(QStringList("qbittorrent.log.bak*"), QDir::Files | QDir::Writable, QDir::Time | QDir::Reversed)) {
 | 
			
		||||
    for (const QFileInfo &file : asConst(dir.entryInfoList(QStringList("qbittorrent.log.bak*"), QDir::Files | QDir::Writable, QDir::Time | QDir::Reversed))) {
 | 
			
		||||
        QDateTime modificationDate = file.lastModified();
 | 
			
		||||
        switch (ageType) {
 | 
			
		||||
        case DAYS:
 | 
			
		||||
 
 | 
			
		||||
@@ -202,7 +202,7 @@ int main(int argc, char *argv[])
 | 
			
		||||
        // this is the default in Qt6
 | 
			
		||||
        app->setAttribute(Qt::AA_DisableWindowContextHelpButton);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
#endif // Q_OS_WIN
 | 
			
		||||
 | 
			
		||||
#if defined(Q_OS_MAC)
 | 
			
		||||
        // Since Apple made difficult for users to set PATH, we set here for convenience.
 | 
			
		||||
 
 | 
			
		||||
@@ -101,6 +101,7 @@ QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    server = new QLocalServer(this);
 | 
			
		||||
    server->setSocketOptions(QLocalServer::UserAccessOption);
 | 
			
		||||
    QString lockName = QDir(QDir::tempPath()).absolutePath()
 | 
			
		||||
                       + QLatin1Char('/') + socketName
 | 
			
		||||
                       + QLatin1String("-lockfile");
 | 
			
		||||
@@ -191,6 +192,12 @@ void QtLocalPeer::receiveConnection()
 | 
			
		||||
    QByteArray uMsg;
 | 
			
		||||
    quint32 remaining;
 | 
			
		||||
    ds >> remaining;
 | 
			
		||||
    if (remaining > 65535) {
 | 
			
		||||
        // drop suspiciously large data
 | 
			
		||||
        delete socket;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    uMsg.resize(remaining);
 | 
			
		||||
    int got = 0;
 | 
			
		||||
    char* uMsgBuf = uMsg.data();
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,7 @@ bool userAcceptsUpgrade()
 | 
			
		||||
    msgBox.move(Utils::Misc::screenCenter(&msgBox));
 | 
			
		||||
    if (msgBox.exec() == QMessageBox::Ok)
 | 
			
		||||
        return true;
 | 
			
		||||
#endif
 | 
			
		||||
#endif // DISABLE_GUI
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
@@ -179,9 +179,9 @@ bool upgrade(bool ask = true)
 | 
			
		||||
 | 
			
		||||
    // ****************************************************************************************
 | 
			
		||||
    // Silently converts old v3.3.x .fastresume files
 | 
			
		||||
    QStringList backupFiles_3_3 = backupFolderDir.entryList(
 | 
			
		||||
    const QStringList backupFiles_3_3 = backupFolderDir.entryList(
 | 
			
		||||
                QStringList(QLatin1String("*.fastresume.*")), QDir::Files, QDir::Unsorted);
 | 
			
		||||
    foreach (const QString &backupFile, backupFiles_3_3)
 | 
			
		||||
    for (const QString &backupFile : backupFiles_3_3)
 | 
			
		||||
        upgradeResumeFile(backupFolderDir.absoluteFilePath(backupFile));
 | 
			
		||||
    // ****************************************************************************************
 | 
			
		||||
 | 
			
		||||
@@ -197,10 +197,10 @@ bool upgrade(bool ask = true)
 | 
			
		||||
 | 
			
		||||
    if (ask && !userAcceptsUpgrade()) return false;
 | 
			
		||||
 | 
			
		||||
    QStringList backupFiles = backupFolderDir.entryList(
 | 
			
		||||
    const QStringList backupFiles = backupFolderDir.entryList(
 | 
			
		||||
                QStringList(QLatin1String("*.fastresume")), QDir::Files, QDir::Unsorted);
 | 
			
		||||
    const QRegularExpression rx(QLatin1String("^([A-Fa-f0-9]{40})\\.fastresume$"));
 | 
			
		||||
    foreach (QString backupFile, backupFiles) {
 | 
			
		||||
    for (const QString &backupFile : backupFiles) {
 | 
			
		||||
        const QRegularExpressionMatch rxMatch = rx.match(backupFile);
 | 
			
		||||
        if (rxMatch.hasMatch()) {
 | 
			
		||||
            const QString hashStr = rxMatch.captured(1);
 | 
			
		||||
@@ -265,7 +265,7 @@ void migratePlistToIni(const QString &application)
 | 
			
		||||
    plistFile->setFallbacksEnabled(false);
 | 
			
		||||
    const QStringList plist = plistFile->allKeys();
 | 
			
		||||
    if (!plist.isEmpty()) {
 | 
			
		||||
        foreach (const QString &key, plist)
 | 
			
		||||
        for (const QString &key : plist)
 | 
			
		||||
            iniFile.setValue(key, plistFile->value(key));
 | 
			
		||||
        plistFile->clear();
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user