Compare commits

...

805 Commits

Author SHA1 Message Date
walker0643 653e4badeb
Merge pull request #1067 from cryzed/fix/server-preserve-focus
Fix `Fix Preserve Focus` option not working on Linux servers
2022-02-04 11:47:29 -05:00
walker0643 7324f26e09
Merge pull request #1506 from mipedja/master
Restore dpiAwareness
2022-02-03 11:39:00 -05:00
mipedja 00a57ea972 Restore dpiAwareness
Fixes regression from #304
Fixes #1462, possibly others.
2022-01-07 21:41:56 -08:00
Povilas Kanapickas 433126e7a1
Merge pull request #1471 from unit193/master
Fix typo: chunck → chunk.
2021-12-06 17:04:49 +02:00
Unit 193 6ce4b7e970 Fix typo: chunck → chunk. 2021-12-04 14:50:39 -05:00
walker0643 d64bb1591a
Merge pull request #1416 from dylanilee/master
Fix link to Linux drag and drop issue
2021-11-12 10:59:31 -05:00
walker0643 4a978c8331
Merge pull request #1425 from albertony/cert-gen-fix
Fix issue with generation of new certificate
2021-11-12 10:54:54 -05:00
albertony 20a1bd2e4c Fix issue with generation of new certificate 2021-11-12 15:23:12 +01:00
Dylan Lee b4cef2703e Fix link to Linux drag and drop issue 2021-11-10 15:19:22 -05:00
Dom Rodriguez 2db65f0866
Merge pull request #1409 from sfonteneau/master
add header encoding="UTF-8" in plist
2021-11-09 14:14:04 +00:00
sfonteneau 606222fbae
add header encoding="UTF-8" in plist
needed for plistlib
2021-11-09 12:44:28 +01:00
Dom Rodriguez 4ed0141389
Merge pull request #1403 from shymega/fix/template/pull-request-template-clarify
Clarify PR template with regards to user-visible changes
2021-11-06 16:39:24 +00:00
Dom Rodriguez 37e7741942
Clarify PR template with regards to user-visible changes to Barrier
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-11-06 16:25:57 +00:00
Dom Rodriguez 2fcffcdaa9
Merge pull request #1091 from xkr47/patch-1
ServerApp help: Describe the role of the server
2021-11-05 20:55:21 +00:00
Jonas Berlin 2c8f92206f
ServerApp help: Describe the role of the server
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-11-05 19:52:15 +00:00
Dom Rodriguez 69ec896e65
Merge pull request #1391 from p12tic/github-no-automatic-labels
github: Don't automatically add labels to bug reports
2021-11-05 14:44:27 +00:00
Povilas Kanapickas 13d8cd0d65
Merge pull request #1375 from maboroshin/master
translation: ja-JP 2.4.0
2021-11-05 14:45:39 +02:00
Povilas Kanapickas 4e082404f1
Merge pull request #1390 from p12tic/new-releases-numbers
Update releasing procedure for release numbers and add missing details
2021-11-05 14:43:50 +02:00
Povilas Kanapickas b33af1f94c github: Don't automatically add labels to bug reports
Many bug reports are not about bugs (e.g. just hard to understand
behavior and so on) and some of the remaining are not about bugs in our
project.

It's up to the person doing bug triage to mark whether one believes this
is really a bug or no. Adding "bug" label to everything just introduces
noise.
2021-11-05 14:15:47 +02:00
maboroshin 3153062611 translation: ja-JP 2.4.0
Adjust, fix shortcut keys, translate new strings
2021-11-05 14:12:14 +02:00
Povilas Kanapickas 40d4a58b1c RELEASING: Specify that newest macOS release dmg should be used 2021-11-05 14:10:51 +02:00
Povilas Kanapickas d874e5f729 RELEASING: Add missing details about updating version numbers 2021-11-05 14:10:51 +02:00
Povilas Kanapickas 584306bf46 github: Add new releases to new issue template dialog 2021-11-05 14:10:50 +02:00
Povilas Kanapickas 8388f229dd
Merge pull request #1388 from p12tic/fix-win-build
newsfragments: Fix path that can't be checked out on Windows
2021-11-05 14:10:10 +02:00
Povilas Kanapickas f4e2e51ce4 newsfragments: Fix path that can't be checked out on Windows 2021-11-05 13:54:07 +02:00
Dom Rodriguez 3a24a76de3
Merge pull request #1260 from jgrisham/patch-1
Modify macOS build files to only allow GUI launch on supported OS versions (and associated documentation change)
2021-11-04 22:50:23 +00:00
Jim Grisham f8d538f29e
Rename macos-launchinfo.bugfix: to 1260_macos-launchinfo.bugfix:
Updated filename to begin with issue number (per the [twisted/towncrier](https://github.com/twisted/towncrier#readme) documentation).
2021-11-04 14:45:11 -07:00
Jim Grisham 842c75747a
Create 1260_update-faqs.doc 2021-11-04 14:40:44 -07:00
Jim Grisham e46b8e558f
Create macos-launchinfo.bugfix: 2021-11-04 14:35:51 -07:00
Jim Grisham cc6067a543
Updated README.md based on PR peer-review comments
Added changes recommended by @shymega in https://github.com/debauchee/barrier/pull/1260
2021-11-04 14:29:00 -07:00
Jim Grisham dc6ddbc246 Merge branch 'master' into patch-1 2021-11-04 16:08:33 -04:00
Povilas Kanapickas dc7aa012d5
Merge pull request #1368 from chewi/cstddef-null
Add missing cstddef includes for NULL
2021-11-03 22:57:58 +02:00
James Le Cuirot 4b12265ae5 Add missing cstddef includes for NULL
Fixes https://github.com/debauchee/barrier/issues/1366.
2021-11-03 18:12:56 +02:00
Povilas Kanapickas 141ab9ecb4
Merge pull request #1379 from p12tic/github-pr-template
github: Add pull request template
2021-11-03 14:47:49 +02:00
Povilas Kanapickas bfc465d477 github: Add pull request template 2021-11-03 14:15:02 +02:00
Povilas Kanapickas ac5a1bfd3b
Merge pull request #1254 from yan12125/fix-wrong-encoding-for-text-copied-between-linux-and-windows
Fix wrong encoding for text copied between linux and windows
2021-11-03 03:33:28 +02:00
Chih-Hsuan Yen dd3ea8adfe lib/platform: Fix encoding for text copied between linux and windows
Copied from https://github.com/symless/synergy-core/pull/7029. I don't
include the application/x-moz-nativehtml part in that patch as I already
added it in https://github.com/debauchee/barrier/pull/1164.

Fixes https://github.com/debauchee/barrier/issues/1037
Fixes https://github.com/debauchee/barrier/issues/1137

Original author: Serhii Hadzhilov <serhii-external@symless.com>
2021-11-03 03:12:41 +02:00
Povilas Kanapickas e010f89f41
Merge pull request #1371 from p12tic/doc-release-notes
doc: Add missed details to v2.3.4 and v2.4.0 release notes
2021-11-03 03:04:38 +02:00
Povilas Kanapickas 21c8fb88d0 doc: Add missed details to v2.3.4 and v2.4.0 release notes 2021-11-02 14:32:21 +02:00
Povilas Kanapickas 3e0d758b59 Barrier v2.4.0 2021-11-01 22:46:43 +02:00
Povilas Kanapickas 1738afc6e3
Merge pull request #1360 from p12tic/release
Prepare for v2.4.0
2021-11-01 22:25:46 +02:00
Povilas Kanapickas 6b729df698 Release notes for v2.4.0 2021-11-01 21:56:47 +02:00
Povilas Kanapickas 56177d461a Release notes for v2.3.4 2021-11-01 21:39:42 +02:00
Povilas Kanapickas e7bdcb5249 Setup release notes build using towncrier tool 2021-11-01 21:35:55 +02:00
Povilas Kanapickas e8453f2b9a azure-pipelines: Use a different artifact name for each macOS image 2021-11-01 21:35:18 +02:00
Povilas Kanapickas 608594f245 Document the releasing procedure 2021-11-01 21:35:18 +02:00
Povilas Kanapickas fc6d4e41d8
Merge pull request #1352 from p12tic/cleanup-callbacks
Cleanup internal callback APIs
2021-11-01 17:28:53 +02:00
Povilas Kanapickas d7de571fdc lib/net: Simplify handling of socket multiplexer jobs 2021-11-01 14:41:53 +02:00
Povilas Kanapickas d2c106db53 lib: Pass jobs to barrier::Thread as std::function 2021-11-01 14:41:53 +02:00
Povilas Kanapickas 53356697d9 lib/arch: Pass jobs to Arch threads as std::function 2021-11-01 14:41:53 +02:00
Povilas Kanapickas 9cf590ccd7 lib: Make ThreadFunc return nothing 2021-11-01 14:41:53 +02:00
Povilas Kanapickas 815e80ec4d lib: Remove unused threading functionality related to thread results 2021-11-01 14:41:53 +02:00
Povilas Kanapickas 666460aced lib/platform: Use std::function instead of IJob in MSWindowsDesks 2021-11-01 14:41:53 +02:00
Povilas Kanapickas 4486830fdb
Merge pull request #1351 from p12tic/fix-ssl-crash-closing-connections
Fix ssl-related crashes when closing connections [SECURITY VULNERABILITY CVE-2021-42074]
2021-11-01 14:40:11 +02:00
Povilas Kanapickas f0efe043bb lib/net: Fix incorrect sharing of data between different SSL sessions 2021-11-01 14:05:49 +02:00
Povilas Kanapickas 8b937a4abd lib/net: Fix race conditions when closing SSL connections
This fixes the following security vulnerability:
- CVE-2021-42074 SIGSEGV on quick open/close sequence while sending
Hello message

The issue has been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 14:05:49 +02:00
Povilas Kanapickas caeebf6c36
Merge pull request #1350 from p12tic/fix-file-handles-leak
Fix file descriptor leak on incomplete connections [SECURITY VULNERABILITY CVE-2021-42075]
2021-11-01 14:04:45 +02:00
Povilas Kanapickas aaa0e4d2e0
Merge pull request #1349 from p12tic/types-cleanup
Cleanup declarations of {S,U}Int{8,16,32} types
2021-11-01 14:04:32 +02:00
Povilas Kanapickas deefecc262 lib/server: Close connection when client app-level handshake fails
This fixes the following security vulnerability:
 - CVE-2021-42075 DoS via file descriptor exhaustion

The issue has been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 05:58:21 +02:00
Povilas Kanapickas 20f66fe133 lib/common: Clean up declarations of {S,U}Int{8,16,32} types 2021-11-01 05:56:53 +02:00
Povilas Kanapickas 676fa39f9a lib/platform: Switch remaining ObjC source files to ObjC++ 2021-11-01 05:56:53 +02:00
Povilas Kanapickas 00e182d22e
Merge pull request #1347 from p12tic/enforce-max-message-length
Enforce max message length [SECURITY VULNERABILITY CVE-2021-42076]
2021-11-01 05:56:38 +02:00
Povilas Kanapickas dd31d0a539
Merge pull request #1348 from p12tic/fix-openssl-windows-applink
Include openssl applink shim into Windows builds
2021-11-01 05:56:22 +02:00
Povilas Kanapickas e8ac56b045 lib/net: Include openssl applink shim into Windows builds 2021-11-01 05:48:26 +02:00
Povilas Kanapickas fd5295eb31 lib/barrier: Disconnect client on too long input packets
This commit is the 3/3 part of the fix for the following security
vulnerability:
 - CVE-2021-42076 DoS via excess length messages

The issue has been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 05:18:53 +02:00
Povilas Kanapickas af90f39b4a lib/net: Limit the maximum size of TCP or SSL input buffers
This commit is the 2/3 part of the fix for the following security
vulnerability:
 - CVE-2021-42076 DoS via excess length messages

The issue has been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 05:18:52 +02:00
Povilas Kanapickas e33c81b835 lib: Enforce a maximum length of input messages
This commit is the 1/3 part of the fix for the following security
vulnerability:
 - CVE-2021-42076 DoS via excess length messages

The issue has been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 05:18:51 +02:00
Povilas Kanapickas cc369820d4 lib/server: Remove unused code 2021-11-01 05:18:50 +02:00
Povilas Kanapickas 7ab8e0101d lib/server: Add a note about taking pointer to virtual member function 2021-11-01 05:18:49 +02:00
Povilas Kanapickas b677a0b419
Merge pull request #1344 from p12tic/windows-build-cleanup
Windows build cleanup
2021-11-01 05:16:09 +02:00
Povilas Kanapickas b5adc93e2b
Merge pull request #1346 from p12tic/client-identity-verification
Implement client identity verification [SECURITY VULNERABILITIES CVE-2021-42072, CVE-2021-42073]
2021-11-01 05:15:48 +02:00
Povilas Kanapickas 7cacbd1489 gui: Improve formatting of the fingerprint acceptance dialog 2021-11-01 04:50:17 +02:00
Povilas Kanapickas 165100a0d2 gui: Extract barrier type to separate enum 2021-11-01 04:50:16 +02:00
Povilas Kanapickas 229abab99f Implement client identity verification
This commit fixes two security vulnerabilities: CVE-2021-42072 and
CVE-2021-42073.

The issues have been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 04:50:15 +02:00
Povilas Kanapickas e79bdf333c gui: Fix fingerprint database being not populated due to missing dirs 2021-11-01 04:50:14 +02:00
Povilas Kanapickas 57769cffda lib/net: Pass connection security level to within socket classes 2021-11-01 04:50:13 +02:00
Povilas Kanapickas 5c7d7194d5 lib/net: Use enum for connection security level instead of boolean 2021-11-01 04:50:12 +02:00
Povilas Kanapickas 82b8fa905e lib/net: Improve name of showCertificate() to reflect what it does 2021-11-01 04:50:11 +02:00
Povilas Kanapickas 133e447fb6 lib/net: Don't hardcode fingerprint DB path in verify_cert_fingerprint() 2021-11-01 04:50:10 +02:00
Povilas Kanapickas 8bc280e0dd gui: Add configuration for requiring client certificates 2021-11-01 04:50:09 +02:00
Povilas Kanapickas ed32e2e326 gui: Expand checkboxes in settings dialog through both grid columns 2021-11-01 04:50:08 +02:00
Povilas Kanapickas 4d73ed9fdd lib/net: Present client certificate when connecting to server 2021-11-01 04:50:07 +02:00
Povilas Kanapickas 92ba6f61e6 gui: Move SSL fingerprint labels out of server frame
SSL fingerprints will be used to auth both server and client.
2021-11-01 04:50:06 +02:00
Povilas Kanapickas c0ce893711 lib/net: Load client SSL certificates when connecting 2021-11-01 04:50:05 +02:00
Povilas Kanapickas cb0480fe84 cmake: Silence tr1 deprecation warning on MSVC 2021-11-01 04:48:56 +02:00
Povilas Kanapickas f9c051fc82 Use cmake --build to build on Windows 2021-11-01 04:48:56 +02:00
Povilas Kanapickas 6d7eca42b7
Merge pull request #1345 from p12tic/filesystem-cleanup
Filesystem operations cleanup
2021-11-01 04:47:16 +02:00
Povilas Kanapickas 0f3afed664 gui: Switch SSL certificate handler to barrier::fs paths 2021-11-01 04:29:54 +02:00
Povilas Kanapickas b76b332f2f lib/common: Move SSL certificate path definition to common location 2021-11-01 04:29:53 +02:00
Povilas Kanapickas d033ffa3d8 lib/net: Use fs::is_regular_file() to check for path existence 2021-11-01 04:29:52 +02:00
Povilas Kanapickas 220f9e8274 lib/common: Remove unused file 2021-11-01 04:29:51 +02:00
Povilas Kanapickas a2ca7e29f5 lib/common: Switch data directories to fs::path 2021-11-01 04:29:50 +02:00
Povilas Kanapickas 298980fa86 lib/common: Move DataDirectories to barrier namespace 2021-11-01 04:29:49 +02:00
Povilas Kanapickas 677612d342 lib/common: Replace PathUtilities::basename with barrier::fs equivalent 2021-11-01 04:29:48 +02:00
Povilas Kanapickas e7d936b5d7 lib/common: Replace PathUtilities::concat with barrier::fs equivalent 2021-11-01 04:29:47 +02:00
Povilas Kanapickas bcafdc6783 src/lib: Switch to ghc::filesystem in path utilities 2021-11-01 04:29:46 +02:00
Povilas Kanapickas a987605513 lib/io: Rename fstream.h to filesystem.h 2021-11-01 04:29:45 +02:00
Povilas Kanapickas 801a5a7084 ext: Add https://github.com/gulrak/filesystem for filesystem operations 2021-11-01 04:29:44 +02:00
Povilas Kanapickas 22ac14be8c
Merge pull request #1343 from p12tic/sha256-fingerprints
Add support for SHA256 fingerprints
2021-11-01 04:21:17 +02:00
Povilas Kanapickas a428b61c7d gui: Add support for SHA256 fingerprints
For the time being both SHA1 and SHA256 fingerprints will be shown in
the UI. This allows users to verify new connections between old and new
versions of Barrier. After the initial verification we use SHA256
fingerprints.

The issue has been reported by Matthias Gerstner <mgerstner@suse.de>.
2021-11-01 04:07:09 +02:00
Povilas Kanapickas c7e6fc6c7e gui: Set the size of the window to the size of the contents 2021-11-01 04:07:09 +02:00
Povilas Kanapickas b7757fbd68 lib/net: Implement a way to generate fingerprint randomart
The code has been copied from OpenSSH.
2021-11-01 04:07:09 +02:00
Povilas Kanapickas a238b27879 gui: Simplify isCertificateValid() 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 7cced74119 lib/net: Use FingerprintData to represent fingerprints 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 50534ecb43 lib/net: Use new FingerprintDatabase to handle fingerprints 2021-11-01 04:07:09 +02:00
Povilas Kanapickas be8ba0d132 gui: Use new FingerprintDatabase to handle fingerprints 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 9cac96b4af lib/net: Implement a reusable fingerprint database 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 3e71b468f6 lib: Remove useless empty constructors 2021-11-01 04:07:09 +02:00
Povilas Kanapickas 8f88dc2585 lib/base: Support colons in from_hex() 2021-11-01 04:07:09 +02:00
Povilas Kanapickas aa3afa9062 Use openssl library instead of CLI to generate certificates 2021-11-01 04:07:09 +02:00
Povilas Kanapickas dbf56a9375 gui: Use openssl library instead of CLI tool to generate fingerprints 2021-11-01 04:07:09 +02:00
Povilas Kanapickas cf732aba37 lib/io: Add a replacement for fopen() which works on Windows
fopen() does not correctly handle non-ASCII paths on Windows.
2021-11-01 04:07:09 +02:00
Povilas Kanapickas 089b8e4749 lib/net: Extract SSL fingerprint generation to reusable function 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 85486927b3 lib/base: Implement pattern to execute something at function exit 2021-11-01 03:19:47 +02:00
Povilas Kanapickas cd7e731cb7 lib: Switch to std::vector<std::uint8_t> for fingerprint data 2021-11-01 03:19:47 +02:00
Povilas Kanapickas ef08470286 src/lib: Use standard std::vsnprintf() instead of hacking our own 2021-11-01 03:19:47 +02:00
Povilas Kanapickas b793675ef8 lib/net: Put secure utils into barrier namespace 2021-11-01 03:19:47 +02:00
Povilas Kanapickas a9b30951ce lib: Add utility function to convert from hex to binary 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 767f3d37ec test: Extract common test utilities to separate file 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 9d8e1faf59 test: Add test for format_ssl_fingerprint() 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 96e0021572 lib/base: Make to_hex() easier to use 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 7f71924a86 lib/net: Make format_ssl_fingerprint() easier to use 2021-11-01 03:19:47 +02:00
Povilas Kanapickas 0e406d4918 lib/net: Extract fingerprint formatting out of SecureSocket 2021-11-01 03:19:47 +02:00
Povilas Kanapickas bf667a429c
Merge pull request #1342 from p12tic/enable-encryption-by-default
Enable encryption by default
2021-11-01 03:12:32 +02:00
Povilas Kanapickas dba7b72195
Merge pull request #1341 from p12tic/azure-pipelines-fix-local-build
azure-pipelines: Use Invoke-WebRequest to download files
2021-11-01 03:06:48 +02:00
Povilas Kanapickas bfa8964305 Enable encryption by default 2021-11-01 03:00:09 +02:00
Dom Rodriguez fca18b63c5
Merge branch 'master' into testing/pr/Absolucy/macos
This merges #1162 into Barrier.

Thanks!

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-10-31 21:00:26 +00:00
Povilas Kanapickas a4ff91a991 azure-pipelines: Use Invoke-WebRequest to download files
When running System.Net.WebClient locally it results in a
non-descriptive "An exception occurred during a WebClient request" error
message. Invoke-WebRequest is an alternative that works so switch to
that.
2021-10-30 05:02:35 +03:00
Povilas Kanapickas fce7615e42
Merge pull request #1340 from p12tic/use-utf8
Use UTF8 internally and convert to UTF16 at the edge.
2021-10-30 01:22:09 +03:00
Povilas Kanapickas d24f368efe Correctly open files with non-ASCII paths on Windows
This fixes #976, fixes #974, fixes #444.

On Windows the standard stream open() functions expect bytes encoded in
current system encoding, not UTF8. Since we're dealing with UTF8
throughout the application this results in wrong paths being passed and
failure to open files. As a solution, we convert the paths to UTF16 via
the WCHAR character type and use the special Windows-specific overloads
of open() functions.
2021-10-30 01:03:09 +03:00
Povilas Kanapickas 8286c85dc0 lib/common/win32: Extract unicode_to_mb() to separate file 2021-10-30 01:03:09 +03:00
Povilas Kanapickas 15a955ff21 Revert "Use ansi codepage for internal multibyte strings on windows"
This reverts commit 402801e0a6.

We should use UTF8 throughout the application and convert to platform
encodings only at the edge. Otherwise it's not clear which data uses
which encoding and we result in extremele brittle system.
2021-10-30 01:03:09 +03:00
Dom Rodriguez 2877e6cb17
Pipelines: Remove Ubuntu 16.04 agent
Azure Pipelines no longer supports Ubuntu 16.04, so to remove the
error, this commit removes it from the cross-platform matrix.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-10-24 15:48:47 +01:00
Dom Rodriguez a53380de4f
Fix missing VM parameter, matrix doesn't select automatically
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-10-23 19:04:10 +01:00
Dom Rodriguez 907bcdcfea
Fix indentation on macOS matrix
Turns out VS Code handled the YAML indentation.... badly.

This should fix it.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-10-23 18:50:18 +01:00
Dom Rodriguez 59d076988f
Initial test of multi-macOS builds
This is an initial test of building Barrier for multiple macOS versions.

For:

- Big Sur
- Moja\ve
- Catalina

I think there's an indentation issue somewhere, but VS Code isn't
'seeing' it... let's hope this works.

If it does, we can proceed to merge.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-10-23 18:43:36 +01:00
Dom Rodriguez 4dfe1b1a73
Merge pull request #1304 from Ashark/wayland_warning
Add warning on wayland, fix #247
2021-10-23 16:19:43 +01:00
Andrew Shark 547a2dd413 Add warning on wayland, fix #247 2021-10-02 03:21:04 +03:00
Povilas Kanapickas dd8c2a1a38
Merge pull request #1297 from a1346054/fixes
Simple maintenance improvements
2021-09-24 01:12:36 +03:00
a1346054 872e78d342
Trim excess whitespace 2021-09-23 00:20:58 +00:00
a1346054 9c41441861
Fix whitespace alignment 2021-09-23 00:20:55 +00:00
a1346054 ab3bdad5ab
Use correct barrier.desktop category
from https://specifications.freedesktop.org/menu-spec/latest/apas02.html
2021-09-23 00:20:55 +00:00
a1346054 9549352a10
Fix codestyle deviations 2021-09-23 00:20:54 +00:00
a1346054 8c014b4bb6
Fix spelling 2021-09-23 00:20:54 +00:00
a1346054 3aee8dd341
Add missing final newline 2021-09-22 22:58:16 +00:00
a1346054 486545527b
Fix shellcheck warnings 2021-09-22 22:58:15 +00:00
a1346054 9bb25d8887
Use complete license file from gnu.org
The current file is missing the 'How to Apply These Terms to Your New
Programs' section, which is an integral part of the GPL.

More info here:
https://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#GPLOmitPreamble

File downloaded from:
https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
2021-09-22 21:30:50 +00:00
Dom Rodriguez 9432743cea
Fix typo in template question
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-04 16:15:22 +01:00
Dom Rodriguez bf388b907e
Clarify screenshot attachment to issue
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-04 16:15:07 +01:00
Dom Rodriguez 3a74395254
Fix string error - bug_report.yml
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 20:20:17 +01:00
Dom Rodriguez 2ca88cbfa1
Remove prepended title, unnecessary
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:51:13 +01:00
Dom Rodriguez 690cd8b534
Rename bug_report.yaml -> .yml
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:50:39 +01:00
Dom Rodriguez a75da35854
Remove external links - maybe that's the issue?
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:45:17 +01:00
Dom Rodriguez 87bdfd4e98
Add configuration for new issue chooser
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:44:01 +01:00
Dom Rodriguez 163fe9b329
Remove value key for What Happened
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:38:56 +01:00
Dom Rodriguez b3d4da9c0d
Add misc information question (not required)
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:35:46 +01:00
Dom Rodriguez 85d995ff23
Add package manager question
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:34:26 +01:00
Dom Rodriguez eb3f2741d9
Adjust YML indentation
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:34:10 +01:00
Dom Rodriguez e26a5c376e
Screenshots to be avoided on imgur
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:30:45 +01:00
Dom Rodriguez 2f6aa21bfe
Description changed to new approach for Barrier support
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-09-02 17:28:38 +01:00
Dom Rodriguez 962d5e1c13
Replace (Markdown) template for bug reports with a GitHub issue form
This will make bug reports more structured, and easier for triagers and
maintainers to work with.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2021-08-31 20:01:25 +01:00
Povilas Kanapickas 27f7e7ba9b
Merge pull request #1242 from whot/wip/janitor
Some ifdef cleanup
2021-08-31 04:44:45 +03:00
Jim Grisham feb30fafcb
Update README.md
Updated OS support section, based in the discussion from issue #544.

(Also cleaned up code formatting in FAQ section)
2021-08-23 22:39:00 -07:00
Jim Grisham 747039e1cd
Update Info.plist.in
Updated LSMinimumSystemVersion to prevent launch on unsupported macOS versions.

Release notes for 2.3.0[1] state that macOS 10.12 is the minimum - this has not been verified in the code, however.

[1] https://github.com/debauchee/barrier/releases/tag/v2.3.0
2021-08-23 21:33:06 -07:00
Peter Hutterer dec895e8d3 cmake: move two windows #defines to the main cmake file
We have a check for windows here anyway, let's move the defines here and we
can drop it in the common header file. And since on Unix HAVE_CONFIG_H is
always defined, we can drop the else condition too.
2021-08-20 15:27:39 +10:00
Peter Hutterer c32ca2195d barrier: split the platform-specific argument parsing
Instead of one function with several ifdefs, split into several functions
to make the code more readable.

No functional changes.
2021-08-20 15:27:39 +10:00
Povilas Kanapickas b0c0b42bc2
Merge pull request #1209 from tom-tan/patch-1
Update azure-pipelines.yml to use multiple Ubuntu versions
2021-08-19 14:44:02 +03:00
Povilas Kanapickas 0c02b3d54b
Merge pull request #1214 from tom-tan/add-mappings-for-jp
Add JP specific key mappings
2021-08-19 14:43:23 +03:00
Povilas Kanapickas 7d5ff93785
Merge pull request #1232 from AI0867/patch-1
(further) Replace Freenode with LiberaChat
2021-08-09 14:14:55 +03:00
Alexander van Gessel 260005ff07
(further) Replace Freenode with LiberaChat 2021-07-20 11:54:51 +02:00
Tomoya Tanjo 57463a31f8
Attempt to support several Ubuntu LTSs to CI 2021-06-29 00:00:04 +09:00
Tomoya Tanjo 7a4c6a25d7
Add `Henkan`, `Muhenkan` and `Zenkaku` entries to macOS
Note: these keys are sometimes referred as `international4` and `international5`, respectively.
2021-06-27 17:07:45 +00:00
Tomoya Tanjo eec676948c
Add `IME on` and `IME off` key entries to Windows
Note that these key codes are same as Kana and EisuToggle keys in macOS, respectively.
See also: https://docs.microsoft.com/en-US/windows-hardware/design/component-guidelines/keyboard-japan-ime#hid-usage-ps2-scan-code-and-virtual-key-code-for-imeon-key--imeoff-key
2021-06-27 17:05:26 +00:00
Tomoya Tanjo 14b5cebb62
Fix keycode for `Kana` in Windows key mapping 2021-06-27 17:00:42 +00:00
Povilas Kanapickas 6a1bcb9dd6
Merge pull request #1068 from tete1030/fix-win-service-imagepath
Fix unquoted windows service image path
2021-06-25 17:10:18 +03:00
Povilas Kanapickas 1fac0e6603 doc: Add newsfragment 2021-06-25 15:44:21 +03:00
texot 0fa91e0fd3 dist: Fix unquoted windows service image path 2021-06-25 15:42:36 +03:00
Lucy a4afb983d1
Merge branch 'master' into master 2021-06-23 21:59:59 -04:00
Povilas Kanapickas 7acddd0452
Merge pull request #1133 from terminator-ger/master
Added two Questions to the Q&A regarding configuration loading
2021-06-23 22:52:21 +03:00
terminator-ger f52690af82 README: Add two Questions to the Q&A regarding configuration loading 2021-06-23 22:51:27 +03:00
Povilas Kanapickas b9e2f79ca5
Merge pull request #1046 from jnnnnn/setup-readme
add quickstart instructions to readme
2021-06-23 22:49:46 +03:00
Povilas Kanapickas de89c9d45e
Merge pull request #1113 from HwiNyeonKim/master
Missed Korean translation part edited
2021-06-23 17:20:44 +03:00
Povilas Kanapickas c90ae37263
Merge pull request #1124 from gloomy-ghost/zh_cn
update zh-CN translations
2021-06-23 16:48:29 +03:00
HwiNyeon Kim 00cfe0ba6d Missed Korean translation part edited
Some parts that still written as "Synergy" in Korean installation process edited to "Barrier."
2021-06-23 16:26:03 +03:00
gloomy-ghost 63d60a14f8 update zh-CN translations 2021-06-23 16:22:42 +03:00
Jonathan Newnham ebb8f101de README: Add quickstart instructions 2021-06-23 16:09:42 +03:00
Povilas Kanapickas 6a0ed51aed
Merge pull request #1211 from p12tic/azure-windows-qt-source
azure-pipelines: Download from official qt source
2021-06-23 16:04:52 +03:00
Povilas Kanapickas 729c519cb4
Merge pull request #1210 from p12tic/irc-libera
README: Switch IRC contact info to libera network
2021-06-23 15:59:03 +03:00
Povilas Kanapickas 1e95a19bf4
Merge pull request #1205 from p12tic/barrier_sk_translation
Update Slovak translation
2021-06-23 15:58:51 +03:00
Povilas Kanapickas c25837fc62 azure-pipelines: Download from official qt source
The previous source seems to be rate-limited and otherwise not properly
available which causes Windows builds to time out.
2021-06-23 15:51:02 +03:00
Povilas Kanapickas 5dc27b1201 README: Switch IRC contact info to libera network 2021-06-23 15:36:06 +03:00
Povilas Kanapickas f7be30cc3f
Merge pull request #1207 from tom-tan/fix-qt5-path
Fix osx_environment.sh for Homebrew
2021-06-23 15:32:07 +03:00
Tomoya Tanjo 695a737a89
Update azure-pipelines.yml to use Ubuntu 20.04 2021-06-23 06:42:28 +09:00
Tomoya Tanjo ac5de110c0
Update build_dist.sh.in 2021-06-23 01:05:58 +09:00
Tomoya Tanjo e80184ce7a
Fix osx_environment.sh for Homebrew 2021-06-22 23:24:36 +09:00
Povilas Kanapickas cdc6e684eb Add newsfragment 2021-06-21 21:31:09 +03:00
Jose Riha 9a0bbbaaec Update Slovak translation 2021-06-21 21:28:32 +03:00
Povilas Kanapickas 649fdfe042
Merge pull request #1156 from botovq/client_ciphers
Remove #if defined(LIBRESSL_VERSION_NUMBER) path
2021-06-13 18:43:37 +03:00
Povilas Kanapickas 7f44afa546
Merge pull request #1164 from yan12125/fix-x11-paste
Map more X11 clipboard MIME types to corresponding converters
2021-06-13 18:42:51 +03:00
Chih-Hsuan Yen cad92e89d0
Map more X11 clipboard MIME types to corresponding converters
The following logs are extracted from pasting texts to Firefox's address
bar and a Google Doc page in Firefox, respectively.

[2021-05-16T00:03:14] DEBUG1: request for clipboard 342, target text/plain;charset=utf-8 (600) by 0x03000044 (property=GDK_SELECTION (511))

[2021-05-16T00:03:22] DEBUG1: request for clipboard 342, target application/x-moz-nativehtml (603) by 0x03000044 (property=GDK_SELECTION (511))

Inspired by https://github.com/debauchee/barrier/pull/461. Should fix
pasting unicode on X11 https://github.com/debauchee/barrier/issues/344.
2021-05-16 00:27:57 +08:00
aspen 5f6456b36e
Whoops, I didn't mean to commit that! 2021-05-13 12:01:33 -04:00
aspen 615762d7b3
Fix compilation on M1 macOS 2021-05-13 11:41:29 -04:00
Theo Buehler a29a93f0c8 Remove #if defined(LIBRESSL_VERSION_NUMBER) path
The SSL_get_client_ciphers API has been available since LibreSSL 2.9.1
and is thus present in all supported versions (3.2.x and 3.3.x). In
the upcoming LibreSSL 3.4.x release the SSL_CIPHER struct will become
opaque hence the build will break.
2021-05-06 20:57:15 +02:00
cryzed 06c1a5908c Fixes #1066 2021-02-16 02:35:13 +01:00
Povilas Kanapickas 12024b9a5d
Merge pull request #1031 from albertony/keyboard_ui
Enable use of keyboard to modify screens
2021-01-25 22:52:18 +02:00
albertony 4ee6a54d41 Enable use of keyboard to modify screens 2021-01-25 21:32:19 +01:00
Povilas Kanapickas 8202fe1fc7
Merge pull request #986 from albertony/rc_version_info
Add version info to windows main exe resource
2021-01-25 22:11:34 +02:00
Povilas Kanapickas a8e15df633
Merge pull request #1035 from cjaone/de_translation
100% German translation
2021-01-25 22:05:26 +02:00
cjaone 5de519d89b 100% German translation 2021-01-22 20:47:47 +01:00
albertony 31ce5cbdf8 Add version info to windows main exe resource 2021-01-22 08:29:01 +01:00
Povilas Kanapickas d4382b9b80
Merge pull request #1022 from Bintux/master
Corrected spelling in gui_de.ts
2021-01-11 16:02:50 +02:00
Eike cf231aef03 Corrected spelling in gui_de.ts 2021-01-11 14:20:42 +01:00
Povilas Kanapickas 743515e747
Merge pull request #607 from andydna/fix-examples-backwards-aliases
reversed aliases: val, key to key, val.  add barebones example
2021-01-11 01:40:57 +02:00
andydna d51ad9eeef fixed reversed aliases value, key to key, value. added barebones example config 2021-01-11 01:01:05 +02:00
Povilas Kanapickas 804f774ef1
Merge pull request #536 from maboroshin/master
translation: ja-JP
2021-01-11 00:59:10 +02:00
Povilas Kanapickas 4d00a1304d gui: Update compiled translation resources 2021-01-11 00:46:38 +02:00
Povilas Kanapickas 3f268a5099 gui: Make langbuild script executable 2021-01-11 00:46:18 +02:00
maboroshin a2753a76ce translation: ja-JP Barrier's Resources 2021-01-11 00:44:44 +02:00
maboroshin e7d5f25fea translation: ja-JP Untranslated part 2021-01-11 00:44:12 +02:00
Povilas Kanapickas eab906ee98
Merge pull request #525 from CyBot/master
Add autoStart setting
2021-01-11 00:38:07 +02:00
Tobias Kellner 297de775a3 gui: Add autoStart setting 2021-01-11 00:13:34 +02:00
Povilas Kanapickas a0459a482f
Merge pull request #790 from fesc2000/master
Add missing Sun keyboard keys
2021-01-10 22:29:35 +02:00
Povilas Kanapickas 0c57bdeed8
Merge pull request #1019 from p12tic/disable-stale-bot
github: Remove stale bot configuration
2021-01-10 22:29:18 +02:00
Povilas Kanapickas c0699a793d github: Remove stale bot configuration 2021-01-10 22:26:07 +02:00
Felix Schmidt 0c86f1fbf9 lib: Add missing Sun keyboard keys 2021-01-10 22:13:43 +02:00
Povilas Kanapickas a46b297045
Merge pull request #600 from albanobattistella/master
Create italian.iss
2021-01-10 21:58:47 +02:00
albanobattistella bb6a5500c3 Create italian.iss 2021-01-10 20:43:37 +02:00
Povilas Kanapickas bcdeee1f00
Merge pull request #1018 from p12tic/release-notes-towncrier
Setup release notes using towncrier
2021-01-10 20:42:52 +02:00
Povilas Kanapickas 0ed65808c6 doc: Add news fragment for PR #818 2021-01-10 19:47:35 +02:00
Povilas Kanapickas a682d3217b doc: Add news fragment for PR #822 2021-01-10 19:47:34 +02:00
Povilas Kanapickas 55acae7038 doc: Add news fragment for PR #803 2021-01-10 19:47:33 +02:00
Povilas Kanapickas 7f074aecf3 doc: Add news fragment for PR #972 2021-01-10 19:47:32 +02:00
Povilas Kanapickas 4e40956aad doc: Add news fragment for PR #926 2021-01-10 19:47:31 +02:00
Povilas Kanapickas f5681b64e0 doc: Add news fragment for PR #972 2021-01-10 19:47:30 +02:00
Povilas Kanapickas b596802f38 doc: Add news fragment for PR #969 2021-01-10 19:47:29 +02:00
Povilas Kanapickas a4ed0eef67 doc: Add news fragment for PR #979 2021-01-10 19:47:28 +02:00
Povilas Kanapickas 0c0a389f67 doc: Add news fragment for PR #910 2021-01-10 19:47:27 +02:00
Povilas Kanapickas 3c4835a9a4 doc: Add news fragment for PR #915 2021-01-10 19:47:26 +02:00
Povilas Kanapickas b12dac64ea doc: Add news fragment for PR #916 2021-01-10 19:47:25 +02:00
Povilas Kanapickas df0c205052 doc: Setup towncrier for handling of release notes 2021-01-10 19:47:24 +02:00
Povilas Kanapickas c44a398e39 doc: Remove unused file 2021-01-10 19:47:23 +02:00
Povilas Kanapickas 7ee94cca94
Merge pull request #915 from dustinlieu/master
Fixed gui writing invalid config for hotkeys with multiple actions
2021-01-10 16:57:53 +02:00
Dustin Lieu adc49fa066 gui: Fix invalid config being written for hotkeys with multiple actions 2021-01-10 16:38:25 +02:00
Povilas Kanapickas 8fe1df8c28
Merge pull request #916 from dustinlieu/fix/hotkey-special-chars
Added special hotkey config rules for comma and semicolon
2021-01-10 15:50:43 +02:00
Dustin Lieu a48f183ee1 gui: Added special hotkey config rules for comma and semicolon 2021-01-10 15:40:15 +02:00
Povilas Kanapickas 618d28d392
Merge pull request #1017 from p12tic/gui-hotkey-tests
gui/test: More tests for Hotkey serialization
2021-01-10 15:40:01 +02:00
Povilas Kanapickas def2ef2a9f gui/test: Add tests for Hotkey serialization via QTextStream 2021-01-10 15:28:09 +02:00
Povilas Kanapickas 7befd121d4 gui/test: Remove testing of different QSettings formats
QSettings guarantees are provided regardless of the format and until we
use a custom format it does not make sense to verify guarantees provided
by Qt.
2021-01-10 15:28:08 +02:00
Povilas Kanapickas 141f6de2c4 gui/test: Extract createHotkey() 2021-01-10 15:28:07 +02:00
Povilas Kanapickas a004cd8eba gui/test: Put createAction() to anonymous namespace 2021-01-10 15:28:06 +02:00
Povilas Kanapickas 79d266d274
Merge pull request #1015 from p12tic/readme-mention-clipboard-support
README: Mention clipboard support
2021-01-10 15:16:37 +02:00
Povilas Kanapickas 0602499ccf
Merge pull request #1016 from p12tic/cleanup-foreach-loop
gui: Use range-based for loop instead of foreach macro
2021-01-10 15:16:26 +02:00
Povilas Kanapickas 7a4ce45f5d
Merge pull request #1014 from p12tic/readme-mention-interop-with-synergy
README: Mention that barrier is currently not compatible with synergy
2021-01-10 15:09:47 +02:00
Povilas Kanapickas 1aba369dff README: Mention clipboard sharing is supported 2021-01-10 15:02:16 +02:00
Povilas Kanapickas ca925cc348 README: Simplify the sentence describing supported features 2021-01-10 15:02:15 +02:00
Povilas Kanapickas 181b3d6235 README: Mention that barrier is currently not compatible with synergy 2021-01-10 14:57:59 +02:00
Povilas Kanapickas 0259703cb2 gui: Use range-based for loop instead of foreach macro 2021-01-10 14:50:29 +02:00
Povilas Kanapickas 773b5b5362
Merge pull request #1013 from p12tic/cleanup-std-endl
lib: Remove unnecessary use of std::endl
2021-01-10 14:48:24 +02:00
Povilas Kanapickas 36fa9eaa0e lib: Remove unnecessary use of std::endl
std::endl is "\n" followed by a flush. We only need flushing in certain
circumstances.
2021-01-10 14:28:42 +02:00
Povilas Kanapickas 0f7855d2f5
Merge pull request #1012 from p12tic/cleanup-typedefs
Cleanup typedefs
2021-01-10 14:28:02 +02:00
Povilas Kanapickas a8a2b7c29a gui: Remove ScreenList typedef
This typedef just introduces an additional layer of indirection to
understand code.
2021-01-10 14:13:45 +02:00
Povilas Kanapickas 384dbffce4 gui: Remove HotkeyList typedef
This typedef just introduces an additional layer of indirection to
understand code.
2021-01-10 14:13:44 +02:00
Povilas Kanapickas ac60e620ba gui: Remove ActionList typedef
This typedef just introduces an additional layer of indirection to
understand code.
2021-01-10 14:13:43 +02:00
Povilas Kanapickas 5cc18ac595
Merge pull request #1011 from p12tic/hotkey-tests
Add tests for Hotkey serialization
2021-01-10 14:00:53 +02:00
Povilas Kanapickas fb067d4001 gui/test: Add tests for Hotkey serialization to QSettings 2021-01-10 13:50:33 +02:00
Povilas Kanapickas 68cfb4e585 gui: Don't use friends to limit access to Action 2021-01-10 13:50:33 +02:00
Povilas Kanapickas 0579101272 gui: Don't use friends to limit access to Hotkey 2021-01-10 13:50:33 +02:00
Povilas Kanapickas a691b31b8e gui: Make access to hotkey actions explicit 2021-01-10 13:50:33 +02:00
Povilas Kanapickas 016393fb67 gui: Remove unnecessary accessor to private member in Hotkey 2021-01-10 13:50:33 +02:00
Povilas Kanapickas e7da893f5a gui/test: Extract temporary file creation to a separate file 2021-01-10 13:50:33 +02:00
Povilas Kanapickas 7f76d3cdcc gui/tests: Use common per-platform libs variable for dependencies 2021-01-10 13:50:14 +02:00
Povilas Kanapickas f1aab806af
Merge pull request #1009 from p12tic/gui-keysequence-tests
Add tests for KeySequence
2021-01-07 23:51:31 +02:00
Povilas Kanapickas 88c0c030f8 gui: Add tests for KeySequence serialization 2021-01-07 23:43:54 +02:00
Povilas Kanapickas 1c434df87a gui: Remove unnecessary accessor to private member in KeySequence 2021-01-07 23:43:53 +02:00
Povilas Kanapickas 3f387bdad0 gui: Fix incorrect parameter order in KeySequence::appendKey() 2021-01-07 23:43:52 +02:00
Povilas Kanapickas acc54de922 src: Extract test CMake setup to separate file 2021-01-07 23:43:51 +02:00
Povilas Kanapickas 01b97d0c2a gui: Explicitly set the lists of source files 2021-01-07 23:43:50 +02:00
Povilas Kanapickas 1d5fcfa3af gui: Remove qmake project 2021-01-07 23:43:49 +02:00
Povilas Kanapickas 6b317359ba gui: List all source files explicitly for the lupdate tool
This will allow us to remove the last dependency on gui.pro
2021-01-07 23:43:48 +02:00
Povilas Kanapickas f2bf7cb7e1
Merge pull request #1001 from p12tic/cmake-whitespace
CMakeList: fix a tab vs spaces indentation issue
2021-01-03 23:00:54 +02:00
Peter Hutterer d5799f37d3 CMakeList: fix a tab vs spaces indentation issue
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2021-01-03 22:49:45 +02:00
Povilas Kanapickas c7b911497a
Merge pull request #910 from eugenegff/fix/non-ascii-kb-layouts
Fixed processing of non-ASCII symbols missing in CP_THREAD_ACP but present in current KB layout
2020-12-30 13:44:30 +02:00
Eugene Golushkov 09e1dbdf84 platform: Fixed processing of non-ASCII symbols
The non-ASCII symbols missing in CP_THREAD_ACP but present in current KB
layout were processed incorrectly. Do not rely on ANSI => UTF16
conversion, obtain UTF16 directly from KB layout driver. BTW, ToAscii is
implemented via ToUnicode + RtlUnicodeToMultiByteN, so this is really
optimization.
2020-12-30 13:00:22 +02:00
Povilas Kanapickas 64a9c41edc
Merge pull request #979 from albertony/cp_acp
Use ansi codepage for internal multibyte strings on windows (fixes #976, fixes #974, fixes #444)
2020-12-30 12:55:34 +02:00
Povilas Kanapickas 55434ebced
Merge pull request #988 from albertony/win_clean_uninstall
Perform clean uninstall on windows
2020-12-29 23:07:16 +02:00
albertony 402801e0a6 Use ansi codepage for internal multibyte strings on windows (fixes #976, fixes #974, fixes #444) 2020-12-28 21:17:40 +01:00
albertony 2c5cdf1037 Add version info resource to windows setup exe 2020-12-12 16:15:53 +01:00
albertony 91baa4f133 Perform clean uninstall on windows 2020-12-11 19:45:36 +01:00
Povilas Kanapickas e032d14a48
Merge pull request #972 from albertony/drop_dir
Configurable drop target directory on windows
2020-12-10 22:00:53 +02:00
albertony 36d9efbc64 Increased loglevel of central drag drop related messages 2020-12-10 01:11:49 +01:00
albertony b125cf3da7 Improve drag&drop stability on windows 2020-12-10 00:08:49 +01:00
albertony 357e0ccc7e Configurable drop directory 2020-12-10 00:08:42 +01:00
Povilas Kanapickas e66832c1d7
Merge pull request #978 from albertony/rc_version_info
Add version info resource to windows exe
2020-12-10 00:05:58 +02:00
Povilas Kanapickas bbea197600
Merge pull request #973 from albertony/obsolete_service_help
Cleanup obsolete options in help text
2020-12-10 00:00:44 +02:00
Povilas Kanapickas 2da6cb3a51
Merge pull request #969 from albertony/profile_dir
Improvements to custom profile dir option
2020-12-09 23:55:56 +02:00
Povilas Kanapickas ce31584a6b
Merge pull request #980 from whot/wip/strip-trailing-whitespace
Remove trailing whitespaces
2020-12-09 23:54:44 +02:00
Povilas Kanapickas 829ff7975b
Merge pull request #981 from whot/wip/simplify-ifdefs
Remove some #defines that had no useful effect
2020-12-09 23:52:47 +02:00
Povilas Kanapickas 99edadb0b1
Merge pull request #983 from albertony/save_conf_ext_filter
Fix file extension filter in config save dialog (fixes #375)
2020-12-09 23:51:10 +02:00
albertony bc5c4bf344 langbuild 2020-12-09 22:40:10 +01:00
albertony 390555c53d Fix file extension filter in config save dialog (fixes #375) 2020-12-09 21:46:56 +01:00
albertony 366342e401 Add resource with icon and version info to windows deamon exe 2020-12-09 14:14:18 +01:00
albertony aea488167a Cleanup windows client and server exe resource build 2020-12-09 14:14:18 +01:00
albertony 5fdb750922 Add version info to windows client and server exe resources 2020-12-09 13:45:32 +01:00
Peter Hutterer 1474f04f53 Remove an unreachable preprocessor directive
cmake sets HAVE_DPMS_PROTOTYPES unconditionally to 1 if we have the dpms
headers. So code inside HAVE_X11_EXTENSIONS_DPMS_H never needs to check for
it.

And since there's only one place that cared for this, we can remove the define
in cmake as well.
2020-12-09 14:39:13 +10:00
Peter Hutterer f3eb89121d Move the XTest check to cmake
Where the ifdef was checked, the alternative was a compiler error. We can
shortcut that process and just fail in cmake where the header is not found.
2020-12-09 14:39:09 +10:00
Peter Hutterer 38390f9b88 Undef X_DISPLAY_MISSING
As of f815f9840d several years ago nothing sets
this #define anywhere anymore.
2020-12-09 14:37:10 +10:00
Peter Hutterer 0dbedd31dc Remove trailing whitespaces
Many tools strip trailing whitespaces by default, so after editing a file with
whitespace errors we end up with a bunch of unrelated hunks that need to be
reverted locally.

This could be fixed by configuring each tool to not do this (at least for the
barrier repo), or, simpler, we just sed the problem away and make barrier
whitespace-compliant.

sed commands run:
    sed -i 's/[ \t]\+$//' **/*.(cpp|h) **/*CMakeLists.txt

Verified with git diff --ignore-space-change, this shows the empty diff.
2020-12-09 14:02:28 +10:00
albertony 72849864a3 Remove from help text unsupported --relaunch option and note --service option is obsolete on windows 2020-12-06 18:48:01 +01:00
albertony 87c5f874e4 Include --profile-dir in help text 2020-12-05 01:12:19 +01:00
albertony 01a78a4d3a Do not store path to ImmuneKeys.txt before --profile-dir is considered 2020-12-05 01:09:41 +01:00
Povilas Kanapickas 06951ea9f0
Merge pull request #926 from rbalint/master
lib/ipc: Introduce writef_void(void*, ...)
2020-11-23 18:38:03 +02:00
Povilas Kanapickas 142e8dc847
Merge pull request #929 from aeghn/read_tray_icons_from_theme
Enhancement: Read theme's panel icons.
2020-11-22 17:30:01 +02:00
aeghn 95afed5256 Make barrier try to read tray icons from themes now. 2020-10-27 14:11:11 +08:00
Balint Reczey bd0c671fcc lib/ipc: Introduce writef_void(void*, ...)
to fix ambiguity with writef(barrier::IStream*, ...)
2020-10-22 22:46:02 +02:00
Povilas Kanapickas fc045fc793
Merge pull request #917 from danielhams/cmakelisttypofix
CMakeLists.txt: correct missing brace in make_directory
2020-10-18 20:08:24 +03:00
Daniel Hams 65f4db7563 CMakeLists.txt: correct missing brace in make_directory 2020-10-17 07:43:11 +01:00
Povilas Kanapickas 43708ae0d6
Merge pull request #893 from debauchee/fix/stale-bot/no-aggressive
Fix aggressive behaviour of the stale GitHub actions bot
2020-10-01 00:36:51 +03:00
Dom Rodriguez 9b55aaae1e
[improve](stale bot): Adjust stale messages to encourage self-closing
What the subject line says really. As per @walker0643's feedback, the
stale bot now encourages the author of the issue/PR to close it
themselves, if it is no longer an issue, or if they no longer want to
work on the PR.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2020-09-29 23:29:44 +01:00
Dom Rodriguez dbe4dc5d12
[fix](stale bot): Make stale bot less aggressive [2/2]
This commit changes the configuration of the stale bot. It will now mark
issues as stale after 6 months. In days, this is 182(.5, if you want to
be super precise, but let's go with 182).

This should reduce the noise made by the bot.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2020-09-29 17:34:57 +01:00
Dom Rodriguez 8122484c3d
[fix](stale bot): Make stale bot less aggressive [1/2]
This commit changes the configuration of the stale bot. It no longer
closes stale issues, and instead gives a friendly 'nudge' for stale
issues.

The next commit will change the time for issues to be marked stale to 6
months. This should help reduce the noise from the bot.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2020-09-29 17:33:04 +01:00
Dom Rodriguez 7756557204
[fix](stale bot): Change cron time to midnight
This fits in better across various time zones (I'm GMT, for example,
some devs EST/CEST).

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2020-09-29 17:22:13 +01:00
Dom Rodriguez 2cd21cc95f
[chore](stale bot): Bump Stale bot version to v3
Previous was v1, v3 fixes bugs, and makes the action 'smarter'.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2020-09-29 17:21:38 +01:00
Dom Rodriguez 012a7dc055
[actions](stale): Add further configuration to GitHub Action - stale.
This commit fleshes out the messages and labels applied to stale
issuse/PRs, configures 'exempt' labels, and additionally the number of
days before a issue is marked stale/closed.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2020-09-17 16:52:15 +01:00
walker0643 0699536382
Create stale.yml 2020-09-17 11:20:11 -04:00
Dom Rodriguez c1d131fd38
Merge pull request #873 from debauchee/enhancement/style/editorconfig
[style](editorconfig): Commit initial EditorConfig config for code style
2020-09-14 23:04:06 +01:00
Dom Rodriguez 167a1075fa
[style](editorconfig): Commit initial EditorConfig config for code style
Soon to be added: wiki page about expected code style for Barrier.
Also, docs when that's ready.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2020-09-14 13:12:53 +01:00
Dom Rodriguez 9745df29cd
Merge pull request #869 from NikoHD203/patch-1
Update gui_de.ts
2020-09-13 16:22:00 +01:00
NikoHD203 4aee34848e
Update gui_de.ts
wrong grammar
2020-09-09 11:52:55 +02:00
Dom Rodriguez 5a02070b54
Remove old issue template
This is in relation to #856.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2020-08-31 03:24:53 +01:00
Dom Rodriguez b38f844dc0
Merge pull request #856 from debauchee/enhancement/github/templates/bug
Update issue templates
2020-08-31 03:24:06 +01:00
Dom Rodriguez 3804198105 Update issue templates
Our current templates do not use the latest GitHub templates, so this updates them. I have adjusted and removed some wording to make the template simpler, as I have found some users neglect to fill in the template, or partially fill it in. I hope this helps with the bug reporting process.
2020-08-28 22:13:51 +01:00
Povilas Kanapickas 600d31f29b
Merge pull request #848 from chewi/TEST_ENV
Rename TEST_ENV macro to BARRIER_TEST_ENV
2020-08-23 14:25:48 +03:00
James Le Cuirot 1418196af1
Rename TEST_ENV macro to BARRIER_TEST_ENV
As requested in #846.
2020-08-22 19:25:35 +01:00
Povilas Kanapickas c3aba1b20b
Merge pull request #846 from chewi/tests
Add BARRIER_BUILD_TESTS and BARRIER_USE_EXTERNAL_GTEST CMake options
2020-08-22 21:21:11 +03:00
Povilas Kanapickas 7dbfa63a63
Merge pull request #847 from chewi/getenv
Replace all instances of C's getenv with C++'s std::getenv
2020-08-22 21:20:30 +03:00
James Le Cuirot 7aa110475e
Replace all instances of C's getenv with C++'s std::getenv 2020-08-22 19:05:24 +01:00
James Le Cuirot fa46480c35
Respect DISPLAY environment variable in XWindows tests
XWindowsScreenTests was failing under Gentoo's package manager. I have
also addressed this in XWindowsScreenSaverTests, which is currently
unused.
2020-08-22 17:36:55 +01:00
Povilas Kanapickas b204520864
Merge pull request #832 from tom-tan/add-os-barrier-keymap-for-jis-kbd
Add key mappings for `Kana`, `Eisu_toggle` and `Muhenkan`
2020-08-22 13:47:35 +03:00
Povilas Kanapickas d58a9fbe84
Merge pull request #803 from p12tic/crypto-cert-fixes
Regenerate server certificate when it is broken or has too small key size
2020-08-22 13:38:46 +03:00
James Le Cuirot bd1db368b3
Add BARRIER_USE_EXTERNAL_GTEST CMake option to use external GTest 2020-08-21 23:13:58 +01:00
James Le Cuirot 4a031b8ce5
Add BARRIER_BUILD_TESTS CMake option to make tests optional 2020-08-21 22:56:57 +01:00
Tomoya Tanjo 4aefd64add
Add missing comma 2020-08-12 18:33:32 +09:00
Tomoya Tanjo 0fdcf8b225 Add key mappings for `Kana`, `Eisu` and `Muhenkan` 2020-08-12 16:20:29 +09:00
Dom Rodriguez d186548a53
Update Debian changelog to v2.3.3 2020-08-07 18:33:54 +01:00
Povilas Kanapickas 36ae769987
Merge pull request #818 from tom-tan/add-eisu-muhenkan
Add key entries for `Eisu_toggle` and `Muhenkan`
2020-08-07 10:57:57 +03:00
Dom Rodriguez 9a9d22105c
Merge pull request #822 from M1cha/kbd-backlight
add support for keyboard backlight media keys
2020-08-04 20:53:02 +01:00
Dom Rodriguez 6b71871204
[Build]: Bump Build.properties 2020-08-04 15:50:49 +01:00
Michael Zimmermann 7452b64482 add support for keyboard backlight media keys
I've tested this with a german Apple Magic Keyboard with Numeric Keypad (Space Gray)
connected to a non-Apple Linux Laptop running Arch Linux.
keycode 237 (keysym 0x1008ff06, XF86KbdBrightnessDown)
keycode 238 (keysym 0x1008ff05, XF86KbdBrightnessUp)
2020-08-01 13:28:48 +02:00
Tomoya Tanjo 4d32e29275 Add Eisu_toggle and Muhenkan keys 2020-07-27 22:04:00 +09:00
Povilas Kanapickas c815abf0e8 gui: Show certificate-related info in logs 2020-07-19 11:56:18 +03:00
Povilas Kanapickas 345bb4b62b gui: Regenerate certificate if it's invalid or the key is too small 2020-07-19 11:56:17 +03:00
Povilas Kanapickas 7210bfa615 gui: Extract certificate path generation to separate functions 2020-07-19 11:56:16 +03:00
Povilas Kanapickas 93ef15774b gui: Don't store openssl output as state of the object 2020-07-19 11:56:15 +03:00
Povilas Kanapickas bd3a8be956 net: Always report the filename of the cert that fails to load 2020-07-19 11:56:14 +03:00
Povilas Kanapickas 3d0186695f net: Simplify error reporting 2020-07-19 11:56:13 +03:00
Dom Rodriguez bbd1accb93
Merge pull request #797 from maxiberta/short-tags
Shorten snap version on tagged revisions
2020-07-14 23:39:54 +01:00
Maximiliano Bertacchini ef769d4802 Shorten snap version on tagged revisions 2020-07-14 18:58:52 -03:00
Dom Rodriguez 3395cca967
Prepare for v2.3.3 release 2020-07-14 18:37:45 +01:00
Povilas Kanapickas 2393393b88
Merge pull request #750 from nh2/double-tap-explanation
ui: Settings: Explain what "double tap" means
2020-06-14 22:45:35 +03:00
Niklas Hambüchen 03c1f06878 ui: Settings: Explain what "double tap" means 2020-06-14 20:16:03 +02:00
Povilas Kanapickas 965cd70ba2
Merge pull request #742 from maxiberta/fix-snap-submodules
Fix snap build failing to initialize submodules
2020-06-11 20:43:36 +03:00
Maximiliano Bertacchini d06395a6f2 Fix snap build failing to initialize submodules. 2020-06-08 21:29:35 -03:00
Povilas Kanapickas 515805fc1a
Merge pull request #703 from zexee/master
Added toggleScreen function, using hot key to loop through all screens.
2020-06-08 18:49:49 +03:00
Povilas Kanapickas 00f2b1f615
Merge pull request #721 from shymega/enhance/make-gtest-submodule
Proposal: Replace bundled gtest directory with Git submodule
2020-06-08 18:43:04 +03:00
Dom Rodriguez b16ad17340 Fix CI infrastructure (.bat/.sh) to initialise Git submodules before build 2020-06-08 14:31:27 +03:00
Dom Rodriguez 938ad34e2d Add gtest/gmock framework, locked at 1.6.0 2020-06-08 14:31:39 +03:00
Dom Rodriguez e9b82b462c Remove ext/gtest, ext/gmock to replace with Git submodule 2020-06-08 14:31:27 +03:00
Povilas Kanapickas c336cfde8f
Merge pull request #739 from simons-public/gui-status-log-comments
GUI status log comments
2020-06-06 21:00:01 +03:00
Chris Simons 7331519b51 add comments explaining the use of CLOG_PRINT 2020-06-06 09:51:33 -07:00
Povilas Kanapickas 69cfd14ee9
Merge pull request #738 from debauchee/revert-725-patch-2
Revert "Make connection message a NOTE for consistency"
2020-06-06 11:02:37 +03:00
Povilas Kanapickas 2b2818c1a7
Revert "Make connection message a NOTE for consistency" 2020-06-05 21:12:44 +03:00
Povilas Kanapickas 0f29c7716d
Merge pull request #656 from galkinvv/fix-win10-cpu-usage-spikes
Fixes high cpu usage spikes on win10
2020-06-05 00:30:22 +03:00
Povilas Kanapickas 8df50c734f
Merge pull request #732 from GeorgH93/master
Fix build on Windows
2020-06-05 00:25:33 +03:00
GeorgH93 0ec5283506
Keep errorlevel 2020-06-03 16:03:14 +02:00
GeorgH93 64a9320d61
Fix build on Windows 2020-06-03 15:48:44 +02:00
zhexiwang b477efa706 Added toggleScreen function, using hot key to loop through all screens.
Comparing to switchToScreen, it is more handy since the user only need
to hit one hotkey.
2020-06-02 21:49:06 +08:00
Dom Rodriguez 0a1f080231
Merge pull request #725 from jmartens/patch-2
Make connection message a NOTE for consistency
2020-06-01 14:51:06 +01:00
Jonathan Martens 583b2cb5ae
Make connection message a NOTE for consistency
When disconnected a NOTE log entry is made in the log, when connected it just prints which seems inconsistent to me:

```
[2020-06-01T11:50:55] INFO: AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD

	/home/jonathan/barrier/src/lib/net/SecureSocket.cpp,872
connected to server
[2020-06-01T11:52:43] INFO: entering screen
```
vs.
```
[2020-06-01T11:59:01] NOTE: disconnected from server
	/home/jonathan/barrier/src/lib/barrier/ClientApp.cpp,315
```
Since everything else logs with a timestamp I suggest changing this to NOTE as well for connection events being logged.
2020-06-01 12:02:33 +02:00
Dom Rodriguez b373d8eda9
Merge pull request #679 from p12tic/x11-fix-event-wait-race-condition
XWindowsEventQueueBuffer: Fix delays when waiting for new events
2020-05-31 00:07:14 +01:00
Dom Rodriguez 8891364258
Merge pull request #718 from p12tic/use-noexcept
Use noexcept instead of dynamic exception specifications
2020-05-30 21:39:12 +01:00
Povilas Kanapickas 89c6623c0e lib/common: Remove no longer used stdexcept.h 2020-05-30 23:35:27 +03:00
Povilas Kanapickas 5eac13a969 Use noexcept instead of exception specifications 2020-05-30 23:35:27 +03:00
Dom Rodriguez 5d0f6e6f73
Merge pull request #719 from p12tic/tests
Fix building of tests
2020-05-30 21:14:08 +01:00
Dom Rodriguez dacbfc1ee2
Merge pull request #717 from p12tic/use-std-string
lib/platform: Use std::string directly instead of String typedef
2020-05-30 21:06:54 +01:00
Povilas Kanapickas 64265e926f tests: Disable test that depends on external state 2020-05-30 22:41:27 +03:00
Povilas Kanapickas 460f5df838 test: Fix undefined behavior of deleting incomplete type 2020-05-30 22:41:26 +03:00
Povilas Kanapickas 13a0359c58 tests: Fix crash in XWindowsKeyStateTests 2020-05-30 22:41:25 +03:00
Povilas Kanapickas f23e8a6ad9 test: Update to new APIs 2020-05-30 22:41:24 +03:00
Povilas Kanapickas 7868043ac4 test: Fix referenced library name 2020-05-30 22:41:23 +03:00
Povilas Kanapickas a6e5e47366 test: Remove unresolved merge conflict markers 2020-05-30 22:41:22 +03:00
Povilas Kanapickas 56f1232352 test: Reduce the number of implicit include directories 2020-05-30 22:41:21 +03:00
Povilas Kanapickas b99ca80eaa test: Enable building of tests 2020-05-30 22:41:20 +03:00
Povilas Kanapickas 5eafd30de4 lib/platform: Use std::string directly instead of String typedef 2020-05-30 21:46:49 +03:00
Povilas Kanapickas a626f245a9 lib/net: Add missing include 2020-05-30 21:46:16 +03:00
Dom Rodriguez e354d79d81
Merge pull request #706 from jmartens/patch-1
Fix Auto config missing hostname prompt #704
2020-05-30 18:28:13 +01:00
Dom Rodriguez 5522d077aa
Merge pull request #708 from p12tic/enum-class
gui: Use enum class to scope enum values
2020-05-30 18:04:01 +01:00
Dom Rodriguez 4a2f1a9b61
Merge pull request #709 from p12tic/use-std-string-1
lib/base: Use std::string directly instead of String typedef
2020-05-30 18:00:54 +01:00
Dom Rodriguez b02a20bd36
Merge pull request #712 from p12tic/use-std-string-4
lib/ipc: Use std::string directly instead of String typedef
2020-05-30 18:00:35 +01:00
Dom Rodriguez df15e76e12
Merge pull request #710 from p12tic/use-std-string-2
lib/client: Use std::string directly instead of String typedef
2020-05-30 17:59:58 +01:00
Dom Rodriguez 4039bc2f3d
Merge pull request #711 from p12tic/use-std-string-3
lib/arch: Use std::string directly instead of String typedef
2020-05-30 17:59:50 +01:00
Dom Rodriguez 9368845d8e
Merge pull request #713 from p12tic/use-std-string-5
lib/net: Use std::string directly instead of String typedef
2020-05-30 17:59:36 +01:00
Dom Rodriguez b0f0a6fa96
Merge pull request #714 from p12tic/use-std-string-6
lib/server: Use std::string directly instead of String typedef
2020-05-30 17:58:31 +01:00
Povilas Kanapickas 787f907587 lib/ipc: Use std::string directly instead of String typedef 2020-05-30 16:00:42 +03:00
Povilas Kanapickas 61771d9039 lib/base: Use std::string directly instead of String typedef 2020-05-30 14:50:36 +03:00
Povilas Kanapickas b4c1e4c239 lib/server: Use std::string directly instead of String typedef 2020-05-30 14:48:11 +03:00
Povilas Kanapickas b93bcccf57 lib/net: Use std::string directly instead of String typedef 2020-05-30 14:47:11 +03:00
Povilas Kanapickas 6868491483 lib/arch: Use std::string directly instead of String typedef 2020-05-30 14:45:21 +03:00
Povilas Kanapickas a0af288b2b lib/client: Use std::string directly instead of String typedef 2020-05-30 14:42:59 +03:00
Povilas Kanapickas 94a280a82b gui: Use enum class to scope enum values 2020-05-30 13:46:40 +03:00
Vasily Galkin 95f2a840be Windows 8+: make waiting for messages correspond to emptiness check
Fixes high cpu usage spikes on win10.
When queue was containing messages of only non-QS_POSTMESSAGE type the
"while (m_buffer->isEmpty())" busy-looped in EventQueue::getEvent
since isEmpty was true (checked only QS_POSTMESSAGE message type),
but waitForEvent returned immediately (checked more message types).

Investigation shows that the difference was introduced in
https://github.com/debauchee/barrier/commit/dbfb04a6e
to fix a problem with bad behaviour of GetQueueStatus
Researching showed that a similar problem was fixed in Qt,
and the solution was
"pass different flags to GetQueueStatus depending on version of windows"
https://bugreports.qt.io/browse/QTBUG-29097

So this patch makes changes to a barrier non-GUI core similar to Qt fix.
2020-05-29 14:09:48 +03:00
Jonathan Martens 21eadc9661
Fix Auto config missing hostname prompt #704
I think this might fix the prompt for a missing hostname when auto config is checked
2020-05-29 10:11:55 +02:00
Povilas Kanapickas 722b7d6cc4 XWindowsEventQueueBuffer: Fix delays when waiting for new events
QLength() may return 0 even if there are events pending because they
need to be read from the display socket in order to become visible. We
must use XPending() which will poll the socket if QLength() == 0.
2020-05-20 22:11:14 +03:00
Vasily Galkin 8ab6ad64f9 Remove unused IEventQueue::isEmpty() method to simplify code understanding
Current code base don't use IEventQueue::isEmpty() method.
Remove it to simplify IEventQueue API and to remove confusion with
IEventQueueBuffer with same name.

The IEventQueueBuffer::isEmpty() and all its implementations kept unchanged
2020-05-13 01:35:40 +03:00
Dom Rodriguez dbd10820c3
Merge pull request #585 from chewi/pthread
Use -pthread flag and simplify pthread build logic
2020-05-12 23:13:16 +01:00
Dom Rodriguez fe0f3303d7
Merge pull request #655 from simons-public/elevate-bind-failure-to-error
Elevate XSocketAddressInUse to ERROR
2020-05-12 23:06:15 +01:00
Dom Rodriguez 81d4758c28
Merge pull request #579 from eson57/patch-1
Update gui_sv.ts
2020-05-12 22:09:21 +01:00
Dom Rodriguez db63edde69
Merge pull request #615 from scarabeusiv/patch-1
Fix desktop file Categories to match standard
2020-05-12 21:54:01 +01:00
Dom Rodriguez dc2869f48b
Merge pull request #664 from simons-public/fix-gui-status
Change log level on several status messages (Fixes #652, Fixes #516)
2020-05-12 21:40:38 +01:00
Chris Simons 639415ea44
Merge pull request #2 from plessbd/patch-3
A few more log cleanups
2020-05-12 13:07:45 -07:00
Ben Plessinger 5636e9cb40
A few more log cleanups
Fix a few more log messages to be consistent
2020-05-12 15:49:19 -04:00
Dom Rodriguez 5d82510ee8
Merge pull request #653 from simons-public/tis-tsm-fix
Fix TIS/TSM in logs
2020-05-12 18:54:57 +01:00
Chris Simons a9421a9cd3 Change log level on several status messages (Fixes #652, Fixes #516)
This changes the log level for several statuses (started server,
connected to server, server status:) from CLOG_NOTE or CLOG_INFO to
CLOG_PRINT so they will be printed to stdout regardless of the log
level. This allows the GUI to accurately report the status of the
`barriers` or `barrierc` processes in src/gui/src/MainWindow.cpp#L379-L399.
2020-05-11 20:36:51 -07:00
Chris Simons 7a2b38ad56 replace tabs with spaces 2020-05-07 16:56:42 -07:00
Dom Rodriguez 2d2e92989c
Merge pull request #658 from simons-public/select-fingerprint
Allow selecting Fingerprint Qlabel
2020-05-07 15:20:39 +01:00
Chris Simons 6653de6450 Allow selecting Fingerprint Qlabel
Setting the Fingerprint label to TextSelectableByMouse allows users to
copy/paste the fingerprint so it can be easily added to "TrustedServers.txt"
on a client machine (i.e. via SSH).
2020-05-06 20:40:17 -07:00
Chris Simons b3349ddfec Elevate XSocketAddressInUse to ERROR
Errors where the socket address is in use will keep the server from connecting
with clients. This should be reported as an ERROR instead of a warning. Also,
if the retry time is shorter issues will be more obvious, since the error will
cause the log to scroll visibly.
2020-05-06 15:36:34 -07:00
Chris Simons 30c77497df Fix TIS/TSM in logs
Silences the "is calling TIS/TSM in non-main thread environment"
messages in the log when running a MacOS server as it is a red herring
that causes a lot of issues to be filed.
2020-05-06 15:32:46 -07:00
Dom Rodriguez 675a17d6e8
Merge pull request #648 from simons-public/use-macdeployqt
Use macdeployqt
2020-05-06 18:48:53 +01:00
Chris Simons b5c7eb45ef Change MacOS Build Steps
The Azure Pipelines MacOS vmImage has an old version of OpenSSL (1.0.2t)
installed at /usr/local/opt/openssl. Normally with Homebrew this directory
would be linked to the currenly installed version of OpenSSL (1.1.x) in
/usr/local/Cellar, but since it has been installed manually here it interferes
with linking libssl.a and libcrypto.a static libraries which causes the build
to fail.
2020-05-05 20:04:25 -07:00
Chris Simons 0deaaad2c9 added barrierc and barriers to macdeployqt targets
macdeployqt needs "-executable=filename" to propery
change linking on other variables

also renamed the cmake target from "Barrier_dmg" to
"Barrier_MacOS" to properly reflect earlier changes
2020-05-04 09:37:18 -07:00
Chris Simons e0051d17d8 Homebrew (Ruby) throws an error when it gets `SIGPIPE` from the `--max-count` on `grep`. 2020-05-02 13:58:22 -07:00
Chris Simons fb3eaa3e3c Add warnings for users manually running `build_installer.sh` and `reref_dylibs.sh` manually 2020-05-02 13:27:58 -07:00
Chris Simons 8cd59ebee7 Use `build_dist.sh` in CMake instead of `build_installer.sh`
Have CMake always build a bundle, the `build_dist.sh` script will only build a dmg if the build type is "Release"
2020-05-02 12:33:09 -07:00
Chris Simons e37277fe8f Add script that uses macdeployqt instead of `reref_dylibs.sh` shell script to create the `.app` bundle 2020-05-02 12:30:18 -07:00
Tomáš Chvátal f0d2459247
Fix desktop file Categories to match standard
It requires more sections than Utility;
2020-04-07 10:30:41 +02:00
Dom Rodriguez b6a1b57420
Merge pull request #592 from chewi/qt-gui-only
Only require Qt5 when building the GUI
2020-03-26 11:48:15 +00:00
Dom Rodriguez 79c191ab2b
Merge pull request #580 from the-wes/patch-1
Add more detailed description of what Barrier does, fixes #551
2020-03-26 11:21:15 +00:00
Dom Rodriguez 11edf04107
Merge pull request #574 from shymega/enhancement/readme-0
README: Add OpenBSD to list of supported OSes
2020-03-18 21:40:49 +00:00
James Le Cuirot af0ce63733
Only require Qt5 when building the GUI
Commit 6c888437 made Qt5 mandatory for all builds when it is only
required for the GUI. There's already a find_package call in src/gui,
it just needed the REQUIRED flag to be added.
2020-03-17 22:45:20 +00:00
James Le Cuirot a0b3124f80
Use -pthread flag and simplify pthread build logic
Sometimes -lpthread is not enough. This has caused build failures on
Gentoo Linux in the past.

The logic also seems needlessly complex. We check for HAVE_PTHREAD on
UNIX platforms even though CMake errors out if pthreads are not
found. Similarly, we have a fallback for HAVE_PTHREAD_SIGNAL being
false even though we always set it to true.
2020-03-10 21:10:48 +00:00
the-wes b2324f0d24
Add more detailed description of what Barrier does 2020-03-03 02:17:38 -08:00
Åke Engelbrektson 6fb4512617
Update gui_sv.ts
Hi, 
Please, add updated Swedish translation.
2020-03-03 10:57:39 +01:00
Dom Rodriguez 3afa54d0da
README: Add OpenBSD to list of supported OSes 2020-02-26 00:42:41 +00:00
Adrian Lucrèce Céleste e8d7cd3f10
Merge pull request #539 from MicaelJarniac/patch-2
Build status badges added to a table
2020-02-25 17:22:57 -05:00
Adrian Lucrèce Céleste e5999f01a8
Merge pull request #553 from maxiberta/disable-wayland
Disable wayland support in the snap
2020-02-13 09:20:32 -05:00
Adrian Lucrèce Céleste 72d1c8cd65
Merge pull request #557 from galkinvv/fix-loop-tcp-disconnection
Fix infinite loop on fast TCP disconnection
2020-02-13 09:20:22 -05:00
Vasily Galkin c79120c049 Fix infinite loop on fast TCP disconnection
The commit a841b28 changed the condition for removing job from processing.
New flag MultiplexerJobStatus::continue_servicing become used
instead of checking pointer for NULL.
However for cases when TCPSocket::newJob() returns nullptr
the behaviour changed: earlier the job was removed, but after change
it is called again, since MultiplexerJobStatus equal to {true, nullptr}
means "run this job again".

This leads to problem with eating CPU and RAM on linux
https://github.com/debauchee/barrier/issues/470

There is similar windows problem, but not sure it is related.
https://github.com/debauchee/barrier/issues/552

Since it looks that the goal of a841b28 was only clarifying
object ownership and not changing job deletion behaviour,
this commit tries to get original behaviour and fix the bugs above
by returning {false, nullptr} instead of {true, nullptr}
when TCPSocket::newJob() returns nullptr.
2020-02-09 23:27:26 +03:00
Maximiliano Bertacchini 65fb58ebe5 Add comment on snap env var 2020-02-05 12:30:04 -03:00
Maximiliano Bertacchini f2f9f1ec64 Explicitly disable wayland support in the snap. 2020-02-05 12:16:53 -03:00
Maximiliano Bertacchini d9745a737a Add build-essential to the snap's build deps. 2020-02-05 12:16:20 -03:00
Micael Jarniac 8335ffd5e5
Build status badges added to a table 2020-01-10 12:14:51 -03:00
Adrian Lucrèce Céleste 170a271737
Merge pull request #533 from candeira/503_readme_issues_prs
Fix #503 - Clarify on README how to report issues
2019-12-30 08:46:56 -05:00
Javier Candeira 6e2ed1e597 Fix #503 - Clarify on README how to report issues 2019-12-29 19:13:23 +11:00
Adrian Lucrèce Céleste adb175df9e
Merge pull request #521 from maxiberta/master
Update readme with mention of the snap package
2019-12-08 12:22:13 -05:00
Maximiliano Bertacchini 55e3d52eec Update readme with mention of the snap package. 2019-12-07 18:28:49 -03:00
Adrian Lucrèce Céleste 13ac24821a
Merge pull request #511 from keeganquinn/elcapitan-build-fix
Cast values to fix build errors on OS X 10.11.
2019-11-24 19:02:44 -05:00
Keegan Quinn 3d832fd728 Cast values to fix build errors on OS X 10.11. 2019-11-24 12:40:13 -08:00
Adrian Lucrèce Céleste 36ed253e12
Merge pull request #507 from galkinvv/man-conf-name-dot
Man page: fix incorrect name of user conf file in barriers.1
2019-11-21 16:37:46 -05:00
Vasily Galkin e2d460b779 Man page: fix incorrect name of user conf file in barriers.1
The leading dot was lost in documentation in previous change
while moving file to another directory.
The usage of leading dot in non-home folder is not a common practice,
but this is the current behavior,
and this commit just update man page to match the code.

Also the man pages has a not that they are auto-generated by help2man.
I used help2man to update them,
but it's output has some problems (wrong formatting of copyrights).

So in addition to the only important change (naming fix)
there is some more changes:

* Formatting manually added to the list of config files.
* New option --screen-change-script auto-added by help2man
* Man files themselves and doc/UpdateManpages.txt now mention
that some manual work is needed after help2man
2019-11-21 21:17:18 +03:00
Adrian Lucrèce Céleste d8e0394a54
Merge pull request #504 from tiwoc/macos-tray-image
Let tray image blend into macOS menu bar
2019-11-21 08:36:46 -05:00
Daniel Seither 8ef0668b09 Let tray image blend into macOS menu bar
The expected style for macOS menu bar images is a template image than
can adapt to the user's appearance settings. Also, high-res screens
("Retina" in Apple speak) need higher resolution images.

Based on /res/barrier.svg, I created black and transparent SVGs for the
three icon states. I had to remove some details to make the image scale
down to icon size without becoming too crowded, and I drew a new
checkmark and the transfer arrow.
2019-11-21 10:45:08 +01:00
Adrian Lucrèce Céleste 1246ec36fd
Merge pull request #498 from tiwoc/fix-macos-warnings
Fix macOS build warnings
2019-11-19 09:18:54 -05:00
Daniel Seither dc2d8e9661 Add override specifiers 2019-11-19 12:04:55 +01:00
Daniel Seither 937326bf4f OSXDragView: Get rid of uninitialized variable warning 2019-11-19 12:04:29 +01:00
Daniel Seither 96e8adbaae IpcLogOutputter: Put member initializers in execution order
Member initializers are always run in the order defined in the header.
This commit reorders them in the implementation so that their order
reflects their execution order.
2019-11-19 12:03:53 +01:00
Daniel Seither da3876325d Remove unused variables 2019-11-19 12:01:37 +01:00
Adrian Lucrèce Céleste 9080ce451b
Merge pull request #486 from ctsrc/script-dir
Replace hard-coded names of build directory in build_installer.sh scr…
2019-11-09 21:33:50 -05:00
Adrian Lucrèce Céleste 22e353869a
Add settings in the Info.plist file that enable high-DPI support… (#488)
Add settings in the Info.plist file that enable high-DPI support on macOS
2019-11-09 21:33:27 -05:00
Adrian Lucrèce Céleste 3e4de1d9c1
Remove shell script that changes directory and then executes bar… (#487)
Remove shell script that changes directory and then executes barrier on macOS, and execute barrier directly instead
2019-11-09 21:32:59 -05:00
Erik Nordstrøm 3737ed634d Add settings in the Info.plist file that enable high-DPI support on macOS.
These changes follow the instructions in the official Qt docs.

https://doc.qt.io/qt-5/highdpi.html
2019-11-08 03:15:13 +01:00
Erik Nordstrøm 983b84be35 Remove shell script that changes directory and then executes barrier on macOS, and execute barrier directly instead. 2019-11-08 02:00:15 +01:00
Erik Nordstrøm 9c6de19f17 Replace hard-coded names of build directory in build_installer.sh script for macOS with looking at the location of the script by the script itself when it is run. This makes it possible to have differently named build dirs for debug and release builds, and without restricting what each of those directories must be named. 2019-11-08 01:01:10 +01:00
Adrian Lucrèce Céleste 07a1c31fab
Merge pull request #473 from RealKelsar/master
make non-gui variants build without avahi
2019-10-18 19:38:25 -04:00
Tetja Rediske 93a4035409 make non-gui variants build without avahi 2019-10-19 00:28:13 +02:00
Adrian Lucrèce Céleste 6daa516e99
Merge pull request #468 from qbit/openbsd
tell build system about openbsd
2019-10-16 19:50:55 -04:00
Aaron Bieber 459c136036
tell build system about openbsd 2019-10-16 17:35:30 -06:00
Adrian Lucrèce Céleste 14a708db33
Merge pull request #455 from xkill/master
Update debian changelog for 2.3.2 release
2019-10-09 09:43:52 -04:00
Pablo Catalina 29723a5745 Update changelog for 2.3.2 release 2019-10-09 12:52:10 +02:00
Pablo Catalina 8d9f8fa617 Update changelog for 2.3.2 release 2019-10-09 12:29:39 +02:00
Adrian Lucrèce Céleste 210c2b70bd
[Version] bump to 2.3.2, stable 2019-10-02 21:26:26 -04:00
Adrian Lucrèce Céleste 8320686e0d
Merge pull request #439 from mirh/master
Fix debug build launch
2019-09-20 10:37:32 -04:00
mirh 90f7a68695
Fix debug build launch 2019-09-19 22:41:51 +02:00
Adrian Lucrèce Céleste 0ed18c6b89
Merged mouse drift fix from synergy-core (#424)
Merged mouse drift fix from synergy-core
2019-09-03 15:02:43 -07:00
Casey Barton 69a65e4725 Merged mouse drift fix from synergy-core 2019-09-03 13:24:46 -04:00
Adrian Lucrèce Céleste 4dddbb5816
[README] update README with info about packages (#422)
[README] update README with info about packages
2019-09-01 11:14:49 -07:00
Adrian Lucrèce Céleste 894191d1cb
[README] update README with info about packages 2019-09-01 14:09:39 -04:00
Adrian Lucrèce Céleste f791a482b9
Add snap build status 2019-08-28 13:18:48 -04:00
Adrian Lucrèce Céleste 0ed9451430
[Azure Pipelines] use QT 5.13.0 (#418)
* [Azure Pipelines] use QT 5.13.0

* [Azure Pipelines] update build_env_tmp.bat to QT 5.13
2019-08-23 15:59:14 -04:00
Adrian Lucrèce Céleste 28466eea10
[CMake] properly declare FPIC (#417)
[CMake] properly declare FPIC
2019-08-23 15:48:20 -04:00
Adrian Lucrèce Céleste 1bdc95a498
[CMake] properly declare FPIC
use CMAKE_POSITION_INDEPENDENT_CODE instead of manually addinf -fPIC to CXX args.

	modified:   CMakeLists.txt
2019-08-23 15:40:36 -04:00
Adrian Lucrèce Céleste f1c570752b
Merge pull request #413 from debauchee/revert-405-fix/build-scripts
Revert "Tidy up and fix lint errors in build scripts"
2019-08-22 17:11:02 -04:00
Adrian Lucrèce Céleste 70a4ece9e8
Revert "Tidy up and fix lint errors in build scripts" 2019-08-22 17:03:18 -04:00
Adrian Lucrèce Céleste 58f6c735ff
Merge pull request #412 from maxiberta/rename-snap
Rename the snap as `barrier`.
2019-08-22 15:03:58 -04:00
Adrian Lucrèce Céleste fca05b9163
Use standard mutex APIs instead of the home-grown wrapper (#410)
Use standard mutex APIs instead of the home-grown wrapper
2019-08-22 15:01:35 -04:00
Adrian Lucrèce Céleste 7bb541ea91
Merge pull request #411 from p12tic/rewrite-memory-management
Use explicit memory ownership in SocketMultiplexer
2019-08-22 15:01:21 -04:00
Adrian Lucrèce Céleste ccfa10f2a0
Merge pull request #391 from EbonJaeger
Re-implement patch for horizontal scrolling and extra mouse buttons
2019-08-22 14:57:46 -04:00
Maximiliano Bertacchini 5812030f43 Rename the snap as `barrier`. 2019-08-22 15:55:12 -03:00
Adrian Lucrèce Céleste e31ebc1b22
Merge pull request #408 from p12tic/fix-ssl-mem-leak
Fix memory leak during SSL socket shutdown
2019-08-22 12:54:27 -04:00
Adrian Lucrèce Céleste 69ea670c1f
Fix retry timer not being unregistered properly (#409)
Fix retry timer not being unregistered properly
2019-08-22 12:54:19 -04:00
Povilas Kanapickas 3600f4b255 Fix retry timer not being unregistered properly
This is cherry-pick of 70ba53caf4 from symless/synergy-core
2019-08-22 18:11:03 +03:00
Adrian Lucrèce Céleste 4ec30b6ade
Tidy up and fix lint errors in build scripts (#405)
Tidy up and fix lint errors in build scripts
2019-08-20 13:36:54 -04:00
Dom Rodriguez 452820eef7
Interim fix for failed macOS builds
Not ideal, but it might just work. Take two!

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2019-08-20 18:29:17 +01:00
Dom Rodriguez c685f0f231
Tidy up and fix lint errors in build scripts
I've tidied up the code in both of the build scripts used for *nix-like
systems, and the macOS/OSX specific build script helper.

This has been tested on Linux with no issues, but this PR will hopefully
indicate if the changes run without issues on macOS as well.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2019-08-20 18:08:03 +01:00
Adrian Lucrèce Céleste cf3b86341a
Merge pull request #404 from shymega/fix/cmake-qt
Fix: CMake now checks for required Qt5 libraries
2019-08-18 17:35:57 -04:00
Dom Rodriguez 6c88843771
Fix: CMake now checks for required Qt5 libraries
This won't fix #402 completely, but it *will* help mitigate similar
issues with Qt5 libraries during compilation in the future.
2019-08-18 22:29:19 +01:00
Adrian Lucrèce Céleste dea143bfd7
Merge pull request #403 from shymega/fix/snap-flags
Snap: Change CMake builds to be of Release type
2019-08-18 17:26:55 -04:00
Dom Rodriguez dcc45dd80e
Snap: Change CMake builds to be of Release type 2019-08-18 22:24:32 +01:00
Adrian Lucrèce Céleste 7bcb74adc1
[Build[ update pre-build script to call VS2019 (#401)
[Build[ update pre-build script to call VS2019
2019-08-17 17:03:24 -04:00
Adrian Lucrèce Céleste e9f6092172
[Build[ update pre-build script to call VS2019 2019-08-17 16:52:24 -04:00
Povilas Kanapickas b0e415de03 Fix race condition in IArchString
Even though the calls to C functions are protected with a mutex, the
initialization and destruction of the mutex itself had race conditions.
2019-08-17 16:40:25 +03:00
Povilas Kanapickas 83d0639230 Use std::mutex instead of ArchMutex in IpcLogOutputter 2019-08-17 16:40:24 +03:00
Povilas Kanapickas 93c04bb2fa Use std::mutex instead of ArchMutex in IpcClientProxy 2019-08-17 16:40:23 +03:00
Povilas Kanapickas 36f3235f51 Use std::mutex instead of ArchMutex in IpcServer 2019-08-17 16:40:22 +03:00
Povilas Kanapickas d9d39040ae Use std::mutex instead of ArchMutex in Log 2019-08-17 16:40:21 +03:00
Povilas Kanapickas 9df4741748 Use std::mutex instead of ArchMutex in EventQueue 2019-08-17 16:40:20 +03:00
Povilas Kanapickas f71c68506e Use std::mutex instead of ArchMutex in ArchMultithreadPosix 2019-08-17 16:40:19 +03:00
Povilas Kanapickas a841b2858f Make ownership of SocketMultiplexerJob explicit 2019-08-17 16:17:50 +03:00
Povilas Kanapickas 8dd6bc2c55 Make ownership of SocketMultiplexer explicit 2019-08-17 16:17:49 +03:00
Adrian Lucrèce Céleste 58d8f020dc
[Version] bump to 2.3.1 for new release 2019-08-09 16:17:30 -04:00
Adrian Lucrèce Céleste 910f1f3ac1
Delete .travis.yml As We Switch To Azure Pipelines (#376)
Delete .travis.yml As We Switch To Azure Pipelines
2019-08-09 09:34:51 -04:00
walker0643 f7b7c55b53
Drop Travis CI 2019-08-09 09:31:31 -04:00
Evan Maddock 0cd2e6bb6c
Use Windows helper function to check for Windows version
Signed-off-by: Evan Maddock <maddock.evan@vivaldi.net>
2019-08-06 17:02:37 -04:00
Evan Maddock 00c18b4c92
Used the wrong key button by accident
Signed-off-by: Evan Maddock <maddock.evan@vivaldi.net>
2019-08-06 15:23:22 -04:00
Evan Maddock 9f15b1bcf2
Reimplement patch for horizontal scrolling and extra mouse buttons
Signed-off-by: Evan Maddock <maddock.evan@vivaldi.net>
2019-08-05 21:59:43 -04:00
Adrian Lucrèce Céleste c6ff6a6de6
Merge pull request #374 from TafThorne/patch-1
Reference Only Microsoft Azue Pipelines In Readme.md
2019-08-05 12:07:06 -04:00
Adrian Lucrèce Céleste 0ddd38ece1
Merge pull request #373 from shymega/feature/compile_commands_cmake
Feature: CMake now generates compile_commands.json
2019-08-04 18:02:21 -04:00
Thomas Thorne 3e3e183e75
Delete .travis.yml As We Switch To Azure Pipelines
Azure Pipelines have been made to work well enough for this project.  All other CI systems are to be disabled as mentioned dunder #308 

Delete the .travis.yml file now that it is not longer needed.  It can be recovered from git history if we ever wish to resurrect it.  

A separate action will need to be taken by someone with administrator access to the present https://travis-ci.org/debauchee/barrier project to unlink from the system there.
2019-07-26 10:52:01 +01:00
Thomas Thorne 6dc59d14a3
Reference Only Microsoft Azue Pipelines In Readme.md
We plan to remove all the CI pipeline apart from Microsoft Azue Pipelines.  This was documented under #308 after the Azure Pipeline system was successfully integrated under #303 and shown to provide all the build targetes we needed.

As there are presently have 4 seperate main build targes.  As well as giving the overall master branch status in the Readme (which forms part of the main page on github.com) also show the seperate build status.  This makes it clear if a single part fails and gives an obvious indicator that this project works for Linux, Mac and Windows.
2019-07-26 10:24:37 +01:00
Dom Rodriguez f399c8c642
Feature: CMake now generates compile_commands.json
This commit adds suppotr for generating a 'compile commands' JSON
file. This provides fairly sufficient autocomplete support for most text
editors, such as (Neo)vim and VS Code. It specifies include paths, and
the compiler arguments used to compile each source file.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2019-07-25 13:46:00 +01:00
Adrian Lucrèce Céleste ea0717b5f5
Merge pull request #368 from maxiberta/snap-fix-version-script
Fix snap version-control script for local LXD builds
2019-07-23 19:00:26 -04:00
Maximiliano Bertacchini 4e83ea7f9a Fix snap version-control script for local lxd builds. 2019-07-23 18:44:12 -03:00
Maximiliano Bertacchini f23a2ecec3 Use appstream metadata from flathub. 2019-07-10 15:38:01 -04:00
Maximiliano Bertacchini 30bc1948c6 Set snap icon and license. 2019-07-10 15:38:01 -04:00
Maximiliano Bertacchini bad0373bbb Add desktop entry with an app icon. 2019-07-10 15:38:01 -04:00
Maximiliano Bertacchini 7a2c3f7741 Update build-packages and stage-packages. 2019-07-10 15:38:01 -04:00
Maximiliano Bertacchini e2f59c7475 Drop custom qt5, use distro provided one. 2019-07-10 15:38:01 -04:00
Maximiliano Bertacchini 49210e1ea4 Add commands: `barrier`, `barrierc`, `barriers`. 2019-07-10 15:38:01 -04:00
Maximiliano Bertacchini 1c5a95f810 Fix interface plugs. 2019-07-10 15:38:01 -04:00
Maximiliano Bertacchini 1c398dcd66 Use version from git tag. 2019-07-10 15:38:01 -04:00
Patrizio Tufarolo 40ee389296 Fixed quote key on US International keyboard
Fixes single quote key on US international keyboard, backported from symless/synergy-core#6448
2019-07-10 09:28:22 -04:00
Nelson Chen af444a6932 Ensure Inno Setup 5 is installed in Azure Pipelines 2019-07-09 08:25:20 -04:00
Adrian Lucrèce Céleste 8e8b38b493
[Cmake] bump version to 2.3.0 2019-06-27 21:33:34 -04:00
Adrian Lucrèce Céleste 8e1a5921f6
[Release] Bump up to a new release version 2019-06-27 21:18:24 -04:00
Adrian Lucrèce Céleste 1e118ee8e8
[README] Add FaQ to the bottom 2019-06-26 18:07:19 -04:00
Chun Wang 0f5cdecf51 Fix #232 MACOS serious config file errors - hotkeys totally broken 2019-06-14 12:22:56 -07:00
Adrian Lucrèce Céleste 6c19a87f63
Add Q/A about 32-bit windows
Clarify that 32-bit editions of windows are not supported.
2019-06-14 09:34:18 -04:00
Adrian Lucrèce Céleste b3374a07ed
Add a quick Q/A about what OSes are supported 2019-06-14 09:32:08 -04:00
Adrian Lucrèce Céleste b09a3985d0
fix #163 2019-05-30 09:30:38 -04:00
Nelson Chen 40f94c6477 Upgrade QLI Installer and use Cal's Qt Mirror
This should provide more reliable Windows builds in CI.
2019-05-26 13:22:10 -04:00
Nelson Chen 0be33c3032 Publish Mac Artifacts 2019-05-26 13:20:00 -04:00
Nelson Chen 500a82824f Build Release version of Barrier on Mac 2019-05-26 13:20:00 -04:00
Nelson Chen cd8176e69f Install Pinned Qt and OpenSSL on Mac 2019-05-26 13:20:00 -04:00
Nelson Chen ae8ef7f4f2 Prefix Windows artifact names with 'Windows' on Azure Pipelines (#319) 2019-05-26 13:18:55 -04:00
Nelson Chen 6074f9b648 Update Apt on Linux before installing dependencies on Azure Pipelines (#321) 2019-05-26 13:16:41 -04:00
pack a3804c4915 typo fix (#311) 2019-05-17 22:54:42 -04:00
Adrian Lucrèce Céleste e4392b51b4
📝 add release link and contact info (#310)
📝 add release link and contact info
2019-05-17 19:30:02 -04:00
Adrian Lucrèce Céleste d362f7ad52
📝 add release link and contact info 2019-05-17 19:09:50 -04:00
Adrian Lucrèce Céleste 9b5e2c2da3
Azure pipelines (#303)
Azure pipelines
2019-05-16 10:36:42 -04:00
Nelson Chen e518694026 Initial Azure Pipelines 2019-05-15 20:18:19 -07:00
Adrian Lucrèce Céleste a82b845e07
Rename the "Apply" button to "Reload" (#292)
Rename the "Apply" button to "Reload"
2019-05-14 16:07:44 -04:00
Adrian Lucrèce Céleste ab40f52f4b
Add dpiAwareness PerMonitor (#306)
Add dpiAwareness PerMonitor
2019-05-14 09:57:11 -04:00
Matthijs Wensveen 84fcbea34b Add dpiAwareness: PerMonitor to manifest to better handle multiple monitors with different DPI settings. 2019-05-14 11:36:21 +02:00
Adrian Lucrèce Céleste 2f86911c87
Merge pull request #287 from noisyshape/windows-installer-fix
Windows installer fix
2019-04-21 12:24:55 -04:00
noisyshape 18ac0fe4b5 Replace Wix with Inno Setup
The Wix configuration is left over from Synergy.
2019-04-18 21:04:00 -04:00
Mike Salvatore c54424794f Rename the "Apply" button to "Reload"
The "Apply" button in the main window calls stopBarrier() immediately
followed by startBarrier(). The startBarrier() function reloads the
configuration. The fact that the "Apply" button applies configuration
changes is incidental; the "Start" button also applies new settings.

"Reload" more accurately describes the function that the button
performs.

Issue #284
2019-04-17 20:37:28 -04:00
Adrian Lucrèce Céleste 929a8e133d
Merge pull request #289 from mssalvatore/issue_278
Fix #278 "Enable Clipboard Sharing" always reset after restart
2019-04-17 12:24:22 -04:00
Mike Salvatore 854a6b2a86 Fix #278 "Enable Clipboard Sharing" always reset after restart
Unlike other settings, the "Enable Clipboard Sharing" setting of the
ServerConfigDialog does not persist when the barrier application (GUI)
is stopped completely and restarted. Add the necessary code to the
saveSettings() and loadSettings() functions.
2019-04-13 06:40:45 -04:00
Adrian Lucrèce Céleste d85a47ad80
Merge pull request #283 from noisyshape/vs2019-build
Update Windows build script for VS2019
2019-04-12 11:39:24 -04:00
noisyshape 35e6693d6d Fix XML 2019-04-12 10:49:49 -04:00
noisyshape cdf37376f5 Remove hardcoded paths 2019-04-12 10:49:49 -04:00
noisyshape 6a70ef9efb Create version number for wix 2019-04-12 10:49:49 -04:00
noisyshape 4afa31ac54
Correct path and instructions 2019-04-12 10:09:40 -04:00
Adrian Lucrèce Céleste acbe6d371f
Merge pull request #271 from wendall911/rpm-spec
Working spec file for Fedora
2019-04-12 08:55:37 -04:00
Adrian Lucrèce Céleste 5d031588b2
Merge pull request #270 from payomagic/master
Barrier Snappy
2019-04-12 08:54:44 -04:00
noisyshape 0af43a2488
Normalize cmake generator strings 2019-04-11 11:42:59 -04:00
noisyshape 3e6095fc34
Add support for multiple VS versions 2019-04-10 18:36:42 -04:00
noisyshape 47aac5081f
Update Windows build script for VS2019 2019-04-10 14:08:09 -04:00
Adrian Lucrèce Céleste acca0d7f6f
Merge pull request #252 from vorph1/screen-change-script
Fire screen switch event on client disconnect
2019-03-22 08:40:30 -04:00
Wendall Cada 75db3a64ca Working spec file for Fedora 2019-03-21 10:23:11 -07:00
PayouZon MagIT 15ddd868d4
Barrier Snappy
Snappy ready & tested on Ubuntu 18.04
2019-03-17 07:33:19 +01:00
PayouZon MagIT 5621846854
Update snapcraft.yaml 2019-03-16 11:37:06 +01:00
PayouZon MagIT a90b1bdd34
Update snapcraft.yaml 2019-03-16 02:10:48 +01:00
Povilas Kanapickas 71f2ca7c35 Fix memory leak during socket shutdown 2019-03-13 10:14:29 +03:00
Szymon Szeląg b8ca2d0381 Fire screen switch event on client disconnect 2019-02-10 17:41:17 +01:00
Adrian Lucrèce Céleste fac5610b44
Merge pull request #249 from vorph1/screen-change-script
Screen change script argument
2019-02-10 11:26:28 -05:00
Szymon Szeląg bf1fd35237 Start script via execl 2019-02-09 19:02:27 +01:00
Szymon Szeląg 783fbbd84d Use std::system 2019-02-05 23:08:39 +01:00
Szymon Szeląg 24b3ee547c Screen change script argument 2019-02-05 19:44:14 +01:00
Adrian Lucrèce Céleste 41f5ef2e09
Merge pull request #241 from jwestfall69/osx-debug
OSX: let build_installer.sh create a working Barrier.app on debug builds
2019-01-25 04:38:31 -05:00
jwestfall 726f5e2b53 OSX: let build_installer.sh create a working Barrier.app on debug builds
build_installer.sh on OSX is responsible for populating Barrier.app to
make it viable to run and creating a dmg for release.  However its only
works if you run it against a release build.  This patch makes so you can
run it on a debug build and it will populate Barrier.app but doesn't
create the dmg.
2019-01-24 19:45:40 -08:00
Adrian Lucrèce Céleste a92e9d90f4
Merge pull request #237 from TafThorne/run-without-system-tray-support
Run Without System Tray Support
2019-01-24 12:44:49 -05:00
Thomas A. F. Thorne 79c08baf43
Do Not Warn About Missing System Tray
The system tray will be a nice to have.  Everything should continue to
operate in a satisfactory manner without it.  Log the warning but do
not interup the user with the message.
2019-01-22 15:52:44 +00:00
Thomas A. F. Thorne 0a56cdbca0
Reduce Sysmtem Tray Retry Attempts
It is not essential that the system tray exists in order that the
application contuinue to function.  Reduce the number of retry
attempts which will reduce the time the application appears stalled
at startup.

This is part of the work on making the app work without the need of
system tray support as described uner #155.
2019-01-22 10:48:22 +00:00
Adrian Lucrèce Céleste 4dedd88ab2
Merge pull request #221 from girtsf/update-osx-environment
add checks to osx_environment.sh
2019-01-05 15:00:58 -05:00
Girts Folkmanis b6861a7d3c add checks to osx_environment.sh
Check if Xcode and required packages are installed, otherwise fail
early.
2019-01-05 11:19:28 -08:00
Adrian Lucrèce Céleste c806a5137a
Merge pull request #218 from jwestfall69/osx-macports
Fix OSX builds for macports
2019-01-02 20:37:43 -05:00
Jim Westfall cb1d116cce
Fix OSX builds for macports
macports command is 'port' not 'ports'
2019-01-02 16:41:43 -08:00
Adrian Lucrèce Céleste c38c6bcaa2
Merge pull request #214 from ignac/macos_build_issues
Macos build issues
2018-12-30 14:51:09 -05:00
Adrian Lucrèce Céleste 4afe5ddf87
Merge pull request #210 from ignac/master
Fix #204 modifier keys not working in remote desktop on MacOS
2018-12-30 14:50:17 -05:00
Adrian Lucrèce Céleste 943b9a8a0a
Merge pull request #211 from jwestfall69/socket-fix
Properly deal with a socket that is readable and writable at the same time
2018-12-30 14:49:26 -05:00
Miroslav Lences 730c065ee7 Fix macos build issues 2018-12-29 03:05:20 +01:00
jwestfall 94f8336af5 Properly deal with a socket that is readable and writable at the same time
Its possible poll() will return that a socket is both readable and
writable.  When this happens TCPSocket::serviceConnected() is
overwriting the result from doWrite() with the result from doRead()

This can cause a situation where doWrite() tried to notify that we
should stop polling if the socket is writable, but the doRead() result
causes that to be ignored.  This results in a tight loop and 100% cpu
usage in SocketMultiplexer::serviceThread() as the poll() call
instantly returns that the socket is writable, but no one cares that
it is.  The issue eventually corrects itself with enough mouse
movement/clicks.
2018-12-28 14:03:42 -08:00
Moron 03f9009d10 Fix #204 modifier keys not working in remote desktop on MacOS 2018-12-28 17:26:51 +01:00
Robert Sandell 3d835ea4aa Spelling correction (#209) 2018-12-27 11:55:34 -05:00
Dayne Broderson 1b99390c96 fixing style to be consistent per @p12tic 2018-12-26 14:57:19 -05:00
Dayne Broderson d4a2a055cc fix spelling of matches 2018-12-26 14:57:19 -05:00
Dayne Broderson 5f71b47b5a add debug notes to help identify where trusted fingerprints file is 2018-12-26 14:57:19 -05:00
Chris Simons ea3e20ade1 Added preserveFocus fix (#178)
Adds the [preserveFocus configuration](https://github.com/symless/synergy-core/wiki/Text-Config#Focus_Preservation) item to the GUI configuration screen. 

This is useful if you want to control a system that you are not the only user of. For example, I use barrier to control my HTPC computer sometimes, but I don't want Kodi to lose focus when my cursor leaves the screen since it will cause other inputs (i.e. CEC Remote) to stop working.
2018-12-16 18:05:20 -05:00
Monika Kairaityte 14a7ca0848 Fix tests wrapper 2018-11-21 17:39:33 -05:00
Monika Kairaityte 51118014b1 x11: Wrap platform functions in XWindowsEventQueueBuffer class 2018-11-12 23:09:27 -05:00
Monika Kairaityte 2c32270d49 x11: Wrap platform functions in XWindowsKeyState class 2018-11-12 23:09:27 -05:00
Monika Kairaityte 624a718f2d x11: Wrap platform functions in XWindowsClipboard class 2018-11-12 23:09:27 -05:00
Monika Kairaityte ce3e8243a9 x11: Wrap platform functions in XWindowsScreenSaver class 2018-11-12 23:09:27 -05:00
Monika Kairaityte be45440e84 x11: Wrap platform functions in an interface that can be mocked later 2018-11-12 23:09:27 -05:00
Povilas Kanapickas 65172ebd60 OSX: Explain why the app needs to go into /Applications (#158) 2018-10-19 13:17:17 -04:00
Povilas Kanapickas b8fa610f8f Build full installer via clean_build.sh (#157)
* OSX: Fix lack of newlines in build messages

* OSX: Build full installer as part of the installer build via cmake
2018-10-19 13:17:04 -04:00
Christopher N. Hesse ab887a4e90 gui: Fix auto hide behavior (#140)
* make waitForTray() report a proper status - the return value was not
   used until now anyway (it would always return true)
 * depend on the system tray availability for auto hide

On my system (Fedora 29 with Pantheon Desktop), on a clean install the GUI
would auto hide itself on startup, but due to no system tray being
available I could never make the GUI appear again.

This change disallows auto hide if the system tray is not available.
Users who don't want the GUI can just start barriers/barrierc instead of
the main barrier executable, so this should not break existing workflows.
2018-10-13 01:52:45 -04:00
Adrian Lucrèce Céleste a58cdf625e
add pre-build script for building barrier on windows from SSH (#152)
I build barrier on windows from SSH, as such, I need a way to invoke the "Developer Command Prompt for VS 2017" without a GUI. This simple one-line batch script gets the job done. I thought it might be handy to upstream it.

process I use to build on windows:

```shell
$ ssh owner@10.0.0.209
owner@DESKTOP-C2IV8E5 C:\Users\Owner> cd Documents\GitHub\barrier\
owner@DESKTOP-C2IV8E5 C:\Users\Owner\Documents\GitHub\barrier> pre-build.bat
owner@DESKTOP-C2IV8E5 C:\Users\Owner\Documents\GitHub\barrier> clean_build.bat
```
2018-10-13 01:50:43 -04:00
Epakai 0eeb4ce240 Update openssl key size in barrier.conf (#150)
Done in order to match the size specified in src/gui/src/SslCertificate.cpp

Also see Debian bug #907528 http://bugs.debian.org/907528

Related to Barrier Issue #126
2018-10-12 16:31:07 -04:00
walker0643 53ebc47ace
Merge pull request #106 from coypoop/master
Small patches for netbsd
2018-09-08 19:09:56 -04:00
walker0643 f203a7f49e
Merge pull request #121 from cuviper/barrier-fromUTF8
Fix data indexes in Unicode::fromUTF8
2018-09-08 19:05:13 -04:00
walker0643 e65ea3c545
Update README.md 2018-09-08 18:27:00 -04:00
walker0643 3794767459 add firewall rule for default port on installation (windows) 2018-09-08 16:49:08 -04:00
walker0643 b2aac6719f rename field Interface to Address in GUI settings dialog 2018-09-08 15:20:02 -04:00
walker0643 075d4f4758 enable high-dps awareness for barriers/barrierc. fixes screen geometry calculations for screens with >100% scaling 2018-09-08 14:36:50 -04:00
walker0643 c63dd6f4f1 Merge branch 'master' of github.com:debauchee/barrier 2018-09-07 18:15:17 -04:00
walker0643 9e2fbe269d bump ssl cert key size up to 2048 from 1024. fixes #126 2018-09-07 18:14:03 -04:00
Josh Stone 7a0bc3abb7 Fix data indexes in Unicode::fromUTF8 2018-08-29 14:40:39 -07:00
walker0643 5916d40053
Merge pull request #111 from pbogut/fix-server-help-message
Fix config file name in server help message
2018-08-25 21:04:20 -04:00
Pawel Bogut af8bbf2674 Fix config file name in server help message 2018-08-09 07:54:30 +02:00
walker0643 a381347233 bump qt/vs versions on windows 2018-08-05 13:08:42 -04:00
walker0643 73c13ab023 bump version to 2.2 2018-08-05 13:08:30 -04:00
coypu 443e656be2 Use ${CMAKE_DL_LIBS} rather than listing OSes.
CMake makes our lives easier. Needed for NetBSD, which also
doesn't have libdl.so.
2018-08-02 15:46:01 +03:00
coypu 87820d9387 have all other OSes handled in the else case.
No reason to limit to just freebsd and linux, we handle all existing
supported OSes in the previous cases.
Needed for NetBSD support.
2018-08-02 15:46:01 +03:00
coypu c7c14f02dd Also add curl include directories.
While here, use the variables from FindCURL.cmake
2018-08-02 15:46:01 +03:00
walker0643 5498836b6f fix formatting in last merge 2018-07-03 16:55:57 -04:00
Adrian Lucrèce Céleste cc69299ea3
Merge pkgconfig branch into master (#86)
* use pkg-config for finding avahi include dir

* [Travis] bring up to date
2018-07-02 23:21:08 -04:00
Adrian Lucrèce Céleste ccfa11ca7b
[Travis] use container builds for linux (#85)
Things should build faster
2018-07-02 22:40:54 -04:00
walker0643 b28442ee1b
Merge pull request #82 from sidneys/fix-macos-build
Use standard methods for detecting XCode installation and macOS SDK (patch by sidneys)
2018-07-02 20:43:30 -04:00
walker0643 4806441cb2
Merge pull request #84 from p12tic/osx-ci
More complete OSX config for Travis CI
2018-07-02 20:42:13 -04:00
Povilas Kanapickas 55c74e9075 travis: Add homebrew-based OSX script 2018-07-02 22:34:21 +03:00
Povilas Kanapickas 4c0690dd96 travis: Add macports-based OSX script 2018-07-02 22:33:57 +03:00
Povilas Kanapickas af789958f0 travis: Rewrite the CI config to use platform matrix 2018-07-02 22:33:42 +03:00
Povilas Kanapickas 5467b90982 OSX: Prefer Macports over Homebrew if available 2018-07-02 22:33:42 +03:00
Povilas Kanapickas f928c81afc OSX: Add support for building on macports 2018-07-02 22:33:21 +03:00
sidneys 39ccc4cbe6 fix(macos-build): use standard methods for detecting default XCode installation and default macOS platform SDK 2018-07-02 11:14:42 +02:00
walker0643 2ddc81d927 rephrase language in README.md 2018-07-01 14:50:49 -04:00
walker0643 dc5dc25de7 screen settings dialog handles internationalized default name better
(ref #71)
2018-06-30 17:33:49 -04:00
walker0643 53ee9c7803
Merge pull request #64 from p12tic/osx-server-jumpy-scrolling
Improve precision of grabbed scroll events on OSX server
2018-06-30 16:40:10 -04:00
walker0643 1f3a91e74e fix email in debian changelog 2018-06-30 16:32:05 -04:00
walker0643 99188fe24b
Merge pull request #69 from p12tic/debian-add-fake-changelog
Add fake changelog so that debian package may be built (p
2018-06-30 16:30:32 -04:00
walker0643 a956cad0da add patch from Gentoo packager to fix cmake issue (reported on Arch, too). ref #49 2018-06-30 13:44:34 -04:00
walker0643 e88bc97e63 non-GUI build should not require bonjour headers 2018-06-30 13:26:18 -04:00
walker0643 f857354535
Merge pull request #68 from p12tic/linux-client-accumulate-small-scrolls
Accumulate scrolls less than supported scroll on XWindows (patch by p12tic)
2018-06-30 12:52:09 -04:00
Povilas Kanapickas b570e57591 Add fake changelog so that debian package may be built 2018-06-21 01:13:41 +03:00
Povilas Kanapickas 76c39aaf4e Accumulate scrolls less than supported scroll on XWindows
This fixes barrier case #67 and synergy case #5670.
2018-06-21 00:50:08 +03:00
Povilas Kanapickas a645e9a296 Improve precision of grabbed scroll events on OSX server
This is barrier issue #63, synergy issue #5672.
2018-06-21 00:13:40 +03:00
walker0643 773a0081e3 remove (wrong) version line from .desktop file 2018-05-15 22:48:18 -04:00
walker0643 8b69f9fe03 better handling of non-git builds 2018-05-14 12:55:03 -04:00
walker0643 0b2dfd80e2 move protocol version to new line in --version output (fix display issue in created manpages) 2018-05-14 12:23:24 -04:00
walker0643 c7569f8af7 update manpages 2018-05-12 18:35:18 -04:00
walker0643 b8ad9b8aba Set theme jekyll-theme-slate 2018-05-12 18:24:22 -04:00
walker0643 9ab77545ee fix ipv6 handling between GUI and barriers/barrierc; zero-fill sockaddr_in(6) structs prior to initializing; update --help output 2018-05-12 17:42:55 -04:00
walker0643 f4301a7618 fix usage of m_pname and rename to m_exename 2018-05-12 17:32:26 -04:00
walker0643 f299558cdf remove stale definitions 2018-05-12 17:20:35 -04:00
walker0643 7fd6711829 remove stale references to syntool/synwinhk 2018-05-10 11:42:08 -04:00
walker0643 b43581c2f5 remove explicit paths from .desktop file 2018-05-07 13:21:25 -04:00
walker0643 bd4c214c39 bump version to 2.1. remove dependence on git for tarball builds. 2018-05-07 13:20:40 -04:00
walker0643 642eb33446 make linux/bsd data directory conform to freedesktop standards. fixes #31 2018-05-07 12:57:06 -04:00
walker0643 0b5ca57b9c
Merge pull request #26 from debauchee/nosyntool
Drop syntool. In the process some platform-dependent locations have changed. Some users may need to recreate config files or copy the from the old location(s).
2018-04-14 18:20:19 -04:00
walker0643 a7fb1b56f6 Merge branch 'master' into nosyntool 2018-04-01 21:14:32 -04:00
walker0643 5e19820425 remove dangling handler..fixes race condition when a clipboard event is queued but not dispatched before disconnect 2018-04-01 21:13:56 -04:00
walker0643 9e7792e2ae add comment re C++17 to MSWindowsUtil.cpp 2018-04-01 14:57:22 -04:00
walker0643 42a8f69050 better comments in PathUtilities.cpp 2018-04-01 14:47:34 -04:00
walker0643 1734e6d7f6 Merge branch 'master' into nosyntool 2018-04-01 14:04:53 -04:00
walker0643 6c4199b11a fix mainwindow icon 2018-04-01 14:00:52 -04:00
walker0643 767188799e add desktop name to DEBUG output. when is desktop ever NOT "Default" ? 2018-04-01 13:59:14 -04:00
walker0643 e6d0f40a36 add legal header to new files 2018-04-01 12:43:55 -04:00
walker0643 129e61a33a server should look for config in the profile() dir rather than the personal() dir. removed personal() since it is no longer used. 2018-03-31 22:48:59 -04:00
walker0643 4c04f39685 reimplement path operations basename() and concat() in Common. these were the last bits remaining in ArchFile* so it was removed 2018-03-31 22:41:00 -04:00
walker0643 131a19d478 reimplement ArchFile*::getSystemDirectory() as DataDirectories::systemconfig(). windows will now use ProgramData by default rather than C:\Windows 2018-03-30 14:39:12 -04:00
walker0643 6c5acdd552 remove DataDirectory wrappers in ArchFile* 2018-03-30 14:01:18 -04:00
walker0643 d81054ab6e remove some stale code and put windows service logfile in a better spot 2018-03-29 21:41:30 -04:00
walker0643 1be86a9248 remove syntool, CoreInterface, and WebClient 2018-03-29 17:14:57 -04:00
walker0643 ea025f5958 fix --profile-dir argument 2018-03-29 17:13:45 -04:00
walker0643 6e5b340bcc replace CoreInterface syntool calls with DataDirectory calls 2018-03-29 16:38:50 -04:00
walker0643 451bd72b30 MSWindowsWatchdog checks active desktop without external call to syntool 2018-03-29 16:32:51 -04:00
walker0643 c16fd089f6 old personal and profile directory functions now wrap the new implementations 2018-03-29 16:12:45 -04:00
walker0643 96627f4f07 reimplement finding personal & profile directories on unix (not yet used) 2018-03-29 15:54:41 -04:00
walker0643 c5e70af09a DataDirectories header should be shared between platform-specific implementations 2018-03-29 15:50:23 -04:00
walker0643 72cc7e3d89 link gui with common; reimplement finding personal and profile directories on windows (not yet used) 2018-03-29 14:01:07 -04:00
walker0643 fe818a4955 add console for ctrl+c to daemon app when debugging in foreground 2018-03-29 12:02:35 -04:00
walker0643 ecfa7d7d1c fix windows build 2018-03-24 15:47:51 -04:00
walker0643 9a2d61cbb5
Merge pull request #19 from debauchee/ipv6
Add ipv6 support
2018-03-24 15:09:20 -04:00
walker0643 626aa9a3e8 add cpack settings for creating source packages 2018-03-19 13:50:08 -04:00
walker0643 12ed71250a use cpack to provide package build target 2018-03-19 13:16:06 -04:00
walker0643 d75bdb8ec0 clean up --help output for barriers/barrierc at kloetzl's request. ref commit 63a7936 2018-03-17 16:55:53 -04:00
walker0643 63a7936e9f update manpages and --help output. fixes #23 2018-03-16 21:27:03 -04:00
walker0643 3389a980ea remove bogus check for logonui.exe. it was causing false-positives for the need to elevate 2018-03-13 18:04:29 -04:00
walker0643 a600801319 support options to msbuild on windows 2018-03-13 17:06:16 -04:00
walker0643 bac2999d3e bump version to 2.0.0 2018-03-13 16:55:07 -04:00
walker0643 921a40c684 silence avahi's bonjour warning 2018-03-13 13:03:19 -04:00
walker0643 ea1c563647 make LogWindow wider 2018-03-11 13:20:51 -04:00
walker0643 51abdc281d make DaemonApp a win32-only target 2018-03-11 13:14:45 -04:00
walker0643 b9a59c014f don't build barrierd for non-windows platforms; removed some synergy-related legacy checks 2018-03-11 12:48:59 -04:00
walker0643 ed05dc2b2e set file extension in Save dialog for configuration files 2018-03-11 12:29:48 -04:00
walker0643 24987e0694 merge modified patch from synergy PR https://github.com/symless/synergy-core/pull/6178 2018-03-06 13:55:27 -05:00
walker0643 b4604b0921 fix QBarrier references 2018-03-04 16:58:17 -05:00
walker0643 3edbc00397 fix X11 crash if DISPLAY is not valid 2018-03-04 16:21:41 -05:00
walker0643 e396f8d55e sync mainwindow icon to current application status 2018-03-03 14:34:34 -05:00
walker0643 5362dbc297 replace source with . in sh scripts for compatibility 2018-03-03 12:57:49 -05:00
walker0643 5b31036cdc fix bad logic in XWindowsScreen.cpp 2018-03-03 12:57:13 -05:00
walker0643 625253a7e8 fix FreeBSD build 2018-03-02 18:36:31 -05:00
walker0643 c605cbdbcc fix macos installer script 2018-03-01 13:27:58 -05:00
walker0643 116a133902 fix macos installer script 2018-03-01 13:22:47 -05:00
walker0643 e6a3a124ee improve macos build 2018-03-01 13:05:53 -05:00
walker0643 786d513379 fix build script 2018-03-01 12:22:54 -05:00
walker0643 4da5c29e5f Merge branch 'master' of github.com:debauchee/barrier 2018-03-01 10:57:49 -05:00
walker0643 db1e05ff08 integrate inno installer into cmake 2018-03-01 10:57:13 -05:00
walker0643 315f4c05ca re-add Hide to menu because not all WMs will add a minimize button to the title bar; add WM hint so that tiling WMs might float it instead 2018-02-25 21:19:04 -05:00
walker0643 c351d450ae move log output into its own window; add some keyboard shortcuts for menu items 2018-02-25 20:00:32 -05:00
walker0643 b55fe3237a clean up AppConfig; eliminate unnecessary UI changes to MainWindow; MainWindow starts at smaller size 2018-02-25 16:22:10 -05:00
walker0643 2a4382bac9 Merge branch 'master' of github.com:debauchee/barrier 2018-02-25 13:38:03 -05:00
walker0643 c1827bde51 redo GUI menu a bit; remove unused items 2018-02-25 13:37:29 -05:00
walker0643 65b9d795cf
Update README.md 2018-02-25 12:35:41 -05:00
walker0643 1648c1d51a build checks unixbuild_env.sh for environmental overrides 2018-02-24 19:39:04 -05:00
walker0643 916b085474 better resource management for SecureSocket buffer. fixes #16 2018-02-24 19:37:30 -05:00
walker0643 b994c94a90 fix build for libressl. thanks to truatpasteurdotfr for the patch 2018-02-24 18:20:14 -05:00
walker0643 60d121aed3 reduce size of clipboard buffer. fixes #15 2018-02-24 17:41:28 -05:00
walker0643 15c83eca48 add libavahi to travis 2018-02-24 15:23:53 -05:00
walker0643 0f42f82439 add qt5 dev package to travis 2018-02-24 15:14:20 -05:00
walker0643 b36a91a363 fix travis.yml 2018-02-24 15:05:42 -05:00
walker0643 dc15dc6081 add libxtst-dev to travis 2018-02-24 15:01:39 -05:00
walker0643 cfe8719982 remove debug statements 2018-02-24 14:56:30 -05:00
walker0643 87ff075c15 fix clean_build.sh on travis 2018-02-24 14:39:30 -05:00
walker0643 ec1d68912d working on travis-ci 2018-02-24 14:27:47 -05:00
walker0643 cfc13f1f04 add travis support 2018-02-24 14:10:14 -05:00
walker0643 45805bbdcb fix cmake3 detection in barebones environments 2018-02-24 13:05:17 -05:00
walker0643 06d5080b42 reimplement immune keys 2018-02-23 21:31:05 -05:00
walker0643 0e5ed7a305 clean up the hook management code 2018-02-23 20:56:12 -05:00
walker0643 be0fab1775 migrate k/m hook handlers from synwinhk to platform/MSWindowsHook and delete synwinhk.dll. for ever and ever. 2018-02-23 18:06:17 -05:00
walker0643 a3ec43999f remove local memcpy from synwinhk 2018-02-23 16:30:44 -05:00
walker0643 d169555b28 remove references to immunekeys functions from outside synwinhk 2018-02-23 16:27:56 -05:00
walker0643 b1be8227d2 missed a couple things: EWheelSupport and immunekeys stuff in header 2018-02-23 16:24:01 -05:00
walker0643 30304255ea remove *very* old support code for mouse wheels 2018-02-23 15:42:09 -05:00
walker0643 a71779647d remove high-level k/m hooks and temporarily remove immune keys
implementation in synwinhk
2018-02-23 15:06:27 -05:00
walker0643 4571f4cc6e remove annoying LOG statement; add a small bit of debugging info 2018-02-23 14:02:38 -05:00
walker0643 07dad10251 moved SSL configuration on OSX from Library/Barrier to Library/Application Support/Barrier as per the App Programming Guide. fixes #5
ref: https://developer.apple.com/library/content/documentation/General/Conceptual/MOSXAppProgrammingGuide/AppRuntime/AppRuntime.html
2018-02-16 12:29:47 -05:00
walker0643 28cb82bcb0 normalize osx script names 2018-02-16 12:12:21 -05:00
walker0643 cebe7873a4 Merge branch 'master' of github.com:debauchee/barrier 2018-02-16 11:55:41 -05:00
walker0643 3b20310deb update macos bundle icon 2018-02-16 11:55:16 -05:00
walker0643 f5b5258f4a revert some of the "deprecated" fixes so that older OSX versions are still supported. my thanks to Cpuroast for additional macos testing. 2018-02-15 01:17:18 -05:00
walker0643 a8d0dfdacc recursive re-referencing of binaries, and add cocoa qt platform plugin 2018-02-14 14:41:59 -05:00
walker0643 71a20eedec automate building mac installer 2018-02-13 22:11:56 -05:00
walker0643 8073db2247 silence a couple more compiler warnings on osx 2018-02-13 17:43:39 -05:00
walker0643 6cf4f14dec fix some compiler warnings 2018-02-13 15:14:26 -05:00
walker0643 f07070f7f9 fix OSX build 2018-02-13 14:49:39 -05:00
walker0643 5bd7e6bfe8 add inno installer scripts 2018-02-10 16:46:50 -05:00
walker0643 f30fe8775c configure qt version automatically in installer script 2018-02-10 13:44:33 -05:00
walker0643 3023f9b469 remove redistributable magic (that doesn't work) from installer and
re-add qwindows.dll
2018-02-09 20:51:57 -05:00
walker0643 2ffd92accc rename scripts 2018-02-07 16:33:48 -05:00
walker0643 649b43c3cc
fix names in readme 2018-02-07 13:20:08 -05:00
walker0643 d5544dc6d1 fix installer build. at this point the process is not at all robust..it mainly just works for me. 2018-02-06 20:08:37 -05:00
walker0643 541fb2afc5 fix quotations in for platform build 2018-02-06 17:26:23 -05:00
walker0643 e93b203b87 rmdir doesn't set errorlevel but mkdir does and can be used to check for errors up to that point...to a point 2018-02-06 17:13:35 -05:00
walker0643 6cb65ebf05 fix PNG warning 2018-02-03 17:01:30 -05:00
walker0643 df129f139b add ImmuneKeysReader.h/cpp to windows builds 2018-02-03 16:47:36 -05:00
walker0643 faec8a2f84 implement "Immune Keys" which are keys that are ignored by
server-to-client key-forwarding. this feature is only implemented for
servers running on windows machines.
2018-02-03 16:32:41 -05:00
walker0643 b64512d65f update artwork 2018-02-02 19:12:14 -05:00
walker0643 1effd7bc0b Merge branch 'master' of github.com:debauchee/barrier 2018-02-01 18:42:41 -05:00
walker0643 531ced363c clean_build: try cmake3 before cmake 2018-02-01 18:42:21 -05:00
walker0643 edfc7e9bbc add description to XWindows error handler message 2018-02-01 18:21:47 -05:00
walker0643 dea4359cce Merge branch 'master' of github.com:debauchee/barrier 2018-02-01 17:13:57 -05:00
walker0643 b3298ad799 fix race condition 2018-02-01 16:37:25 -05:00
walker0643 eb025871c4 add CLOG_DEBUG for opening/closing TCPSocket objects and fix assert() crash 2018-02-01 11:18:13 -05:00
walker0643 830f6acbef fix windows build and refactor last addition to EventQueue 2018-02-01 10:10:46 -05:00
walker0643 d9530bf7aa use a relatively small hack to keep barriers/barrierc from crashing on
unixes when they are killed from the GUI with QProcess's close(). the
stdin stream is going completely unused (though the stdout stream is
not) so use stdin to send a shutdown command. this solution avoids all
the nastiness and overhead of using shared memory, mutexes, condvars,
etc. just to communicate "stop" from one process to another
2018-01-31 20:20:06 -05:00
walker0643 d8237238b4 rearrange CMakeLists.txt in gui 2018-01-31 10:04:07 -05:00
walker0643 b77eec1f17 fix some compiler warnings 2018-01-31 10:03:34 -05:00
walker0643 9240cc12df implemented minize to tray 2018-01-30 17:32:00 -05:00
walker0643 ccb02372bf fix autohide on windows and correct a typo in settings ui 2018-01-30 16:55:34 -05:00
walker0643 cda6933f10 changed SettingsDialog layout to group options more reasonably
added checkbox for minimizing to tray
don't hide "hide on startup" on windows
2018-01-30 16:41:16 -05:00
walker0643 c68d355ce5 when running barriers/barrierc inside a windows debugger, add a pause
before exiting so the output in the terminal window can be read
2018-01-30 14:23:11 -05:00
walker0643 8bdd530d7d fix running daemon in foreground for debugging 2018-01-30 14:18:14 -05:00
walker0643 5af4b13611 double-clicking tray icon should work on windows as well. also labeled the tray icon with a tooltip. 2018-01-30 11:54:49 -05:00
walker0643 0f2063b67f fix organization fields in QCoreApplication 2018-01-29 22:52:15 -05:00
walker0643 ecf4ebf50e disable check for updated version since it was causing an access
violation on close and since there is nothing to check it against
anyway. will reimplement check for updated version in the future.
2018-01-29 22:49:50 -05:00
walker0643 31a64731c1 mute the IPC debug messages on stdout 2018-01-29 18:53:46 -05:00
walker0643 dbfb04a6ec pass QS_POSTMESSAGE to GetQueueStatus() instead of QS_ALLINPUT.
QS_ALLINPUT is a meta-flag that includes QS_POINTER and QS_TOUCH, both
of which can cause GetQueueStatus() to return 0 even when there are
pending messages.

fixes #4
2018-01-29 18:12:50 -05:00
walker0643 ce8c65f8f9 move deletion of accepted client socket pointers to ClientListener
where it belongs. previously SecureListenSocket would delete the client
socket but TCPListenSocket would not. PacketStreamFilter would then
attempt to delete the socket regardless of what type it was. this would
cause an access violation when SecureListenSocket attempted to delete
the socket again.

fixes #3
2018-01-29 12:57:17 -05:00
walker0643 8fb904285b forgot to clear savedir 2018-01-29 12:49:10 -05:00
walker0643 33b81742b5 fix execute bit on a lot of files 2018-01-28 17:34:15 -05:00
walker0643 da37ccdf87 add clean_build_windows.bat to help with win64 builds 2018-01-28 17:32:11 -05:00
walker0643 5a0465eb36 change openssl path relative to binary 2018-01-28 16:56:16 -05:00
walker0643 0bb94da72d replace unknown type to fix windows build 2018-01-28 16:19:27 -05:00
walker0643 0929086428 fix SSL fingerprint text and about box copyright text 2018-01-27 20:50:30 -05:00
walker0643 99b16334b5 remove activation, serial, trial garbage. shame on you all! 2018-01-27 20:21:44 -05:00
walker0643 2169eb679b fix CosmoSynergy 2018-01-27 19:15:03 -05:00
walker0643 f12bfdfedc rebranding symless/synergy to debauchee/barrier 2018-01-27 16:48:17 -05:00
walker0643 5a1c217b54
Update ISSUE_TEMPLATE.md 2018-01-25 18:43:52 -05:00
walker0643 49b607a729
Update ISSUE_TEMPLATE.md 2018-01-25 18:43:30 -05:00
walker0643 ff0525254d
Update ISSUE_TEMPLATE.md 2018-01-25 18:42:32 -05:00
walker0643 3b19884fd4
Update README.md 2018-01-25 18:30:26 -05:00
walker0643 bbfcc5cbb3
Update README.md 2018-01-25 18:18:44 -05:00
walker0643 3d245c7255
Create README.md 2018-01-25 17:05:55 -05:00
1180 changed files with 21534 additions and 274893 deletions

9
.editorconfig Normal file
View File

@ -0,0 +1,9 @@
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4

View File

@ -1,32 +0,0 @@
### Operating Systems ###
Server: microOS Tiara
Client: Applesoft Windy OS 10
**READ ME, DELETE ME**: On Windows, hold the Windows key and press 'r', type 'winver' and hit return to get your OS version. On Mac, hit the Apple menu (top left of the screen) and check 'About this Mac'. Linux users... you know what you're using ;)
### Synergy Version ###
1.8.π
**READ ME, DELETE ME**: Go to the 'Help' (on Windows) or 'Synergy' (on macOS) menu and then 'About Synergy' to check your version. Verify that you are using the same version across all of your machines, and that your issue still occurs with the latest release available at https://symless.com/account/login
### Steps to reproduce bug ###
**READ ME, DELETE ME**: Try to be succinct. If your bug is intermittent, try and describe what you're doing when it happens most.
1. Click things.
2. Type things.
3. Bug occurs.
4. ...
5. Profit?
### Other info ###
* When did the problem start to occur? When I...
* Is there a way to work around it? No/Yes, you can...
* Does this bug prevent you from using Synergy entirely? Yes/No
Please follow the link below to send us logs from both your server and client sides if it's appropriate. https://github.com/symless/synergy/wiki/Sending-logs
Put anything else you can think of here.

80
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@ -0,0 +1,80 @@
name: Bug Report
description: File a bug report (for questions, ideas & support, use the Discussions tab, or IRC for quick answers, but make sure to stay on the channel!)
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen?
placeholder: Tell us what you see! Screenshots are also helpful - please attach to the issue (when created), rather than linking to image hosting sites.
validations:
required: true
- type: dropdown
id: version
attributes:
label: Version
description: What version of Barrier are you running?
options:
- v2.0.0-RC1
- v2.0.0-RC2
- v2.0.0
- v2.1.1
- v2.1.2
- v2.3.0
- v2.3.1
- v2.3.2-alpha
- v2.3.2
- v2.3.3
- v2.3.4
- v2.4.0
- From Git HEAD or commit (specify below)
validations:
required: true
- type: input
id: git-commit-if
attributes:
label: Git commit hash (if applicable)
description: "When building Barrier from Git, what commit hash did you checkout from?"
placeholder: b0c0b42b
validations:
required: false
- type: textarea
id: pkg-mgr-origin
attributes:
label: If applicable, where did you install Barrier from?
description: This includes Snaps, Flatpaks, and self-built executables.
validations:
required: false
- type: dropdown
id: os
attributes:
label: What OSes are you seeing the problem on? (Check all that apply)
multiple: true
options:
- Linux
- Windows
- macOS
validations:
required: true
- type: textarea
id: os-version
attributes:
label: What OS versions are you using?
description: This applies to both client(s) and the server.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: textarea
id: misc-info
attributes:
label: Any other information
description: Please enter any other information we should know, if applicable.

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: false

4
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,4 @@
## Contributor Checklist:
* [ ] I have created a file in the `doc/newsfragments` directory *IF* it is a
user-visible change (and make sure to read the `README.md` in that directory)

15
.gitignore vendored
View File

@ -1,3 +1,4 @@
build_env.*
config.h
.DS_Store
*.pyc
@ -18,4 +19,16 @@ config.h
src/gui/gui.pro.user*
src/gui/.qmake.stash
src/gui/.rnd
src/setup/win32/synergy.suo
src/setup/win32/barrier.suo
Makefile
*.cmake
**/CMakeFiles/
CMakeCache.txt
/rpm
# Visual Studio 2015/2017 cache/options directory
.vs/
# VS Code Directory
.vscode/
# Transient in-project-directory dependencies
/deps/
/out/build/x64-Debug

9
.gitmodules vendored Normal file
View File

@ -0,0 +1,9 @@
[submodule "ext/gtest"]
path = ext/gtest
url = https://github.com/google/googletest.git
[submodule "ext/gmock"]
path = ext/gmock
url = https://github.com/google/googlemock.git
[submodule "ext/gulrak-filesystem"]
path = ext/gulrak-filesystem
url = https://github.com/gulrak/filesystem

View File

@ -1,7 +1,7 @@
#
# Synergy build parameters
# Barrier build parameters
#
SYNERGY_VERSION_MAJOR = 1
SYNERGY_VERSION_MINOR = 9
SYNERGY_VERSION_PATCH = 0
SYNERGY_VERSION_STAGE = snapshot
BARRIER_VERSION_MAJOR = 2
BARRIER_VERSION_MINOR = 4
BARRIER_VERSION_PATCH = 0
BARRIER_VERSION_STAGE = release

View File

@ -1,4 +1,5 @@
# Synergy -- mouse and keyboard sharing utility
# Barrier -- mouse and keyboard sharing utility
# Copyright (C) 2018 Debauchee Open Source Group
# Copyright (C) 2012-2016 Symless Ltd.
# Copyright (C) 2009 Nick Bolton
#
@ -15,12 +16,14 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
cmake_minimum_required (VERSION 3.4)
project (synergy C CXX)
project (barrier C CXX)
option (SYNERGY_BUILD_LEGACY_GUI "Build the legacy GUI" ON)
option (SYNERGY_BUILD_LEGACY_SERVICE "Build the legacy service (synergyd)" ON)
option (SYNERGY_BUILD_LEGACY_INSTALLER "Build the legacy installer" ON)
option (BARRIER_BUILD_GUI "Build the GUI" ON)
option (BARRIER_BUILD_INSTALLER "Build the installer" ON)
option (BARRIER_BUILD_TESTS "Build the tests" ON)
option (BARRIER_USE_EXTERNAL_GTEST "Use external installation of Google Test framework" OFF)
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
set (CMAKE_CXX_STANDARD 14)
set (CMAKE_CXX_EXTENSIONS OFF)
set (CMAKE_CXX_STANDARD_REQUIRED ON)
@ -31,10 +34,8 @@ if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions (-DNDEBUG)
endif()
#
# Synergy version
#
include (cmake/Version.cmake)
include (cmake/Package.cmake)
# TODO: Find out why we need these, and remove them
if (COMMAND cmake_policy)
@ -44,17 +45,16 @@ endif()
# Add headers to source list
if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles")
set (SYNERGY_ADD_HEADERS FALSE)
set (BARRIER_ADD_HEADERS FALSE)
else()
set (SYNERGY_ADD_HEADERS TRUE)
set (BARRIER_ADD_HEADERS TRUE)
endif()
set (libs)
include_directories (BEFORE SYSTEM ./ext/gtest/include)
if (UNIX)
if (NOT APPLE)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
set (CMAKE_POSITION_INDEPENDENT_CODE TRUE)
endif()
# For config.h, detect the libraries, functions, etc.
@ -65,6 +65,7 @@ if (UNIX)
include (CheckIncludeFileCXX)
include (CheckSymbolExists)
include (CheckCSourceCompiles)
include (FindPkgConfig)
check_include_file_cxx (istream HAVE_ISTREAM)
check_include_file_cxx (ostream HAVE_OSTREAM)
@ -90,7 +91,6 @@ if (UNIX)
check_function_exists (poll HAVE_POLL)
check_function_exists (sigwait HAVE_POSIX_SIGWAIT)
check_function_exists (strftime HAVE_STRFTIME)
check_function_exists (vsnprintf HAVE_VSNPRINTF)
check_function_exists (inet_aton HAVE_INET_ATON)
# For some reason, the check_function_exists macro doesn't detect
@ -123,17 +123,17 @@ if (UNIX)
check_type_size (short SIZEOF_SHORT)
# pthread is used on both Linux and Mac
check_library_exists ("pthread" pthread_create "" HAVE_PTHREAD)
if (HAVE_PTHREAD)
list (APPEND libs pthread)
else()
message (FATAL_ERROR "Missing library: pthread")
endif()
set (CMAKE_THREAD_PREFER_PTHREAD TRUE)
set (THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package (Threads REQUIRED)
list (APPEND libs Threads::Threads)
# curl is used on both Linux and Mac
find_package (CURL)
if (CURL_FOUND)
list (APPEND libs curl)
include_directories(${CURL_INCLUDE_DIRS})
list (APPEND libs ${CURL_LIBRARIES})
else()
message (FATAL_ERROR "Missing library: curl")
endif()
@ -156,9 +156,28 @@ if (UNIX)
)
else() # not-apple
# FreeBSD uses /usr/local for anything not part of base
# Also package avahi-libdns puts dns_sd.h a bit deeper
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
set (CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};/usr/local/include;/usr/local/include/avahi-compat-libdns_sd")
set (CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L/usr/local/lib")
include_directories("/usr/local/include" "/usr/local/include/avahi-compat-libdns_sd")
link_directories("/usr/local/lib")
endif()
# add include dir for bsd (posix uses /usr/include/)
set (CMAKE_INCLUDE_PATH "${CMAKE_INCLUDE_PATH}:/usr/local/include")
if (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
set (CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};/usr/X11R6/include;/usr/local/include;/usr/local/include/avahi-compat-libdns_sd")
set (CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -L/usr/local/lib -L/usr/X11R6/lib")
include_directories("/usr/local/include" "/usr/X11R6/include" "/usr/local/include/avahi-compat-libdns_sd")
link_directories("/usr/local/lib")
link_directories("/usr/X11R6/lib")
endif()
if (BARRIER_BUILD_GUI AND ${PKG_CONFIG_FOUND})
pkg_check_modules (AVAHI_COMPAT REQUIRED avahi-compat-libdns_sd)
include_directories (BEFORE SYSTEM ${AVAHI_COMPAT_INCLUDE_DIRS})
set (CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${AVAHI_COMPAT_INCLUDE_DIRS}")
endif ()
set (XKBlib "X11/Xlib.h;X11/XKBlib.h")
set (CMAKE_EXTRA_INCLUDE_FILES "${XKBlib};X11/extensions/Xrandr.h")
@ -173,16 +192,20 @@ if (UNIX)
check_include_files ("X11/extensions/XTest.h" HAVE_X11_EXTENSIONS_XTEST_H)
check_include_files ("${XKBlib}" HAVE_X11_XKBLIB_H)
check_include_files ("X11/extensions/XInput2.h" HAVE_XI2)
check_include_files ("dns_sd.h" HAVE_DNSSD)
if (HAVE_X11_EXTENSIONS_DPMS_H)
# Assume that function prototypes declared, when include exists.
set (HAVE_DPMS_PROTOTYPES 1)
if (NOT HAVE_X11_EXTENSIONS_XTEST_H)
message (FATAL_ERROR "Missing header: X11/extensions/XTest.h")
endif()
if (NOT HAVE_X11_XKBLIB_H)
message (FATAL_ERROR "Missing header: " ${XKBlib})
endif()
if (BARRIER_BUILD_GUI AND NOT HAVE_DNSSD)
message (FATAL_ERROR "Missing header: dns_sd.h")
endif()
check_library_exists ("SM;ICE" IceConnectionNumber "" HAVE_ICE)
check_library_exists ("Xext;X11" DPMSQueryExtension "" HAVE_Xext)
check_library_exists ("Xtst;Xext;X11" XTestQueryExtension "" HAVE_Xtst)
@ -201,7 +224,7 @@ if (UNIX)
if (HAVE_Xtst)
# Xtxt depends on X11.
set (HAVE_X11)
set (HAVE_X11 1)
list (APPEND libs Xtst X11)
else()
@ -243,7 +266,6 @@ if (UNIX)
set (HAVE_CXX_EXCEPTIONS 1)
set (HAVE_CXX_MUTABLE 1)
set (HAVE_CXX_STDLIB 1)
set (HAVE_PTHREAD_SIGNAL 1)
set (SELECT_TYPE_ARG1 int)
set (SELECT_TYPE_ARG234 " (fd_set *)")
set (SELECT_TYPE_ARG5 " (struct timeval *)")
@ -269,14 +291,19 @@ elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
list (APPEND libs Wtsapi32 Userenv Wininet comsuppw Shlwapi)
add_definitions (
/DSYSAPI_WIN32=1
/DWINAPI_MSWINDOWS=1
/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING=1 # tr1 is used from gtest and gmock
/DWIN32
/D_WINDOWS
/D_CRT_SECURE_NO_WARNINGS
/DSYNERGY_VERSION=\"${SYNERGY_VERSION}\"
/DBARRIER_VERSION=\"${BARRIER_VERSION}\"
/D_XKEYCHECK_H
)
endif()
include_directories("${CMAKE_SOURCE_DIR}/ext/gulrak-filesystem/include")
#
# OpenSSL
#
@ -294,17 +321,62 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
${OPENSSL_ROOT}/lib/ssleay32.lib
)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set (OPENSSL_ROOT /usr/local/opt/openssl)
find_program(APT_PROGRAM "apt")
find_program(BREW_PROGRAM "brew")
find_program(PORT_PROGRAM "port")
if (IS_DIRECTORY /opt/procursus AND APT_PROGRAM)
# procursus/apt
set (OPENSSL_ROOT /opt/procursus)
include_directories (BEFORE SYSTEM ${OPENSSL_ROOT}/include)
set (OPENSSL_LIBS
${OPENSSL_ROOT}/lib/libssl.a
${OPENSSL_ROOT}/lib/libcrypto.a
)
elseif (IS_DIRECTORY /opt/local AND PORT_PROGRAM)
# macports
set (OPENSSL_ROOT /opt/local)
set (OPENSSL_LIBS
${OPENSSL_ROOT}/lib/libssl.a
${OPENSSL_ROOT}/lib/libcrypto.a
z
)
elseif (IS_DIRECTORY /usr/local/opt/openssl AND BREW_PROGRAM)
# brew
set (OPENSSL_ROOT /usr/local/opt/openssl)
include_directories (BEFORE SYSTEM ${OPENSSL_ROOT}/include)
set (OPENSSL_LIBS
${OPENSSL_ROOT}/lib/libssl.a
${OPENSSL_ROOT}/lib/libcrypto.a
)
elseif (IS_DIRECTORY /opt/homebrew/opt/openssl AND BREW_PROGRAM)
# brew
set (OPENSSL_ROOT /opt/homebrew/opt/openssl)
include_directories (BEFORE SYSTEM ${OPENSSL_ROOT}/include)
set (OPENSSL_LIBS
${OPENSSL_ROOT}/lib/libssl.a
${OPENSSL_ROOT}/lib/libcrypto.a
)
endif()
include_directories (BEFORE SYSTEM ${OPENSSL_ROOT}/include)
set (OPENSSL_LIBS
${OPENSSL_ROOT}/lib/libssl.a
${OPENSSL_ROOT}/lib/libcrypto.a
)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (OPENSSL_LIBS ssl crypto)
else()
message (FATAL_ERROR "Couldn't find OpenSSL")
find_library (lib_ssl ssl)
find_library (lib_crypto crypto)
if (NOT lib_ssl)
message(FATAL_ERROR "openssl library not found")
elseif (NOT lib_crypto)
message(FATAL_ERROR "crypto library not found")
endif()
set (OPENSSL_LIBS ${lib_ssl} ${lib_crypto})
endif()
#
@ -322,7 +394,7 @@ macro (configure_files srcDir destDir)
set (sourceFilePath ${srcDir}/${sourceFile})
if (IS_DIRECTORY ${sourceFilePath})
message (STATUS "Copying directory ${sourceFile}")
make_directory (${destDir/${sourceFile})
make_directory (${destDir}/${sourceFile})
else()
message (STATUS "Copying file ${sourceFile}")
configure_file (${sourceFilePath} ${destDir}/${sourceFile} COPYONLY)
@ -337,26 +409,34 @@ macro (configure_files srcDir destDir)
endforeach (templateFile)
endmacro (configure_files)
if (${SYNERGY_BUILD_LEGACY_INSTALLER})
if (${BARRIER_BUILD_INSTALLER})
#
# macOS app Bundle
#
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set (CMAKE_INSTALL_RPATH "@loader_path/../Libraries;@loader_path/../Frameworks")
set (SYNERGY_BUNDLE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dist/macos/bundle)
set (SYNERGY_BUNDLE_DIR ${CMAKE_BINARY_DIR}/bundle)
set (SYNERGY_BUNDLE_APP_DIR ${SYNERGY_BUNDLE_DIR}/Synergy.app)
set (SYNERGY_BUNDLE_BINARY_DIR ${SYNERGY_BUNDLE_APP_DIR}/Contents/MacOS)
set (BARRIER_BUNDLE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dist/macos/bundle)
set (BARRIER_BUNDLE_DIR ${CMAKE_BINARY_DIR}/bundle)
set (BARRIER_BUNDLE_APP_DIR ${BARRIER_BUNDLE_DIR}/Barrier.app)
set (BARRIER_BUNDLE_BINARY_DIR ${BARRIER_BUNDLE_APP_DIR}/Contents/MacOS)
configure_files (${SYNERGY_BUNDLE_SOURCE_DIR} ${SYNERGY_BUNDLE_DIR})
configure_files (${BARRIER_BUNDLE_SOURCE_DIR} ${BARRIER_BUNDLE_DIR})
add_custom_target(Barrier_MacOS ALL
bash build_dist.sh
DEPENDS barrier barriers barrierc
WORKING_DIRECTORY ${BARRIER_BUNDLE_DIR})
endif()
#
# Windows installer
#
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
message (STATUS "Configuring the v1 installer")
configure_files (${CMAKE_CURRENT_SOURCE_DIR}/dist/wix ${CMAKE_BINARY_DIR}/installer)
set (BARRIER_WIX_VERSION "${BARRIER_VERSION_MAJOR}.${BARRIER_VERSION_MINOR}.${BARRIER_VERSION_PATCH}")
message (STATUS "Configuring the wix installer")
configure_files (${CMAKE_CURRENT_SOURCE_DIR}/dist/wix ${CMAKE_BINARY_DIR}/installer-wix)
message (STATUS "Configuring the inno installer")
configure_files (${CMAKE_CURRENT_SOURCE_DIR}/dist/inno ${CMAKE_BINARY_DIR}/installer-inno)
endif()
#
@ -364,15 +444,18 @@ endif()
#
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
configure_files (${CMAKE_CURRENT_SOURCE_DIR}/dist/rpm ${CMAKE_BINARY_DIR}/rpm)
install(FILES res/synergy.svg DESTINATION share/icons/hicolor/scalable/apps)
if("${VERSION_MAJOR}" STREQUAL "2")
install(FILES res/synergy2.desktop DESTINATION share/applications)
install(FILES res/barrier.svg DESTINATION share/icons/hicolor/scalable/apps)
if("${VERSION_MAJOR}" STREQUAL "2")
install(FILES res/barrier2.desktop DESTINATION share/applications)
else()
install(FILES res/synergy.desktop DESTINATION share/applications)
install(FILES res/barrier.desktop DESTINATION share/applications)
endif()
endif()
else()
message (STATUS "NOT configuring the v1 installer")
message (STATUS "NOT configuring the installer")
endif()
enable_testing()
add_subdirectory (src)

62
LICENSE
View File

@ -1,8 +1,9 @@
Copyright (C) 2018 Debauchee Open Source Group
Copyright (C) 2012-2016 Symless Ltd.
Copyright (C) 2008-2014 Nick Bolton
Copyright (C) 2002-2014 Chris Schoeneman
This program is released under the GPL with the additional exemption
This program is released under the GPL with the additional exemption
that compiling, linking, and/or using OpenSSL is allowed.
GNU GENERAL PUBLIC LICENSE
@ -285,3 +286,62 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

148
README.md Normal file
View File

@ -0,0 +1,148 @@
# Barrier
Eliminate the barrier between your machines.
Find [releases for windows and macOS here](https://github.com/debauchee/barrier/releases).
Your distro probably already has barrier packaged for it, see [distro specific packages](#distro-specific-packages)
below for a list. Alternatively, we also provide a [flatpak](https://github.com/flathub/com.github.debauchee.barrier)
and a [snap](https://snapcraft.io/barrier).
### Contact info:
- `#barrier` on LiberaChat IRC network
#### CI Build Status
Master branch overall build status: [![Build Status](https://dev.azure.com/debauchee/Barrier/_apis/build/status/debauchee.barrier?branchName=master)](https://dev.azure.com/debauchee/Barrier/_build/latest?definitionId=1&branchName=master)
|Platform |Build Status|
| --:|:-- |
|Linux |[![Build Status](https://dev.azure.com/debauchee/Barrier/_apis/build/status/debauchee.barrier?branchName=master&jobName=Linux%20Build)](https://dev.azure.com/debauchee/Barrier/_build/latest?definitionId=1&branchName=master)|
|Mac |[![Build Status](https://dev.azure.com/debauchee/Barrier/_apis/build/status/debauchee.barrier?branchName=master&jobName=Mac%20Build)](https://dev.azure.com/debauchee/Barrier/_build/latest?definitionId=1&branchName=master)|
|Windows Debug |[![Build Status](https://dev.azure.com/debauchee/Barrier/_apis/build/status/debauchee.barrier?branchName=master&jobName=Windows%20Build&configuration=Windows%20Build%20Debug)](https://dev.azure.com/debauchee/Barrier/_build/latest?definitionId=1&branchName=master)|
|Windows Release|[![Build Status](https://dev.azure.com/debauchee/Barrier/_apis/build/status/debauchee.barrier?branchName=master&jobName=Windows%20Build&configuration=Windows%20Build%20Release%20with%20Release%20Installer)](https://dev.azure.com/debauchee/Barrier/_build/latest?definitionId=1&branchName=master)|
|Snap |[![Snap Status](https://build.snapcraft.io/badge/debauchee/barrier.svg)](https://build.snapcraft.io/user/debauchee/barrier)|
Our CI Builds are provided by Microsoft Azure Pipelines, Flathub, and Canonical.
### What is it?
Barrier is software that mimics the functionality of a KVM switch, which historically would allow you to use a single keyboard and mouse to control multiple computers by physically turning a dial on the box to switch the machine you're controlling at any given moment. Barrier does this in software, allowing you to tell it which machine to control by moving your mouse to the edge of the screen, or by using a keypress to switch focus to a different system.
Barrier was forked from Symless's Synergy 1.9 codebase. Synergy was a commercialized reimplementation of the original CosmoSynergy written by Chris Schoeneman.
At the moment, barrier is not compatible with synergy. Barrier needs to be installed on all machines that will share keyboard and mouse.
### What's different?
Whereas Synergy has moved beyond its goals from the 1.x era, Barrier aims to maintain that simplicity.
Barrier will let you use your keyboard and mouse from one computer to control one or more other computers.
Clipboard sharing is supported.
That's it.
### Project goals
Hassle-free reliability. We are users, too. Barrier was created so that we could solve the issues we had with synergy and then share these fixes with other users.
Compatibility. We use more than one operating system and you probably do, too. Windows, OSX, Linux, FreeBSD... Barrier should "just work". We will also have our eye on Wayland when the time comes.
Communication. Everything we do is in the open. Our issue tracker will let you see if others are having the same problem you're having and will allow you to add additional information. You will also be able to see when progress is made and how the issue gets resolved.
### Usage
Install and run barrier on each machine that will be sharing.
On the machine with the keyboard and mouse, make it the server.
Click the "Configure server" button and drag a new screen onto the grid for each client machine.
Ensure the "screen name" matches exactly (case-sensitive) for each configured screen -- the clients' barrier windows will tell you their screen names (just above the server IP).
On the client(s), put in the server machine's IP address (or use Bonjour/auto configuration when prompted) and "start" them.
You should see `Barrier is running` on both server and clients.
You should now be able to move the mouse between all the screens as if they were the same machine.
Note that if the keyboard's Scroll Lock is active then this will prevent the mouse from switching screens.
### Contact & support
Please be aware that the *only* way to draw our attention to a bug is to create a new issue in [the issue tracker](https://github.com/debauchee/barrier/issues). Write a clear, concise, detailed report and you will get a clear, concise, detailed response. Priority is always given to issues that affect a wider range of users.
For short and simple questions or to just say hello find us on the LiberaChat IRC network in the #barrier channel.
### Contributions
At this time we are looking for developers to help fix the issues found in the issue tracker.
Submit pull requests once you've polished up your patch and we'll review and possibly merge it.
Most pull requests will need to include a release note.
See docs/newsfragments/README.md for documentation of how to do that.
## Distro specific packages
While not a comprehensive list, repology provides a decent list of distro
specific packages.
[![Packaging status](https://repology.org/badge/vertical-allrepos/barrier.svg)](https://repology.org/project/barrier/versions)
## FAQ - Frequently Asked Questions
**Q: Does drag and drop work on linux?**
> A: No *(see [#855](https://github.com/debauchee/barrier/issues/855) if you'd like to change that)*
**Q: What OSes are supported?**
> A: The [most recent release](https://github.com/debauchee/barrier/releases/latest) of Barrier is known to work on:
> - Windows 7, 8, 8.1, 10, and 11
> - macOS *(previously known as OS X or Mac OS X)*
> - _The current GUI does **not** work on OS versions prior to macOS 10.12 Sierra (but see the related answer below)_
> - Linux
> - FreeBSD
> - OpenBSD
**Q: Are 32-bit versions of Windows supported?**
> A: No
__Q: Is it possible to use Barrier on Mac OS X / OS X versions prior to 10.12?__
> A: Not officially.
> - For OS X 10.10 Yosemite and later:
> - [Barrier v2.1.0](https://github.com/debauchee/barrier/releases/tag/v2.1.0) or earlier _may_ work.
> - For Mac OS X 10.9 Mavericks _(and perhaps earlier)_:
> 1. the command-line portions of the [current release](https://github.com/debauchee/barrier/releases/latest) _should_ run fine.
> 2. The GUI will _not_ run, as that OS version does not include Apple's *Metal* framework.
> - _(For a GUI workaround for Mac OS X 10.9, see the [discussion at issue #544](https://github.com/debauchee/barrier/issues/544))_
> Note: Only versions [v2.3.4](https://github.com/debauchee/barrier/releases/tag/v2.3.4) and [later](https://github.com/debauchee/barrier/releases/latest) of Barrier can be supported by this project.
> - Anyone using an earlier version is advised to upgrade due to recently-addressed security vulnerabilities *(and other bug fixes)*.
> - This is especially important for computers accessible from the public Internet *(or from other shared/untrusted networks, such as when using shared WiFi)*.
**Q: How do I load my configuration on startup?**
> A: Start the binary with the argument `--config <path_to_saved_configuration>`
**Q: After loading my configuration on the client the field 'Server IP' is still empty!**
> A: Edit your configuration to include the server's ip address manually with
>
>```
>(...)
>
>section: options
> serverhostname=<AAA.BBB.CCC.DDD>
>```
**Q: Are there any other significant limitations with the current version of Barrier?**
> A: Currently:
> - Barrier currently has limited UTF-8 support; issues have been reported with processing various languages.
> - *(see [#860](https://github.com/debauchee/barrier/issues/860))*
> - There is interest in future support for the Wayland compositor/display server protocol *([official site](https://wayland.freedesktop.org/) | [Wikipedia article](https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)))* on Linux.
> - As of late 2021, there is no expected completion date for *Wayland* support.
> - *(see [#109](https://github.com/debauchee/barrier/issues/109) and [#1251](https://github.com/debauchee/barrier/issues/1251) for status or to volunteer your talents)*
>
> The complete list of open issues can be found in the ['Issues' tab on GitHub](https://github.com/debauchee/barrier/issues?q=is%3Aissue+is%3Aopen). Help is always appreciated.

76
RELEASING.md Normal file
View File

@ -0,0 +1,76 @@
Creating a release
==================
This document is documentation intednded for maintainers of Barrier.
It documents the release process of Barrier.
Step 1: Setup environment variables
-----------------------------------
Setup the following environment variable that will be used throughout the rest of the steps.
export VERSION=X.Y.Z
Step 2: Release notes PR
------------------------
Open a new branch (e.g. `release`) and run the following:
towncrier --version ${VERSION} --date `date -u +%F`
This collects the release notes using the `towncrier` tool. Please commit the collected release
notes afterwards.
Certain file names are not properly supported by the `towncrier` tool and it ignores them.
Check `newsfragments` directory for any forgotten release notes
Step 3: Merge the release notes PR
----------------------------------
Step 4: Bump the version number
-------------------------------
Pull the merge commit created on the `master` branch during the step 2.
Edit the following files and update the version numbers:
- `Build.properties`
- `cmake/Version.cmake`
- `doc/barrierc.1`
- `doc/barriers.1`
- `.github/ISSUE_TEMPLATE/bug_report.yml`
Commit to the release branch with the following message `Barrier x.y.z`.
Push the commit:
git push origin master
Step 5: Push git tag
--------------------
Create a tag:
git tag -s v${VERSION} -m v${VERSION}
Push the tag:
git push origin master --tags
Step 6: Draft a new release on Github
-------------------------------------
Go to https://github.com/buildbot/buildbot/releases and draft a new release.
Use git tag as the title of the release: `vX.Y.Z`.
Use the release notes generated by the `towncrier` tool as the description of the releases.
Upload the artifacts created by Azure pipelines as the binaries of the release. The following
artifacts should be uploaded to Github:
- the Barrier-X.Y.Z-release.dmg created by the newest Mac OS task (artifact name is
"Mac Release Disk Image and App XYZ").
- the BarrierSetup-X.Y.Z-release.exe (artifact name is Windows Release Installer).

1
_config.yml Normal file
View File

@ -0,0 +1 @@
theme: jekyll-theme-slate

117
azure-pipelines.yml Normal file
View File

@ -0,0 +1,117 @@
trigger:
tags:
include:
- '*'
branches:
include:
- '*'
jobs:
- job: WinBuild
displayName: Windows Build
pool:
vmImage: 'vs2017-win2016'
strategy:
matrix:
Debug:
CI_ENV_BUILD_TYPE: Debug
Release with Release Installer:
CI_ENV_BUILD_TYPE: Release
steps:
# Gather Dependencies
- task: PowerShell@2
displayName: Download Bonjour SDK-like
inputs:
filePath: azure-pipelines/download_install_bonjour_sdk_like.ps1
- task: UsePythonVersion@0
displayName: Selecting Python Installer for QLI Installer
inputs:
versionSpec: '3.7'
- task: PowerShell@2
displayName: Installing QT
condition: ne(variables['CacheRestored'], 'true')
inputs:
filePath: azure-pipelines/download_install_qt.ps1
# Build time!
- powershell: Copy-Item azure-pipelines\build_env_tmpl.bat build_env.bat
displayName: Layering Azure Pipeline's build_env.bat
- script: |
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\vsdevcmd" -arch=x64 && clean_build.bat
displayName: Clean Build
- task: ArchiveFiles@2
displayName: Archive Completed Build Directory
inputs:
rootFolderOrFile: build\bin\$(CI_ENV_BUILD_TYPE)\
includeRootFolder: true
archiveFile: $(Build.ArtifactStagingDirectory)\$(CI_ENV_BUILD_TYPE).zip
- task: PublishBuildArtifacts@1
displayName: Publish Completed Build Directory Archive Build Artifact
inputs:
pathtoPublish: $(Build.ArtifactStagingDirectory)\$(CI_ENV_BUILD_TYPE).zip
artifactName: Windows $(CI_ENV_BUILD_TYPE)
- script: choco install innosetup --version 5.6.1.20190126 --allow-downgrade
displayName: Ensure desired version of Inno Setup is installed.
condition: eq(variables['CI_ENV_BUILD_TYPE'], 'Release')
- script: build_installer.bat
displayName: Build Installer
condition: eq(variables['CI_ENV_BUILD_TYPE'], 'Release')
- task: PublishBuildArtifacts@1
displayName: Publish Release Installer
condition: eq(variables['CI_ENV_BUILD_TYPE'], 'Release')
inputs:
pathtoPublish: build\installer-inno\bin
artifactName: Windows Release Installer
- job: LinuxBuild
strategy:
matrix:
ubuntu-18.04:
imageName: 'ubuntu-18.04'
ubuntu-20.04:
imageName: 'ubuntu-20.04'
displayName: Linux Build
pool:
vmImage: $(imageName)
steps:
- script: sudo apt-get update -y
- script: sudo apt-get install -y libxtst-dev qtdeclarative5-dev libavahi-compat-libdnssd-dev libcurl4-openssl-dev
displayName: Install Dependencies
- script: sh -x ./clean_build.sh
displayName: Clean Build
- job: MacBuild
displayName: Mac Build
strategy:
matrix:
big-sur-Release:
imageName: "macOS-11"
B_BUILD_TYPE: Release
BARRIER_VERSION_STAGE: Release
catalina-Release:
imageName: "macOS-10.15"
B_BUILD_TYPE: Release
BARRIER_VERSION_STAGE: Release
mojave-Release:
imageName: "macOS-10.14"
B_BUILD_TYPE: Release
BARRIER_VERSION_STAGE: Release
pool:
vmImage: $(imageName)
variables:
VERBOSE: 1
TERM: xterm-256color
steps:
- script: rm -rf /usr/local/opt/openssl
displayName: Remove incompatible OpenSSL 1.0.2t from macOS-10.14 vmImage
- script: brew reinstall openssl
displayName: Installed newer OpenSSL 1.1.x
- script: brew install pkg-config qt5
displayName: Install Qt5 and pkg-config prereqs
- script: sh -x ./clean_build.sh
displayName: Clean Build
- task: PublishBuildArtifacts@1
displayName: Publish Release DMG
condition: eq(variables['B_BUILD_TYPE'], 'Release')
inputs:
pathtoPublish: build/bundle
artifactName: Mac Release Disk Image and App $(imageName)

View File

@ -0,0 +1,6 @@
set B_BUILD_TYPE=%CI_ENV_BUILD_TYPE%
set B_QT_ROOT=%cd%\deps\Qt
set B_QT_VER=Qt5.13.0\5.13.0
set B_QT_MSVC=msvc2017_64
set B_BONJOUR=%cd%\deps\BonjourSDKLike

View File

@ -0,0 +1,11 @@
$ErrorActionPreference = "Stop"
New-Item -Force -ItemType Directory -Path ".\deps\"
Invoke-WebRequest 'https://github.com/nelsonjchen/mDNSResponder/releases/download/v2019.05.08.1/x64_RelWithDebInfo.zip' -OutFile 'deps\BonjourSDKLike.zip' ;
Write-Output 'Downloaded BonjourSDKLike Zip'
Write-Output 'Unzipping BonjourSDKLike Zip'
Remove-Item -Recurse -Force -ErrorAction Ignore .\deps\BonjourSDKLike
Expand-Archive .\deps\BonjourSDKLike.zip -DestinationPath .\deps\BonjourSDKLike
Write-Output 'Installed BonjourSDKLike Zip'
Remove-Item deps\BonjourSDKLike.zip
Write-Output 'Deleted BonjourSDKLike Zip'

View File

@ -0,0 +1,25 @@
$ErrorActionPreference = "Stop"
$qli_install_version = '2019.05.26.1'
$qt_version = '5.13.0'
New-Item -Force -ItemType Directory -Path ".\deps\"
Write-Output 'Downloading QLI Installer'
Invoke-WebRequest "https://github.com/nelsonjchen/qli-installer/archive/v$qli_install_version.zip" -OutFile '.\deps\qli-installer.zip' ;
Write-Output 'Downloaded QLI Installer'
Write-Output 'Extracting QLI Installer'
Expand-Archive deps\qli-installer.zip deps\
Move-Item .\deps\qli-installer-$qli_install_version\ .\deps\qli-installer
Write-Output 'Extracted QLI Installer'
Write-Output 'Installing QLI Installer Dependencies'
pip install -r .\deps\qli-installer\requirements.txt
Write-Output 'Installed QLI Installer Dependencies'
Write-Output 'Starting QT Installer'
$Env:QLI_OUT_DIR = ".\deps\Qt\Qt$qt_version"
$Env:QLI_BASE_URL = "https://download.qt.io/online/qtsdkrepository/"
python .\deps\qli-installer\qli-installer.py $qt_version windows desktop win64_msvc2017_64
Write-Output 'Installed QT Installer'

34
build_installer.bat Normal file
View File

@ -0,0 +1,34 @@
@echo off
set INNO_ROOT=C:\Program Files (x86)\Inno Setup 5
set savedir=%cd%
cd /d %~dp0
if not exist build\bin\Release goto buildproject
echo Building 64-bit Windows installer...
cd build\installer-inno
if ERRORLEVEL 1 goto buildproject
"%INNO_ROOT%\ISCC.exe" /Qp barrier.iss
if ERRORLEVEL 1 goto failed
echo Build completed successfully
goto done
:buildproject
echo To build a 64-bit Windows installer:
echo - set B_BUILD_TYPE=Release in build_env.bat
echo - also set other environmental overrides necessary for your build environment
echo - run clean_build.bat to build Barrier and verify that it succeeds
echo - re-run this script to create the installation package
goto done
:failed
echo Build failed
:done
set INNO_ROOT=
cd /d %savedir%
set savedir=

91
clean_build.bat Normal file
View File

@ -0,0 +1,91 @@
@echo off
REM defaults - override them by creating a build_env.bat file
set B_BUILD_TYPE=Debug
set B_QT_ROOT=C:\Qt
set B_QT_VER=5.11.1
set B_QT_MSVC=msvc2017_64
set B_BONJOUR=C:\Program Files\Bonjour SDK
set savedir=%cd%
cd /d %~dp0
REM cmake generator name for the target build system
if "%VisualStudioVersion%"=="15.0" (
set cmake_gen=Visual Studio 15 2017
) else if "%VisualStudioVersion%"=="16.0" (
set cmake_gen=Visual Studio 16 2019
) else (
echo Visual Studio version was not detected.
echo Did you forget to run inside a VS developer prompt?
echo Using the default cmake generator.
set cmake_gen=Visual Studio 16 2019
)
if exist build_env.bat call build_env.bat
REM needed by cmake to set bonjour include dir
set BONJOUR_SDK_HOME=%B_BONJOUR%
REM full path to Qt stuff we need
set B_QT_FULLPATH=%B_QT_ROOT%\%B_QT_VER%\%B_QT_MSVC%
echo Bonjour: %BONJOUR_SDK_HOME%
echo Qt: %B_QT_FULLPATH%
git submodule update --init --recursive
rmdir /q /s build
mkdir build
if ERRORLEVEL 1 goto failed
cd build
cmake -G "%cmake_gen%" -A x64 -D CMAKE_BUILD_TYPE=%B_BUILD_TYPE% -D CMAKE_PREFIX_PATH="%B_QT_FULLPATH%" -D DNSSD_LIB="%B_BONJOUR%\Lib\x64\dnssd.lib" -D QT_VERSION=%B_QT_VER% ..
if ERRORLEVEL 1 goto failed
cmake --build . --config %B_BUILD_TYPE%
if ERRORLEVEL 1 goto failed
if exist bin\Debug (
copy %B_QT_FULLPATH%\bin\Qt5Cored.dll bin\Debug\ > NUL
copy %B_QT_FULLPATH%\bin\Qt5Guid.dll bin\Debug\ > NUL
copy %B_QT_FULLPATH%\bin\Qt5Networkd.dll bin\Debug\ > NUL
copy %B_QT_FULLPATH%\bin\Qt5Widgetsd.dll bin\Debug\ > NUL
copy %B_QT_FULLPATH%\bin\Qt5Cored.dll bin\Debug\ > NUL
copy ..\ext\openssl\windows\x64\bin\* bin\Debug\ > NUL
copy ..\res\openssl\barrier.conf bin\Debug\ > NUL
mkdir bin\Debug\platforms
copy %B_QT_FULLPATH%\plugins\platforms\qwindowsd.dll bin\Debug\platforms\ > NUL
) else if exist bin\Release (
copy %B_QT_FULLPATH%\bin\Qt5Core.dll bin\Release\ > NUL
copy %B_QT_FULLPATH%\bin\Qt5Gui.dll bin\Release\ > NUL
copy %B_QT_FULLPATH%\bin\Qt5Network.dll bin\Release\ > NUL
copy %B_QT_FULLPATH%\bin\Qt5Widgets.dll bin\Release\ > NUL
copy %B_QT_FULLPATH%\bin\Qt5Core.dll bin\Release\ > NUL
copy ..\ext\openssl\windows\x64\bin\* bin\Release\ > NUL
copy ..\res\openssl\barrier.conf bin\Release\ > NUL
mkdir bin\Release\platforms
copy %B_QT_FULLPATH%\plugins\platforms\qwindows.dll bin\Release\platforms\ > NUL
) else (
echo Remember to copy supporting binaries and configuration files!
)
echo Build completed successfully
set BUILD_FAILED=0
goto done
:failed
set BUILD_FAILED=%ERRORLEVEL%
echo Build failed
:done
cd /d %savedir%
set B_BUILD_TYPE=
set B_QT_ROOT=
set B_QT_VER=
set B_QT_MSVC=
set B_BONJOUR=
set BONJOUR_SDK_HOME=
set B_QT_FULLPATH=
set savedir=
set cmake_gen=
EXIT /B %BUILD_FAILED%

32
clean_build.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/sh
cd "$(dirname "$0")" || exit 1
# some environments have cmake v2 as 'cmake' and v3 as 'cmake3'
# check for cmake3 first then fallback to just cmake
B_CMAKE=`type cmake3 2>/dev/null`
if [ $? -eq 0 ]; then
B_CMAKE=`echo "$B_CMAKE" | cut -d' ' -f3`
else
B_CMAKE=cmake
fi
# default build configuration
B_BUILD_TYPE=${B_BUILD_TYPE:-Debug}
if [ "$(uname)" = "Darwin" ]; then
# OSX needs a lot of extra help, poor thing
# run the osx_environment.sh script to fix paths
. ./osx_environment.sh
B_CMAKE_FLAGS="-DCMAKE_OSX_SYSROOT=$(xcode-select --print-path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 $B_CMAKE_FLAGS"
fi
# allow local customizations to build environment
[ -r ./build_env.sh ] && . ./build_env.sh
# Initialise Git submodules
git submodule update --init --recursive
B_CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=$B_BUILD_TYPE $B_CMAKE_FLAGS"
rm -rf build
mkdir build || exit 1
cd build || exit 1
echo "Starting Barrier $B_BUILD_TYPE build..."
$B_CMAKE $B_CMAKE_FLAGS .. || exit 1
make || exit 1
echo "Build completed successfully"

9
cmake/Package.cmake Normal file
View File

@ -0,0 +1,9 @@
if (UNIX)
set (CPACK_PACKAGE_VERSION_MAJOR ${BARRIER_VERSION_MAJOR})
set (CPACK_PACKAGE_VERSION_MINOR ${BARRIER_VERSION_MINOR})
set (CPACK_PACKAGE_VERSION_PATCH ${BARRIER_VERSION_PATCH})
set (CPACK_GENERATOR "TBZ2")
set (CPACK_SOURCE_GENERATOR "TXZ")
set (CPACK_SOURCE_IGNORE_FILES "/build/;\.gitignore$;/\.git/;/.github/;\.swp$;build_env\.*")
include (CPack)
endif()

View File

@ -1,90 +1,98 @@
cmake_minimum_required (VERSION 3.4)
set (BARRIER_VERSION_MAJOR 2)
set (BARRIER_VERSION_MINOR 4)
set (BARRIER_VERSION_PATCH 0)
set (BARRIER_VERSION_STAGE "release")
#
# Synergy Version
# Barrier Version
#
if (NOT DEFINED SYNERGY_VERSION_MAJOR)
if (DEFINED ENV{SYNERGY_VERSION_MAJOR})
set (SYNERGY_VERSION_MAJOR $ENV{SYNERGY_VERSION_MAJOR})
if (NOT DEFINED BARRIER_VERSION_MAJOR)
if (DEFINED ENV{BARRIER_VERSION_MAJOR})
set (BARRIER_VERSION_MAJOR $ENV{BARRIER_VERSION_MAJOR})
else()
set (SYNERGY_VERSION_MAJOR 1)
set (BARRIER_VERSION_MAJOR 2)
endif()
endif()
if (NOT DEFINED SYNERGY_VERSION_MINOR)
if (DEFINED ENV{SYNERGY_VERSION_MINOR})
set (SYNERGY_VERSION_MINOR $ENV{SYNERGY_VERSION_MINOR})
if (NOT DEFINED BARRIER_VERSION_MINOR)
if (DEFINED ENV{BARRIER_VERSION_MINOR})
set (BARRIER_VERSION_MINOR $ENV{BARRIER_VERSION_MINOR})
else()
set (SYNERGY_VERSION_MINOR 9)
set (BARRIER_VERSION_MINOR 3)
endif()
endif()
if (NOT DEFINED SYNERGY_VERSION_PATCH)
if (DEFINED ENV{SYNERGY_VERSION_PATCH})
set (SYNERGY_VERSION_PATCH $ENV{SYNERGY_VERSION_PATCH})
if (NOT DEFINED BARRIER_VERSION_PATCH)
if (DEFINED ENV{BARRIER_VERSION_PATCH})
set (BARRIER_VERSION_PATCH $ENV{BARRIER_VERSION_PATCH})
else()
set (SYNERGY_VERSION_PATCH 0)
message (WARNING "Synergy version wasn't set. Set to ${SYNERGY_VERSION_MAJOR}.${SYNERGY_VERSION_MINOR}.${SYNERGY_VERSION_PATCH}")
set (BARRIER_VERSION_PATCH 2)
message (WARNING "Barrier version wasn't set. Set to ${BARRIER_VERSION_MAJOR}.${BARRIER_VERSION_MINOR}.${BARRIER_VERSION_PATCH}")
endif()
endif()
if (NOT DEFINED SYNERGY_VERSION_STAGE)
if (DEFINED ENV{SYNERGY_VERSION_STAGE})
set (SYNERGY_VERSION_STAGE $ENV{SYNERGY_VERSION_STAGE})
if (NOT DEFINED BARRIER_VERSION_STAGE)
if (DEFINED ENV{BARRIER_VERSION_STAGE})
set (BARRIER_VERSION_STAGE $ENV{BARRIER_VERSION_STAGE})
else()
set (SYNERGY_VERSION_STAGE "snapshot")
set (BARRIER_VERSION_STAGE "snapshot")
endif()
endif()
if (NOT DEFINED SYNERGY_REVISION)
if (NOT DEFINED BARRIER_REVISION)
if (DEFINED ENV{GIT_COMMIT})
string (SUBSTRING $ENV{GIT_COMMIT} 0 8 SYNERGY_REVISION)
elseif (SYNERGY_VERSION_STAGE STREQUAL "snapshot")
execute_process (
COMMAND git rev-parse --short=8 HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE SYNERGY_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string (SUBSTRING $ENV{GIT_COMMIT} 0 8 BARRIER_REVISION)
else()
find_program (GIT_BINARY git)
if (NOT GIT_BINARY STREQUAL "GIT_BINARY-NOTFOUND")
execute_process (
COMMAND git rev-parse --short=8 HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE BARRIER_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
endif()
endif()
if (DEFINED SYNERGY_REVISION)
string(LENGTH ${SYNERGY_REVISION} SYNERGY_REVISION_LENGTH)
if (NOT ((SYNERGY_REVISION MATCHES "^[a-f0-9]+") AND (SYNERGY_REVISION_LENGTH EQUAL "8")))
message (FATAL_ERROR "SYNERGY_REVISION ('${SYNERGY_REVISION}') should be a short commit hash")
endif()
unset (SYNERGY_REVISION_LENGTH)
else()
set (SYNERGY_REVISION "0badc0de")
string(LENGTH "${BARRIER_REVISION}" BARRIER_REVISION_LENGTH)
if (NOT BARRIER_REVISION_LENGTH EQUAL 8 OR NOT BARRIER_REVISION MATCHES "^[a-f0-9]+")
set (BARRIER_REVISION "00000000")
message (WARNING "revision not found. setting to ${BARRIER_REVISION}")
endif()
unset (BARRIER_REVISION_LENGTH)
if (DEFINED ENV{BUILD_NUMBER})
set (SYNERGY_BUILD_NUMBER $ENV{BUILD_NUMBER})
set (BARRIER_BUILD_NUMBER $ENV{BUILD_NUMBER})
else()
set (SYNERGY_BUILD_NUMBER 1)
set (BARRIER_BUILD_NUMBER 1)
endif()
string (TIMESTAMP SYNERGY_BUILD_DATE "%Y%m%d" UTC)
set (SYNERGY_SNAPSHOT_INFO ".${SYNERGY_VERSION_STAGE}.${SYNERGY_REVISION}")
string (TIMESTAMP BARRIER_BUILD_DATE "%Y%m%d" UTC)
set (BARRIER_SNAPSHOT_INFO ".${BARRIER_VERSION_STAGE}.${BARRIER_REVISION}")
if (SYNERGY_VERSION_STAGE STREQUAL "snapshot")
set (SYNERGY_VERSION_TAG "${SYNERGY_VERSION_STAGE}.b${SYNERGY_BUILD_NUMBER}-${SYNERGY_REVISION}")
if (BARRIER_VERSION_STAGE STREQUAL "snapshot")
set (BARRIER_VERSION_TAG "${BARRIER_VERSION_STAGE}.b${BARRIER_BUILD_NUMBER}-${BARRIER_REVISION}")
else()
set (SYNERGY_VERSION_TAG "${SYNERGY_VERSION_STAGE}")
set (BARRIER_VERSION_TAG "${BARRIER_VERSION_STAGE}")
endif()
set (SYNERGY_VERSION "${SYNERGY_VERSION_MAJOR}.${SYNERGY_VERSION_MINOR}.${SYNERGY_VERSION_PATCH}")
set (SYNERGY_VERSION_STRING "${SYNERGY_VERSION}-${SYNERGY_VERSION_TAG}")
message (STATUS "Full Synergy version string is '" ${SYNERGY_VERSION_STRING} "'")
set (BARRIER_VERSION "${BARRIER_VERSION_MAJOR}.${BARRIER_VERSION_MINOR}.${BARRIER_VERSION_PATCH}-${BARRIER_VERSION_STAGE}")
set (BARRIER_VERSION_STRING "${BARRIER_VERSION}-${BARRIER_VERSION_TAG}")
message (STATUS "Full Barrier version string is '" ${BARRIER_VERSION_STRING} "'")
add_definitions (-DSYNERGY_VERSION="${SYNERGY_VERSION}")
add_definitions (-DSYNERGY_VERSION_STRING="${SYNERGY_VERSION_STRING}")
add_definitions (-DSYNERGY_REVISION="${SYNERGY_REVISION}")
add_definitions (-DSYNERGY_BUILD_DATE="${SYNERGY_BUILD_DATE}")
add_definitions (-DSYNERGY_BUILD_NUMBER=${SYNERGY_BUILD_NUMBER})
add_definitions (-DBARRIER_VERSION="${BARRIER_VERSION}")
add_definitions (-DBARRIER_VERSION_STRING="${BARRIER_VERSION_STRING}")
add_definitions (-DBARRIER_VERSION_MAJOR=${BARRIER_VERSION_MAJOR})
add_definitions (-DBARRIER_VERSION_MINOR=${BARRIER_VERSION_MINOR})
add_definitions (-DBARRIER_VERSION_PATCH=${BARRIER_VERSION_PATCH})
add_definitions (-DBARRIER_REVISION="${BARRIER_REVISION}")
add_definitions (-DBARRIER_BUILD_DATE="${BARRIER_BUILD_DATE}")
add_definitions (-DBARRIER_BUILD_NUMBER=${BARRIER_BUILD_NUMBER})
if (SYNERGY_DEVELOPER_MODE)
add_definitions (-DSYNERGY_DEVELOPER_MODE=1)
if (BARRIER_DEVELOPER_MODE)
add_definitions (-DBARRIER_DEVELOPER_MODE=1)
endif()

44
cmake/gtest.cmake Normal file
View File

@ -0,0 +1,44 @@
# barrier -- mouse and keyboard sharing utility
# Copyright (C) 2012-2016 Symless Ltd.
# Copyright (C) 2011 Nick Bolton
#
# This package is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# found in the file LICENSE that should have accompanied this file.
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
if (BARRIER_USE_EXTERNAL_GTEST)
include (FindPkgConfig)
find_package(GTest REQUIRED)
pkg_check_modules(GMOCK REQUIRED gmock)
include_directories(
${GTEST_INCLUDE_DIRS}
${GMOCK_INCLUDE_DIRS}
)
else()
include_directories(
../ext/gtest
../ext/gtest/include
../ext/gmock
../ext/gmock/include
)
add_library(gtest STATIC ../ext/gtest/src/gtest-all.cc)
add_library(gmock STATIC ../ext/gmock/src/gmock-all.cc)
set(GTEST_LIBRARIES gtest)
set(GMOCK_LIBRARIES gmock)
if (UNIX)
# ignore warnings in gtest and gmock
set_target_properties(gtest PROPERTIES COMPILE_FLAGS "-w")
set_target_properties(gmock PROPERTIES COMPILE_FLAGS "-w")
endif()
endif()

412
debian/changelog vendored Normal file
View File

@ -0,0 +1,412 @@
barrier (2.3.3) UNRELEASED; urgency=medium
[ Aaron Bieber ]
* tell build system about openbsd
[ Tetja Rediske ]
* make non-gui variants build without avahi
[ Erik Nordstrøm ]
* Replace hard-coded names of build directory in build_installer.sh script for macOS with looking at the location of the script by the script itself when it is run. This makes it possible to have differently named build dirs for debug and release builds, and without restricting what each of those directories must be named.
* Remove shell script that changes directory and then executes barrier on macOS, and execute barrier directly instead.
* Add settings in the Info.plist file that enable high-DPI support on macOS.
[ Daniel Seither ]
* Remove unused variables
* IpcLogOutputter: Put member initializers in execution order
* OSXDragView: Get rid of uninitialized variable warning
* Add override specifiers
* Let tray image blend into macOS menu bar
[ Vasily Galkin ]
* Man page: fix incorrect name of user conf file in barriers.1
[ Keegan Quinn ]
* Cast values to fix build errors on OS X 10.11.
[ Maximiliano Bertacchini ]
* Update readme with mention of the snap package.
[ Javier Candeira ]
* Fix #503 - Clarify on README how to report issues
[ Micael Jarniac ]
* Build status badges added to a table
[ Maximiliano Bertacchini ]
* Add build-essential to the snap's build deps.
* Explicitly disable wayland support in the snap.
* Add comment on snap env var
[ Vasily Galkin ]
* Fix infinite loop on fast TCP disconnection
[ Dom Rodriguez ]
* README: Add OpenBSD to list of supported OSes
[ Åke Engelbrektson ]
* Update gui_sv.ts
[ the-wes ]
* Add more detailed description of what Barrier does
[ James Le Cuirot ]
* Use -pthread flag and simplify pthread build logic
* Only require Qt5 when building the GUI
[ Tomáš Chvátal ]
* Fix desktop file Categories to match standard
[ Chris Simons ]
* Add script that uses macdeployqt instead of `reref_dylibs.sh` shell script to create the `.app` bundle
* Use `build_dist.sh` in CMake instead of `build_installer.sh` Have CMake always build a bundle, the `build_dist.sh` script will only build a dmg if the build type is "Release"
* Add warnings for users manually running `build_installer.sh` and `reref_dylibs.sh` manually
* Homebrew (Ruby) throws an error when it gets `SIGPIPE` from the `--max-count` on `grep`.
* added barrierc and barriers to macdeployqt targets
* Change MacOS Build Steps
* Fix TIS/TSM in logs
* Elevate XSocketAddressInUse to ERROR
* Allow selecting Fingerprint Qlabel
* replace tabs with spaces
* Change log level on several status messages (Fixes #652, Fixes #516)
[ Ben Plessinger ]
* A few more log cleanups
[ Vasily Galkin ]
* Remove unused IEventQueue::isEmpty() method to simplify code understanding
[ Povilas Kanapickas ]
* XWindowsEventQueueBuffer: Fix delays when waiting for new events
[ Jonathan Martens ]
* Fix Auto config missing hostname prompt #704
[ Vasily Galkin ]
* Windows 8+: make waiting for messages correspond to emptiness check
[ Povilas Kanapickas ]
* gui: Use enum class to scope enum values
* lib/client: Use std::string directly instead of String typedef
* lib/arch: Use std::string directly instead of String typedef
* lib/net: Use std::string directly instead of String typedef
* lib/server: Use std::string directly instead of String typedef
* lib/base: Use std::string directly instead of String typedef
* lib/ipc: Use std::string directly instead of String typedef
* lib/net: Add missing include
* lib/platform: Use std::string directly instead of String typedef
* test: Enable building of tests
* test: Reduce the number of implicit include directories
* test: Remove unresolved merge conflict markers
* test: Fix referenced library name
* test: Update to new APIs
* tests: Fix crash in XWindowsKeyStateTests
* test: Fix undefined behavior of deleting incomplete type
* tests: Disable test that depends on external state
* Use noexcept instead of exception specifications
* lib/common: Remove no longer used stdexcept.h
[ Jonathan Martens ]
* Make connection message a NOTE for consistency
[ zhexiwang ]
* Added toggleScreen function, using hot key to loop through all screens. Comparing to switchToScreen, it is more handy since the user only need to hit one hotkey.
[ GeorgH93 ]
* Fix build on Windows
* Keep errorlevel
[ Povilas Kanapickas ]
* Revert "Make connection message a NOTE for consistency"
[ Chris Simons ]
* add comments explaining the use of CLOG_PRINT
[ Dom Rodriguez ]
* Remove ext/gtest, ext/gmock to replace with Git submodule
* Add gtest/gmock framework, locked at 1.6.0
* Fix CI infrastructure (.bat/.sh) to initialise Git submodules before build
[ Maximiliano Bertacchini ]
* Fix snap build failing to initialize submodules.
[ Niklas Hambüchen ]
* ui: Settings: Explain what "double tap" means
[ Dom Rodriguez ]
* Prepare for v2.3.3 release
[ Maximiliano Bertacchini ]
* Shorten snap version on tagged revisions
[ Tomoya Tanjo ]
* Add Eisu_toggle and Muhenkan keys
[ Michael Zimmermann ]
* add support for keyboard backlight media keys
[ Dom Rodriguez ]
* [Build]: Bump Build.properties
-- root <root@873b8d543aab> Fri, 07 Aug 2020 16:25:54 +0000
barrier (2.3.2) disco; urgency=medium
[ walker0643 ]
* remove (wrong) version line from .desktop file
[ Povilas Kanapickas ]
* Improve precision of grabbed scroll events on OSX server
* Accumulate scrolls less than supported scroll on XWindows
* Add fake changelog so that debian package may be built
[ walker0643 ]
* non-GUI build should not require bonjour headers
* add patch from Gentoo packager to fix cmake issue (reported on Arch, too). ref #49
* fix email in debian changelog
* screen settings dialog handles internationalized default name better (ref #71)
* rephrase language in README.md
[ sidneys ]
* fix(macos-build): use standard methods for detecting default XCode installation and default macOS platform SDK
[ Povilas Kanapickas ]
* OSX: Add support for building on macports
* OSX: Prefer Macports over Homebrew if available
* travis: Rewrite the CI config to use platform matrix
* travis: Add macports-based OSX script
* travis: Add homebrew-based OSX script
[ Adrian Lucrèce Céleste ]
* [Travis] use container builds for linux (#85)
* Merge pkgconfig branch into master (#86)
[ walker0643 ]
* fix formatting in last merge
[ coypu ]
* Also add curl include directories.
* have all other OSes handled in the else case.
* Use ${CMAKE_DL_LIBS} rather than listing OSes.
[ walker0643 ]
* bump version to 2.2
* bump qt/vs versions on windows
[ Pawel Bogut ]
* Fix config file name in server help message
[ Josh Stone ]
* Fix data indexes in Unicode::fromUTF8
[ walker0643 ]
* bump ssl cert key size up to 2048 from 1024. fixes #126
* enable high-dps awareness for barriers/barrierc. fixes screen geometry calculations for screens with >100% scaling
* rename field Interface to Address in GUI settings dialog
* add firewall rule for default port on installation (windows)
* Update README.md
[ Epakai ]
* Update openssl key size in barrier.conf (#150)
[ Adrian Lucrèce Céleste ]
* add pre-build script for building barrier on windows from SSH (#152)
[ Christopher N. Hesse ]
* gui: Fix auto hide behavior (#140)
[ Povilas Kanapickas ]
* Build full installer via clean_build.sh (#157)
* OSX: Explain why the app needs to go into /Applications (#158)
[ Monika Kairaityte ]
* x11: Wrap platform functions in an interface that can be mocked later
* x11: Wrap platform functions in XWindowsScreenSaver class
* x11: Wrap platform functions in XWindowsClipboard class
* x11: Wrap platform functions in XWindowsKeyState class
* x11: Wrap platform functions in XWindowsEventQueueBuffer class
* Fix tests wrapper
[ Chris Simons ]
* Added preserveFocus fix (#178)
[ Dayne Broderson ]
* add debug notes to help identify where trusted fingerprints file is
* fix spelling of matches
* fixing style to be consistent per @p12tic
[ Robert Sandell ]
* Spelling correction (#209)
[ Moron ]
* Fix #204 modifier keys not working in remote desktop on MacOS
[ jwestfall ]
* Properly deal with a socket that is readable and writable at the same time
[ Miroslav Lences ]
* Fix macos build issues
[ Jim Westfall ]
* Fix OSX builds for macports
[ Girts Folkmanis ]
* add checks to osx_environment.sh
[ Thomas A. F. Thorne ]
* Reduce Sysmtem Tray Retry Attempts
* Do Not Warn About Missing System Tray
[ jwestfall ]
* OSX: let build_installer.sh create a working Barrier.app on debug builds
[ Szymon Szeląg ]
* Screen change script argument
* Use std::system
* Start script via execl
* Fire screen switch event on client disconnect
[ Povilas Kanapickas ]
* Fix memory leak during socket shutdown
[ PayouZon MagIT ]
* Update snapcraft.yaml
* Update snapcraft.yaml
* Barrier Snappy
[ Wendall Cada ]
* Working spec file for Fedora
[ noisyshape ]
* Update Windows build script for VS2019
* Add support for multiple VS versions
* Normalize cmake generator strings
* Correct path and instructions
* Create version number for wix
* Remove hardcoded paths
* Fix XML
[ Mike Salvatore ]
* Fix #278 "Enable Clipboard Sharing" always reset after restart
* Rename the "Apply" button to "Reload"
[ noisyshape ]
* Replace Wix with Inno Setup
[ Matthijs Wensveen ]
* Add dpiAwareness: PerMonitor to manifest to better handle multiple monitors with different DPI settings.
[ Nelson Chen ]
* Initial Azure Pipelines
[ Adrian Lucrèce Céleste ]
* :pencil: add release link and contact info
[ pack ]
* typo fix (#311)
[ Nelson Chen ]
* Update Apt on Linux before installing dependencies on Azure Pipelines (#321)
* Prefix Windows artifact names with 'Windows' on Azure Pipelines (#319)
* Install Pinned Qt and OpenSSL on Mac
* Build Release version of Barrier on Mac
* Publish Mac Artifacts
* Upgrade QLI Installer and use Cal's Qt Mirror
[ Adrian Lucrèce Céleste ]
* fix #163
* Add a quick Q/A about what OSes are supported
* Add Q/A about 32-bit windows
[ Chun Wang ]
* Fix #232 MACOS serious config file errors - hotkeys totally broken
[ Adrian Lucrèce Céleste ]
* [README] Add FaQ to the bottom
* [Release] Bump up to a new release version
* [Cmake] bump version to 2.3.0
[ Nelson Chen ]
* Ensure Inno Setup 5 is installed in Azure Pipelines
[ Patrizio Tufarolo ]
* Fixed quote key on US International keyboard
[ Maximiliano Bertacchini ]
* Use version from git tag.
* Fix interface plugs.
* Add commands: `barrier`, `barrierc`, `barriers`.
* Drop custom qt5, use distro provided one.
* Update build-packages and stage-packages.
* Add desktop entry with an app icon.
* Set snap icon and license.
* Use appstream metadata from flathub.
* Fix snap version-control script for local lxd builds.
[ Dom Rodriguez ]
* Feature: CMake now generates compile_commands.json
[ Thomas Thorne ]
* Reference Only Microsoft Azue Pipelines In Readme.md
* Delete .travis.yml As We Switch To Azure Pipelines
[ Evan Maddock ]
* Reimplement patch for horizontal scrolling and extra mouse buttons
* Used the wrong key button by accident
* Use Windows helper function to check for Windows version
[ walker0643 ]
* Drop Travis CI
[ Adrian Lucrèce Céleste ]
* [Version] bump to 2.3.1 for new release
[ Povilas Kanapickas ]
* Make ownership of SocketMultiplexer explicit
* Make ownership of SocketMultiplexerJob explicit
* Use std::mutex instead of ArchMutex in ArchMultithreadPosix
* Use std::mutex instead of ArchMutex in EventQueue
* Use std::mutex instead of ArchMutex in Log
* Use std::mutex instead of ArchMutex in IpcServer
* Use std::mutex instead of ArchMutex in IpcClientProxy
* Use std::mutex instead of ArchMutex in IpcLogOutputter
* Fix race condition in IArchString
[ Adrian Lucrèce Céleste ]
* [Build[ update pre-build script to call VS2019
[ Dom Rodriguez ]
* Snap: Change CMake builds to be of Release type
* Fix: CMake now checks for required Qt5 libraries
* Tidy up and fix lint errors in build scripts
* Interim fix for failed macOS builds
[ Povilas Kanapickas ]
* Fix retry timer not being unregistered properly
[ Maximiliano Bertacchini ]
* Rename the snap as `barrier`.
[ Adrian Lucrèce Céleste ]
* Revert "Tidy up and fix lint errors in build scripts"
* [CMake] properly declare FPIC
* [Azure Pipelines] use QT 5.13.0 (#418)
* Add snap build status
* [README] update README with info about packages
[ Casey Barton ]
* Merged mouse drift fix from synergy-core
[ mirh ]
* Fix debug build launch
[ Adrian Lucrèce Céleste ]
* [Version] bump to 2.3.2, stable
-- Pablo Catalina <pablo.catalina@gmail.com> Wed, 09 Oct 2019 12:52:10 +0200
barrier (2.1-1) unstable; urgency=low
* Initial release (Closes: #123456)
-- Debauchee Open Source Group <debauchee.oss@gmail.com> Sat, 01 Apr 2018 00:00:00 +0000

12
debian/control vendored
View File

@ -1,17 +1,17 @@
Source: synergy
Source: barrier
Section: utils
Priority: optional
Standards-Version: 3.9.7
Homepage: https://www.symless.com/
Maintainer: Symless <engineering@symless.com>
Homepage: https://github.com/debauchee/barrier/
Maintainer: Debauchee Open Source Group <todo@mail.com>
Package: synergy
Package: barrier
Architecture: amd64
Section: utils
Priority: optional
Depends: ${shlibs:Depends},
${misc:Depends}
Description: Keyboard and mouse sharing solution
Synergy allows you to share one mouse and keyboard between multiple computers.
Barrier allows you to share one mouse and keyboard between multiple computers.
Work seamlessly across Windows, macOS and Linux.
Homepage: https://symless.com/synergy
Homepage: https://github.com/debauchee/barrier/

6
debian/copyright vendored
View File

@ -1,5 +1,5 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Synergy
Source: https://www.symless.com/synergy
Upstream-Name: Barrier
Source: https://github.com/debauchee/barrier/
Disclaimer: This package is not part of the Debian project as it contains closed source proprietary components
Copyright: Copyright (C) 2012-2017 Symless Ltd
Copyright: Copyright (C) 2018 Debauchee Open Source Group

90
dist/inno/barrier.iss.in vendored Normal file
View File

@ -0,0 +1,90 @@
#define MyAppName "Barrier"
#define MyAppVersion "@BARRIER_VERSION_MAJOR@.@BARRIER_VERSION_MINOR@.@BARRIER_VERSION_PATCH@.@BARRIER_BUILD_NUMBER@"
#define MyAppTextVersion "@BARRIER_VERSION@"
#define MyAppPublisher "Debauchee Open Source Group"
#define MyAppURL "https://github.com/debauchee/barrier/wiki"
#define MyAppCopyright "Copyright (C) 2018 Debauchee Open Source Group"
#define MyAppExeName "barrier.exe"
#define MyAppServiceName "Barrier"
#define MyAppServiceExe "barrierd.exe"
#define MyAppServiceDesc "Manages the Barrier background processes."
#define MyAppListenerDesc "Barrier Listener"
[Setup]
AppId={{41036EA6-3F7A-4803-8AE0-469E5E91EFCC}
AppName={#MyAppName}
AppVersion={#MyAppTextVersion}
AppVerName={#MyAppName} {#MyAppTextVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
LicenseFile=@CMAKE_CURRENT_SOURCE_DIR@/res/License.rtf
OutputDir=@CMAKE_RUNTIME_OUTPUT_DIRECTORY@/../installer-inno/bin
OutputBaseFilename=BarrierSetup-{#MyAppTextVersion}
SetupIconFile=@CMAKE_CURRENT_SOURCE_DIR@/res/barrier.ico
VersionInfoProductTextVersion={#MyAppTextVersion}
VersionInfoProductVersion={#MyAppVersion}
VersionInfoTextVersion={#MyAppTextVersion}
VersionInfoVersion={#MyAppVersion}
VersionInfoCopyright={#MyAppCopyright}
Compression=lzma
SolidCompression=yes
ArchitecturesInstallIn64BitMode=x64 ia64
UninstallDisplayIcon={app}\{#MyAppExeName}
#include "scripts\lang\english.iss"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "@CMAKE_RUNTIME_OUTPUT_DIRECTORY@/Release/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
; there's no "check if exists" or "insert if not exists" for netsh's firewall commands
; to avoid duplicate entries remove the existing rule (fails if it doesn't exist) before adding
Filename: {sys}\netsh.exe; Parameters: "advfirewall firewall delete rule name=""{#MyAppListenerDesc}"""; Flags: runhidden
Filename: {sys}\netsh.exe; Parameters: "advfirewall firewall add rule name=""{#MyAppListenerDesc}"" protocol=TCP dir=in localport=24800 action=allow"; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "create {#MyAppServiceName} start= auto binPath= ""\""{app}\{#MyAppServiceExe}\"""""; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "description {#MyAppServiceName} ""{#MyAppServiceDesc}"""; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "start {#MyAppServiceName}"; Flags: runhidden
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[UninstallDelete]
Type: filesandordirs; Name: "{commonappdata}\Barrier"
[UninstallRun]
Filename: {sys}\taskkill; Parameters: "/im {#MyAppExeName} /f /t"; Flags: runhidden
Filename: {sys}\net.exe; Parameters: "stop {#MyAppServiceName}"; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "delete {#MyAppServiceName}"; Flags: runhidden
Filename: {sys}\netsh.exe; Parameters: "advfirewall firewall delete rule name=""{#MyAppListenerDesc}"""; Flags: runhidden
[CustomMessages]
DependenciesDir="redist"
; shared code for installing the products
#include "scripts\products.iss"
#include "scripts\products\stringversion.iss"
#include "scripts\products\winversion.iss"
#include "scripts\products\msiproduct.iss"
#include "scripts\products\vcredist2017.iss"
[Code]
function InitializeSetup(): boolean;
begin
// initialize windows version
initwinversion();
vcredist2017('14'); // min allowed version is 14.0
Result := true;
end;

49
dist/inno/scripts/isxdl/english.ini vendored Normal file
View File

@ -0,0 +1,49 @@
[strings]
; General
100=File download
101=Do you want to cancel the download?
102=%1 (%2 of %3)
103=%1 KB
104=%1 KB of %2 KB (%3%)
; Status information
110=Getting file information...
111=Redirecting to %1
112=Sending request...
113=Resolving %1
114=Connected to %1
115=Receiving...
116=Connecting to %1
; Error messages
120=Error connecting to the internet.\n\n%1
121=Error opening %1.\n\nThe server returned status code %2.
122=Error reading URL.\n\n%1
123=Error writing file %1.\n\n%2
124=Error opening file %1.\n\n%2
125='%1' is an invalid URL.
126=Error opening %1.\n\n%2
127=Error sending request.\n\n%1
128=Unsupported protocol. Only HTTP and FTP protocols are supported.
129=Failed to connect to %1.\n\n%2
130=Failed to query status code.\n\n%1
131=Error requesting file.\n\n%1
; Other
144=About...
146=Download
147=Setup is now downloading additional files to your computer.
; labels
160=File:
161=Speed:
162=Status:
163=Elapsed Time:
164=Remaining Time:
165=Current File:
166=Overall Progress:
167=Cancel
168=OK
169=User Name and Password
170=User Name:
171=Password:

BIN
dist/inno/scripts/isxdl/isxdl.dll vendored Normal file

Binary file not shown.

14
dist/inno/scripts/isxdl/isxdl.iss vendored Normal file
View File

@ -0,0 +1,14 @@
[Files]
Source: "scripts\isxdl\isxdl.dll"; Flags: dontcopy
[Code]
procedure isxdl_AddFile(URL, Filename: PAnsiChar);
external 'isxdl_AddFile@files:isxdl.dll stdcall';
function isxdl_DownloadFiles(hWnd: Integer): Integer;
external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
function isxdl_SetOption(Option, Value: PAnsiChar): Integer;
external 'isxdl_SetOption@files:isxdl.dll stdcall';
[Setup]

18
dist/inno/scripts/lang/english.iss vendored Normal file
View File

@ -0,0 +1,18 @@
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
[CustomMessages]
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
en.lcid=1033
en.depdownload_msg=The following applications are required before setup can continue:%n%n%1%nDownload and install now?
en.depdownload_memo_title=Download dependencies
en.depinstall_memo_title=Install dependencies
en.depinstall_title=Installing dependencies
en.depinstall_description=Please wait while Setup installs dependencies on your computer.
en.depinstall_status=Installing %1...
en.depinstall_missing=%1 must be installed before setup can continue. Please install %1 and run Setup again.
en.depinstall_error=An error occured while installing the dependencies. Please restart the computer and run the setup again or install the following dependencies manually:%n
en.isxdl_langfile=
[Files]

18
dist/inno/scripts/lang/italian.iss vendored Normal file
View File

@ -0,0 +1,18 @@
[Languages]
Name: "it"; MessagesFile: "compiler:Default.isl"
[CustomMessages]
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
en.lcid=1033
en.depdownload_msg=Le seguenti applicazioni sono necessarie per poter continuare l'installazione:%n%n%1%nScaricare ed installa ora?
en.depdownload_memo_title=Scarica dipendenze
en.depinstall_memo_title=Installa dipendenze
en.depinstall_title=Installazione dipendenze
en.depinstall_description=Attendere che l'installazione installi le dipendenze sul computer.
en.depinstall_status=Installazione %1...
en.depinstall_missing=%1 deve essere installato prima che l'installazione possa continuare. Installa %1 ed esegui nuovamente il programma di installazione.
en.depinstall_error=Si è verificato un errore durante l'installazione delle dipendenze. Riavviare il computer ed eseguire nuovamente l'installazione o installare manualmente le seguenti dipendenze: %n
it.isxdl_langfile=
[Files]

6
dist/inno/scripts/products.iss vendored Normal file
View File

@ -0,0 +1,6 @@
#include "isxdl\isxdl.iss"
[Code]
#include "products.pas"
[Setup]

329
dist/inno/scripts/products.pas vendored Normal file
View File

@ -0,0 +1,329 @@
{
--- TYPES AND VARIABLES ---
}
type
TProduct = record
File: String;
Title: String;
Parameters: String;
ForceSuccess : boolean;
InstallClean : boolean;
MustRebootAfter : boolean;
end;
InstallResult = (InstallSuccessful, InstallRebootRequired, InstallError);
var
installMemo, downloadMessage: string;
products: array of TProduct;
delayedReboot, isForcedX86: boolean;
DependencyPage: TOutputProgressWizardPage;
procedure AddProduct(filename, parameters, title, size, url: string; forceSuccess, installClean, mustRebootAfter : boolean);
{
Adds a product to the list of products to download.
Parameters:
filename: the file name under which to save the file
parameters: the parameters with which to run the file
title: the product title
size: the file size
url: the URL to download from
forceSuccess: whether to continue in case of setup failure
installClean: whether the product needs a reboot before installing
mustRebootAfter: whether the product needs a reboot after installing
}
var
path: string;
i: Integer;
begin
installMemo := installMemo + '%1' + title + #13;
path := ExpandConstant('{src}{\}') + CustomMessage('DependenciesDir') + '\' + filename;
if not FileExists(path) then begin
path := ExpandConstant('{tmp}{\}') + filename;
if not FileExists(path) then begin
isxdl_AddFile(url, path);
downloadMessage := downloadMessage + '%1' + title + ' (' + size + ')' + #13;
end;
end;
i := GetArrayLength(products);
SetArrayLength(products, i + 1);
products[i].File := path;
products[i].Title := title;
products[i].Parameters := parameters;
products[i].ForceSuccess := forceSuccess;
products[i].InstallClean := installClean;
products[i].MustRebootAfter := mustRebootAfter;
end;
function SmartExec(product : TProduct; var resultcode : Integer): boolean;
{
Executes a product and returns the exit code.
Parameters:
product: the product to install
resultcode: the exit code
}
begin
if (LowerCase(Copy(product.File, Length(product.File) - 2, 3)) = 'exe') then begin
Result := Exec(product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode);
end else begin
Result := ShellExec('', product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode);
end;
end;
function PendingReboot: boolean;
{
Checks whether the machine has a pending reboot.
}
var names: String;
begin
if (RegQueryMultiStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager', 'PendingFileRenameOperations', names)) then begin
Result := true;
end else if ((RegQueryMultiStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager', 'SetupExecute', names)) and (names <> '')) then begin
Result := true;
end else begin
Result := false;
end;
end;
function InstallProducts: InstallResult;
{
Installs the downloaded products
}
var
resultCode, i, productCount, finishCount: Integer;
begin
Result := InstallSuccessful;
productCount := GetArrayLength(products);
if productCount > 0 then begin
DependencyPage := CreateOutputProgressPage(CustomMessage('depinstall_title'), CustomMessage('depinstall_description'));
DependencyPage.Show;
for i := 0 to productCount - 1 do begin
if (products[i].InstallClean and (delayedReboot or PendingReboot())) then begin
Result := InstallRebootRequired;
break;
end;
DependencyPage.SetText(FmtMessage(CustomMessage('depinstall_status'), [products[i].Title]), '');
DependencyPage.SetProgress(i, productCount);
while true do begin
// set 0 as used code for shown error if SmartExec fails
resultCode := 0;
if SmartExec(products[i], resultCode) then begin
// setup executed; resultCode contains the exit code
if (products[i].MustRebootAfter) then begin
// delay reboot after install if we installed the last dependency anyways
if (i = productCount - 1) then begin
delayedReboot := true;
end else begin
Result := InstallRebootRequired;
end;
break;
end else if (resultCode = 0) or (products[i].ForceSuccess) then begin
finishCount := finishCount + 1;
break;
end else if (resultCode = 3010) then begin
// Windows Installer resultCode 3010: ERROR_SUCCESS_REBOOT_REQUIRED
delayedReboot := true;
finishCount := finishCount + 1;
break;
end;
end;
case MsgBox(FmtMessage(SetupMessage(msgErrorFunctionFailed), [products[i].Title, IntToStr(resultCode)]), mbError, MB_ABORTRETRYIGNORE) of
IDABORT: begin
Result := InstallError;
break;
end;
IDIGNORE: begin
break;
end;
end;
end;
if Result <> InstallSuccessful then begin
break;
end;
end;
// only leave not installed products for error message
for i := 0 to productCount - finishCount - 1 do begin
products[i] := products[i+finishCount];
end;
SetArrayLength(products, productCount - finishCount);
DependencyPage.Hide;
end;
end;
{
--------------------
INNO EVENT FUNCTIONS
--------------------
}
function PrepareToInstall(var NeedsRestart: boolean): String;
{
Before the "preparing to install" page.
See: http://www.jrsoftware.org/ishelp/index.php?topic=scriptevents
}
var
i: Integer;
s: string;
begin
delayedReboot := false;
case InstallProducts() of
InstallError: begin
s := CustomMessage('depinstall_error');
for i := 0 to GetArrayLength(products) - 1 do begin
s := s + #13 + ' ' + products[i].Title;
end;
Result := s;
end;
InstallRebootRequired: begin
Result := products[0].Title;
NeedsRestart := true;
// write into the registry that the installer needs to be executed again after restart
RegWriteStringValue(HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce', 'InstallBootstrap', ExpandConstant('{srcexe}'));
end;
end;
end;
function NeedRestart : boolean;
{
Checks whether a restart is needed at the end of install
See: http://www.jrsoftware.org/ishelp/index.php?topic=scriptevents
}
begin
Result := delayedReboot;
end;
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
{
Just before the "ready" page.
See: http://www.jrsoftware.org/ishelp/index.php?topic=scriptevents
}
var
s: string;
begin
if downloadMessage <> '' then
s := s + CustomMessage('depdownload_memo_title') + ':' + NewLine + FmtMessage(downloadMessage, [Space]) + NewLine;
if installMemo <> '' then
s := s + CustomMessage('depinstall_memo_title') + ':' + NewLine + FmtMessage(installMemo, [Space]) + NewLine;
if MemoDirInfo <> '' then
s := s + MemoDirInfo + NewLine + NewLine;
if MemoGroupInfo <> '' then
s := s + MemoGroupInfo + NewLine + NewLine;
if MemoTasksInfo <> '' then
s := s + MemoTasksInfo;
Result := s
end;
function NextButtonClick(CurPageID: Integer): boolean;
{
At each "next" button click
See: http://www.jrsoftware.org/ishelp/index.php?topic=scriptevents
}
begin
Result := true;
if CurPageID = wpReady then begin
if downloadMessage <> '' then begin
// change isxdl language only if it is not english because isxdl default language is already english
if (ActiveLanguage() <> 'en') then begin
ExtractTemporaryFile(CustomMessage('isxdl_langfile'));
isxdl_SetOption('language', ExpandConstant('{tmp}{\}') + CustomMessage('isxdl_langfile'));
end;
//isxdl_SetOption('title', FmtMessage(SetupMessage(msgSetupWindowTitle), [CustomMessage('appname')]));
//if SuppressibleMsgBox(FmtMessage(CustomMessage('depdownload_msg'), [FmtMessage(downloadMessage, [''])]), mbConfirmation, MB_YESNO, IDYES) = IDNO then
// Result := false
//else if
if isxdl_DownloadFiles(StrToInt(ExpandConstant('{wizardhwnd}'))) = 0 then
Result := false;
end;
end;
end;
{
-----------------------------
ARCHITECTURE HELPER FUNCTIONS
-----------------------------
}
function IsX86: boolean;
{
Gets whether the computer is x86 (32 bits).
}
begin
Result := isForcedX86 or (ProcessorArchitecture = paX86) or (ProcessorArchitecture = paUnknown);
end;
function IsX64: boolean;
{
Gets whether the computer is x64 (64 bits).
}
begin
Result := (not isForcedX86) and Is64BitInstallMode and (ProcessorArchitecture = paX64);
end;
function IsIA64: boolean;
{
Gets whether the computer is IA64 (Itanium 64 bits).
}
begin
Result := (not isForcedX86) and Is64BitInstallMode and (ProcessorArchitecture = paIA64);
end;
function GetString(x86, x64, ia64: String): String;
{
Gets a string depending on the computer architecture.
Parameters:
x86: the string if the computer is x86
x64: the string if the computer is x64
ia64: the string if the computer is IA64
}
begin
if IsX64() and (x64 <> '') then begin
Result := x64;
end else if IsIA64() and (ia64 <> '') then begin
Result := ia64;
end else begin
Result := x86;
end;
end;
function GetArchitectureString(): String;
{
Gets the "standard" architecture suffix string.
Returns either _x64, _ia64 or nothing.
}
begin
if IsX64() then begin
Result := '_x64';
end else if IsIA64() then begin
Result := '_ia64';
end else begin
Result := '';
end;
end;
procedure SetForceX86(value: boolean);
{
Forces the setup to use X86 products
}
begin
isForcedX86 := value;
end;

View File

@ -0,0 +1,49 @@
[Code]
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
type
INSTALLSTATE = Longint;
const
INSTALLSTATE_INVALIDARG = -2; // An invalid parameter was passed to the function.
INSTALLSTATE_UNKNOWN = -1; // The product is neither advertised or installed.
INSTALLSTATE_ADVERTISED = 1; // The product is advertised but not installed.
INSTALLSTATE_ABSENT = 2; // The product is installed for a different user.
INSTALLSTATE_DEFAULT = 5; // The product is installed for the current user.
function MsiQueryProductState(szProduct: string): INSTALLSTATE;
external 'MsiQueryProductState{#AW}@msi.dll stdcall';
function MsiEnumRelatedProducts(szUpgradeCode: string; nReserved: dword; nIndex: dword; szProductCode: string): integer;
external 'MsiEnumRelatedProducts{#AW}@msi.dll stdcall';
function MsiGetProductInfo(szProductCode: string; szProperty: string; szValue: string; var nvalueSize: dword): integer;
external 'MsiGetProductInfo{#AW}@msi.dll stdcall';
function msiproduct(productID: string): boolean;
begin
Result := MsiQueryProductState(productID) = INSTALLSTATE_DEFAULT;
end;
function msiproductupgrade(upgradeCode: string; minVersion: string): boolean;
var
productCode, version: string;
valueSize: dword;
begin
SetLength(productCode, 39);
Result := false;
if (MsiEnumRelatedProducts(upgradeCode, 0, 0, productCode) = 0) then begin
SetLength(version, 39);
valueSize := Length(version);
if (MsiGetProductInfo(productCode, 'VersionString', version, valueSize) = 0) then begin
Result := compareversion(version, minVersion) >= 0;
end;
end;
end;
[Setup]

View File

@ -0,0 +1,62 @@
[Code]
function stringtoversion(var temp: String): Integer;
var
part: String;
pos1: Integer;
begin
if (Length(temp) = 0) then begin
Result := -1;
Exit;
end;
pos1 := Pos('.', temp);
if (pos1 = 0) then begin
Result := StrToInt(temp);
temp := '';
end else begin
part := Copy(temp, 1, pos1 - 1);
temp := Copy(temp, pos1 + 1, Length(temp));
Result := StrToInt(part);
end;
end;
function compareinnerversion(var x, y: String): Integer;
var
num1, num2: Integer;
begin
num1 := stringtoversion(x);
num2 := stringtoversion(y);
if (num1 = -1) and (num2 = -1) then begin
Result := 0;
Exit;
end;
if (num1 < 0) then begin
num1 := 0;
end;
if (num2 < 0) then begin
num2 := 0;
end;
if (num1 < num2) then begin
Result := -1;
end else if (num1 > num2) then begin
Result := 1;
end else begin
Result := compareinnerversion(x, y);
end;
end;
function compareversion(versionA, versionB: String): Integer;
var
temp1, temp2: String;
begin
temp1 := versionA;
temp2 := versionB;
Result := compareinnerversion(temp1, temp2);
end;
[Setup]

View File

@ -0,0 +1,32 @@
; requires Windows 10, Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2003 Service Pack 2, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Vista Service Pack 2, Windows XP Service Pack 3
; http://www.visualstudio.com/en-us/downloads/
[CustomMessages]
vcredist2017_title=Visual C++ 2017 Redistributable
vcredist2017_title_x64=Visual C++ 2017 64-Bit Redistributable
vcredist2017_size=13.7 MB
vcredist2017_size_x64=14.5 MB
[Code]
const
vcredist2017_url = 'http://download.microsoft.com/download/1/f/e/1febbdb2-aded-4e14-9063-39fb17e88444/vc_redist.x86.exe';
vcredist2017_url_x64 = 'http://download.microsoft.com/download/3/b/f/3bf6e759-c555-4595-8973-86b7b4312927/vc_redist.x64.exe';
vcredist2017_upgradecode = '{65E5BD06-6392-3027-8C26-853107D3CF1A}';
vcredist2017_upgradecode_x64 = '{36F68A90-239C-34DF-B58C-64B30153CE35}';
procedure vcredist2017(minVersion: string);
begin
if (not IsIA64()) then begin
if (not msiproductupgrade(GetString(vcredist2017_upgradecode, vcredist2017_upgradecode_x64, ''), minVersion)) then
AddProduct('vcredist2017' + GetArchitectureString() + '.exe',
'/passive /norestart',
CustomMessage('vcredist2017_title' + GetArchitectureString()),
CustomMessage('vcredist2017_size' + GetArchitectureString()),
GetString(vcredist2017_url, vcredist2017_url_x64, ''),
false, false, false);
end;
end;
[Setup]

View File

@ -0,0 +1,49 @@
[Code]
var
WindowsVersion: TWindowsVersion;
procedure initwinversion();
begin
GetWindowsVersionEx(WindowsVersion);
end;
function exactwinversion(MajorVersion, MinorVersion: integer): boolean;
begin
Result := (WindowsVersion.Major = MajorVersion) and (WindowsVersion.Minor = MinorVersion);
end;
function minwinversion(MajorVersion, MinorVersion: integer): boolean;
begin
Result := (WindowsVersion.Major > MajorVersion) or ((WindowsVersion.Major = MajorVersion) and (WindowsVersion.Minor >= MinorVersion));
end;
function maxwinversion(MajorVersion, MinorVersion: integer): boolean;
begin
Result := (WindowsVersion.Major < MajorVersion) or ((WindowsVersion.Major = MajorVersion) and (WindowsVersion.Minor <= MinorVersion));
end;
function exactwinspversion(MajorVersion, MinorVersion, SpVersion: integer): boolean;
begin
if exactwinversion(MajorVersion, MinorVersion) then
Result := WindowsVersion.ServicePackMajor = SpVersion
else
Result := true;
end;
function minwinspversion(MajorVersion, MinorVersion, SpVersion: integer): boolean;
begin
if exactwinversion(MajorVersion, MinorVersion) then
Result := WindowsVersion.ServicePackMajor >= SpVersion
else
Result := true;
end;
function maxwinspversion(MajorVersion, MinorVersion, SpVersion: integer): boolean;
begin
if exactwinversion(MajorVersion, MinorVersion) then
Result := WindowsVersion.ServicePackMajor <= SpVersion
else
Result := true;
end;
[Setup]

View File

@ -4,29 +4,33 @@
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>Synergy</string>
<string>Barrier</string>
<key>CFBundleExecutable</key>
<string>synergy</string>
<string>barrier</string>
<key>CFBundleIconFile</key>
<string>Synergy.icns</string>
<string>Barrier.icns</string>
<key>CFBundleIdentifier</key>
<string>synergy</string>
<string>barrier</string>
<!-- TODO: Fix this in v2.0 //-->
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Synergy</string>
<string>Barrier</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>SYN1</string>
<key>CFBundleShortVersionString</key>
<string>@SYNERGY_VERSION@</string>
<string>@BARRIER_VERSION@</string>
<key>CFBundleVersion</key>
<string>@SYNERGY_VERSION@</string>
<string>@BARRIER_VERSION@</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
<key>NSHumanReadableCopyright</key>
<string>© 2012-2016, Symless Ltd</string>
<string>© 2018 Debauchee Open Source Group</string>
<key>LSMinimumSystemVersion</key>
<string>10.9.0</string>
<string>10.12.0</string>
</dict>
</plist>

Binary file not shown.

73
dist/macos/bundle/build_dist.sh.in vendored Executable file
View File

@ -0,0 +1,73 @@
#!/bin/sh
# Use the same verbose variable as CMake
[ "$VERBOSE" = "1" ] && set -x
# Exit on unset variables or pipe errors
set -uo pipefail
B_MACOS="Barrier.app/Contents/MacOS"
B_VERSION="@BARRIER_VERSION@"
B_BINDIR="@CMAKE_RUNTIME_OUTPUT_DIRECTORY@"
B_BUILDTYPE="@CMAKE_BUILD_TYPE@"
B_BARRIERC="Barrier.app/Contents/MacOS/barrierc"
B_BARRIERS="Barrier.app/Contents/MacOS/barriers"
# Colorized output
info() { tput bold; echo "$@"; tput sgr0 ; }
error() { tput bold; tput setaf 1; echo "$@"; tput sgr0 ; }
success() { tput bold; tput setaf 2; echo "$@"; tput sgr0 ; }
warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
info "Checking for bundle contents"
if [ ! -d "Barrier.app/Contents" ]; then
error "Please make sure that the build completed successfully"
error "before trying to create the installer."
exit 1
fi
if [ -d "$B_MACOS" ]; then
info "Removing old binaries from bundle"
rm -r "$B_MACOS"
fi
info "Copying binaries into bundle"
# Copy the folder instead of globbing unquoted path
cp -r "$B_BINDIR" "$B_MACOS" || exit 1
# Check for macdeployqt on MacPorts
if which -s port ; then
info "MacPorts found, searching for macdeployqt"
DEPLOYQT="$(port contents qt5-qttools | grep --only --max-count 1 '/.*macdeployqt')"
if [ ! -x "$DEPLOYQT" ]; then
error "Please install package qt5-qttools"
exit 1
fi
fi
# Check for macdeployqt on Homebrew
if which -s brew ; then
info "Homebrew found, searching for macdeployqt"
DEPLOYQT="$(brew list qt@5 | grep --only '/.*macdeployqt' | head -1)"
if [ ! -x "$DEPLOYQT" ]; then
error "Please install package qt"
exit 1
fi
fi
# Use macdeployqt to include libraries and create dmg
if [ "$B_BUILDTYPE" = "Release" ]; then
info "Building Release disk image (dmg)"
"$DEPLOYQT" Barrier.app -dmg \
-executable="$B_BARRIERC" \
-executable="$B_BARRIERS" || exit 1
mv "Barrier.dmg" "Barrier-$B_VERSION.dmg" || exit 1
success "Created Barrier-$B_VERSION.dmg"
else
warn "Disk image (dmg) only created for Release builds"
info "Building debug bundle"
"$DEPLOYQT" Barrier.app -no-strip \
-executable="$B_BARRIERC" \
-executable="$B_BARRIERS" || exit 1
success "Bundle created successfully"
fi

83
dist/macos/bundle/build_installer.sh.in vendored Executable file
View File

@ -0,0 +1,83 @@
#!/bin/sh
# add warning for users running manually
warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
warn "The scripts build_installer.sh and reref_dylibs.sh have been deprecated."
warn "Please use build_dist.sh instead to deploy using macdeployqt"
# change this to rename the installer package
B_DMG="Barrier-@BARRIER_VERSION@.dmg"
cd "$( dirname "$0" )"
OWNDIR="$( pwd )"
B_REREF_SCRIPT="$OWNDIR/reref_dylibs.sh"
if [ ! -x "$B_REREF_SCRIPT" ]; then
echo "Missing script: $B_REREF_SCRIPT"
exit 1
fi
# remove any old copies so there's no confusion about whether this
# process completes successfully or not
rm -rf temp.dmg "$B_DMG"
cd Barrier.app/Contents 2>/dev/null
if [ $? -ne 0 ]; then
echo "Please make sure that the build completed successfully"
echo "before trying to create the installer."
exit 1
fi
# MacOS folder holds the executables, non-system libraries,
# and the startup script
rm -rf MacOS
mkdir MacOS || exit 1
cd MacOS || exit 1
# copy all executables
cp @CMAKE_RUNTIME_OUTPUT_DIRECTORY@/* . || exit 1
# copy the qt platform plugin
# TODO: this is hacky and will probably break if there is more than one qt
# version installed. need a better way to find this library
B_COCOA=$(find /usr/local/Cellar/qt -type f -name libqcocoa.dylib | head -1)
if [ "x$B_COCOA" = "x" ]; then
B_COCOA=$(find /opt/local/libexec/qt5/plugins -type f -name libqcocoa.dylib | head -1)
fi
if [ "x$B_COCOA" = "x" ]; then
echo "Could not find cocoa platform plugin"
exit 1
fi
mkdir platforms
cp $B_COCOA platforms/ || exit 1
# make sure we can r/w all these binaries
chmod -R u+rw * || exit 1
# only one executable (barrier) needs non-system libraries although it's
# libraries can call each other. use a recursive script to handle the
# re-referencing
$B_REREF_SCRIPT barrier || exit 1
# the cocoa platform plugin also needs to know where to find the qt libraries.
# because it exists in a subdirectory we append ../ to the relative path of the
# libraries in its metadata
$B_REREF_SCRIPT platforms/libqcocoa.dylib ../ || exit 1
echo "Barrier.app created successfully"
# sanity check so we don't distribute a dmg with debug symbols
if [ "@CMAKE_BUILD_TYPE@" != "Release" ]; then
echo "dmg only created for Release builds"
exit 1
fi
# create the DMG to be distributed in build/bundle
cd ../../..
hdiutil create -size 64m -fs HFS+ -volname "Barrier" temp.dmg || exit 1
hdiutil attach temp.dmg -mountpoint mnt || exit 1
cp -r Barrier.app mnt/ || exit 1
hdiutil detach mnt || exit 1
hdiutil convert temp.dmg -format UDZO -o "$B_DMG" || exit 1
rm temp.dmg
echo "dmg $B_DMG created successfully"

49
dist/macos/bundle/reref_dylibs.sh vendored Executable file
View File

@ -0,0 +1,49 @@
#!/bin/sh
# $1 = binary (program or dylib)
B_TARGET=$1
if [ "x$B_TARGET" = "x" ]; then
# add warning for users running manually
warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
warn "The scripts build_installer.sh and reref_dylibs.sh have been deprecated."
warn "Please use build_dist.sh instead to deploy using macdeployqt"
echo "Which binary needs to be re-referenced?"
exit 1
fi
cd "$(dirname "$B_TARGET")" || exit 1
# where to find non-system libraries relative to target's directory.
# the vast majority of the time this should be empty
B_REL_PATH=$2
# we're in target's directory now. trim off the path
B_TARGET=$(basename "$B_TARGET")
# get a list of non-system libraries and make local copies
B_LIBS=$(otool -XL "$B_TARGET" | awk '{ print $1 }' | grep -Ev '^(/usr/lib|/System)')
[ $? -ne 0 ] && exit 1
for B_LIB in $B_LIBS; do
B_LIB_NAME=$(basename "$B_LIB")
# otool reports barrier as "barrier:" which fails self-reference test below
B_LIB_NAME=${B_LIB_NAME//:}
# ignore self-references
[ "$B_TARGET" = "$B_LIB_NAME" ] && continue
B_DST=${B_REL_PATH}${B_LIB_NAME}
if [ ! -e "$B_DST" ]; then
cp "$B_LIB" "$B_DST" || exit 1
chmod u+rw "$B_DST" || exit 1
# recursively call this script on libraries purposefully not passing
# $B_REL_PATH so that it is only used explicitly
$0 "$B_DST"
fi
# adjust the target's metadata to point to the local copy
# rather than the system-wide copy which would only exist on
# a development machine
install_name_tool -change "$B_LIB" "@loader_path/$B_DST" "$B_TARGET" || exit 1
done

105
dist/rpm/barrier.spec.in vendored Normal file
View File

@ -0,0 +1,105 @@
%global barrier_revision @BARRIER_REVISION@
Summary: Keyboard and mouse sharing solution
Name: barrier
Version: @BARRIER_VERSION@
Release: @BARRIER_BUILD_NUMBER@%{?dist}
License: GPLv2
Group: System Environment/Daemons
URL: https://github.com/debauchee/barrier
Source0: https://github.com/debauchee/barrier/archive/v%{version}.tar.gz
BuildRequires: cmake3
BuildRequires: avahi-compat-libdns_sd-devel
BuildRequires: libX11-devel
BuildRequires: libXtst-devel
BuildRequires: qt5-qtbase-devel
BuildRequires: libcurl-devel
BuildRequires: desktop-file-utils
BuildRequires: openssl-devel
%description
Barrier allows you to share one mouse and keyboard between multiple computers.
Work seamlessly across Windows, macOS and Linux.
%prep
%setup -q -n %{name}-%{version}
%build
%{cmake3} -DSYNERGY_VERSION_STAGE:STRING=@BARRIER_VERSION_STAGE@ -DSYNERGY_REVISION:STRING=%{barrier_revision} .
make %{?_smp_mflags}
%install
install -D -p -m 0755 bin/barrier %{buildroot}%{_bindir}/barrier
install -D -p -m 0755 bin/barrierc %{buildroot}%{_bindir}/barrierc
install -D -p -m 0755 bin/barriers %{buildroot}%{_bindir}/barriers
install -D -p -m 0644 doc/barrierc.1 %{buildroot}%{_mandir}/man1/barrierc.1
install -D -p -m 0644 doc/barriers.1 %{buildroot}%{_mandir}/man1/barriers.1
install -D -p -m 0644 res/barrier.desktop %{buildroot}%{_datadir}/applications/barrier.desktop
install -D -p -m 0644 res/barrier.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/barrier.svg
cd %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/metainfo
## Write AppStream
cat <<END> %{buildroot}%{_datadir}/metainfo/%{name}.appdata.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2018 Ding-Yi Chen <dchen@redhat.com> -->
<component type="desktop-application">
<id>%{name}</id>
<metadata_license>FSFAP</metadata_license>
<project_license>GPLv2</project_license>
<name>barrier</name>
<summary>Share mouse and keyboard between multiple computers over the network</summary>
<description>
<p>
Barrier allows you to share one mouse and keyboard between multiple computers.
Work seamlessly across Windows, macOS and Linux.
</p>
</description>
<launchable type="desktop-id">%{name}.desktop</launchable>
<url type="homepage">https://github.com/debauchee/barrier</url>
<provides>
<binary>barrier</binary>
<binary>barrierc</binary>
<binary>barriers</binary>
</provides>
<releases>
<release version="%{version}" date="2019-03-21" />
</releases>
</component>
END
desktop-file-install --delete-original \
--dir %{buildroot}%{_datadir}/applications \
--set-icon=%{_datadir}/icons/hicolor/scalable/apps/barrier.svg \
%{buildroot}%{_datadir}/applications/barrier.desktop
desktop-file-validate %{buildroot}/%{_datadir}/applications/barrier.desktop
%files
# None of the documentation files are actually useful here, they all point to
# the online website, so include just one, the README
%doc LICENSE ChangeLog res/Readme.txt doc/barrier.conf.example*
%{_bindir}/barrier
%{_bindir}/barrierc
%{_bindir}/barriers
%{_datadir}/icons/hicolor/scalable/apps/barrier.svg
%{_datadir}/applications/barrier.desktop
%{_datadir}/metainfo/%{name}.appdata.xml
%{_mandir}/man1/barrierc.1*
%{_mandir}/man1/barriers.1*
%changelog
* Thu Mar 21 2019 wendall911 <wendallc@83864.com>
- Actual working spec file for Fedora
* Sat Jan 27 2018 Debauchee <todo@mail.com>
- Initial version of the package

View File

@ -1,27 +0,0 @@
Name: synergy
Version: @SYNERGY_VERSION@
Summary: Keyboard and mouse sharing solution
Group: Applications/Productivity
URL: https://symless.com/synergy
Source: https://symless.com/synergy/downloads
Vendor: Symless
Packager: Symless <engineering@symless.com>
License: GPLv2
Release: @SYNERGY_BUILD_NUMBER@@SYNERGY_SNAPSHOT_INFO@%{?dist}
%description
Synergy allows you to share one mouse and keyboard between multiple computers.
Work seamlessly across Windows, macOS and Linux.
%files
%defattr(755,root,root,-)
%{_bindir}/synergy
%{_bindir}/synergyc
%{_bindir}/synergys
%{_bindir}/syntool
%attr(644,-,-) %{_datarootdir}/applications/synergy.desktop
%attr(644,-,-) %{_datarootdir}/icons/hicolor/scalable/apps/synergy.svg
%changelog
* Wed Apr 26 2017 Symless <engineering@symless.com>
- Initial version of the package

View File

@ -2,7 +2,7 @@
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Synergy", "Synergy.wixproj", "{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}"
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Barrier", "Barrier.wixproj", "{D4BA9F39-6A35-4C8F-9CB2-67FCBE5CAB17}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@ -4,7 +4,7 @@
<ProductVersion>3.10</ProductVersion>
<ProjectGuid>{d4ba9f39-6a35-4c8f-9cb2-67fcbe5cab17}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>Synergy</OutputName>
<OutputName>Barrier</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Include>
<?define Name="Synergy" ?>
<?define Version="@SYNERGY_VERSION@" ?>
<?define QtVersion="5.9.3" ?> <!-- TODO: Configure this externally //-->
<?define Author="Symless Ltd" ?>
<?define Name="Barrier" ?>
<?define Version="@BARRIER_WIX_VERSION@" ?>
<?define QtVersion="@QT_VERSION@" ?>
<?define Author="Debauchee Open Source Group" ?>
<?define BinPath="@CMAKE_RUNTIME_OUTPUT_DIRECTORY@/$(var.Configuration)" ?>
<?define ResPath="@CMAKE_CURRENT_SOURCE_DIR@/res" ?>
<?define ExtPath="@CMAKE_CURRENT_SOURCE_DIR@/ext" ?>
@ -11,19 +11,15 @@
<?define ProgramFilesFolder="ProgramFiles64Folder" ?>
<?define PlatformSimpleName="64-bit" ?>
<?define UpgradeGuid="E8A4FA54-14B9-4FD1-8E00-7BC46555FDA0" ?>
<?define QtPath="C:\Qt\$(var.QtVersion)\msvc2015_64" ?>
<?define QtPath="@CMAKE_PREFIX_PATH@" ?>
<?else ?>
<?define ProgramFilesFolder="ProgramFilesFolder" ?>
<?define PlatformSimpleName="32-bit" ?>
<?define UpgradeGuid="BE0B9FD8-45E2-4A8E-A0D8-1F774D074A78" ?>
<?define QtPath="C:\Qt\$(var.QtVersion)\msvc2015" ?>
<?define QtPath="@CMAKE_PREFIX_PATH@" ?>
<?endif ?>
<?define QtBinPath="$(var.QtPath)\bin" ?>
<?define QtPlatformPath="$(var.QtPath)\plugins\platforms" ?>
<?define OpenSSLPath="$(var.ExtPath)\openssl\windows\$(var.Platform)" ?>
<?define OpenSSLBinPath="$(var.OpenSSLPath)\bin" ?>
<?if $(var.Configuration) = "Debug" ?>
<?define DebugCRT="$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC140_DebugCRT_$(var.Platform).msm" ?>
<?endif ?>
<?define CRT="$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC140_CRT_$(var.Platform).msm" ?>
</Include>

50
dist/wix/Product.wxs vendored
View File

@ -12,37 +12,25 @@
</Upgrade>
<Feature Id="ProductFeature" Title="$(var.Name)">
<ComponentGroupRef Id="ProductComponents"/>
<ComponentGroupRef Id="OpenSSLComponents"/>
<ComponentGroupRef Id="ProductQtPluginComponents"/>
<MergeRef Id="CRT"/>
<?if $(var.Configuration) = "Debug" ?>
<MergeRef Id="DebugCRT"/>
<?endif ?>
<ComponentRef Id="RegistryEntries"/>
</Feature>
<DirectoryRef Id="TARGETDIR">
<Component Guid="7CF3564D-1F8E-4D3D-9781-E1EE22D5BD67" Id="RegistryEntries">
<RegistryKey ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes" Key="Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" Root="HKLM">
<RegistryValue Name="[INSTALLFOLDER]synergys.exe" Type="string" Value="~ HIGHDPIAWARE WIN7RTM"/>
<RegistryValue Name="[INSTALLFOLDER]barriers.exe" Type="string" Value="~ HIGHDPIAWARE WIN7RTM"/>
</RegistryKey>
<!-- Windows 8 and later only -->
<Condition><![CDATA[Installed OR (VersionNT >= 602)]]></Condition>
</Component>
</DirectoryRef>
<Icon Id="synergy.ico" SourceFile="$(var.ResPath)/synergy.ico"/>
<Icon Id="barrier.ico" SourceFile="$(var.ResPath)/barrier.ico"/>
<WixVariable Id="WixUILicenseRtf" Value="$(var.ResPath)\License.rtf"/>
<WixVariable Id="WixUIBannerBmp" Value="$(var.ResPath)\banner.bmp"/>
<WixVariable Id="WixUIDialogBmp" Value="$(var.ResPath)\dialog.bmp"/>
<Property Id="ARPPRODUCTICON" Value="synergy.ico"/>
<Property Id="ARPPRODUCTICON" Value="barrier.ico"/>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER"/>
<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable"/>
<Property Id="LEGACY_UNINSTALL_EXISTS">
<RegistrySearch Id="LegacyRegistrySearch" Key="SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Synergy" Name="UninstallString" Root="HKLM" Type="file" Win64="no">
<FileSearch Id="LegacyFileSearch" Name="uninstall.exe"/>
</RegistrySearch>
</Property>
<Condition Message="An existing installation of $(var.Name) was detected, please uninstall it before continuing.">NOT LEGACY_UNINSTALL_EXISTS
</Condition>
<CustomAction ExeCommand="" FileKey="GuiProgram" Id="StartGui" Return="asyncNoWait"/>
<UI>
<Publish Control="Finish" Dialog="ExitDialog" Event="DoAction" Value="StartGui">NOT Installed</Publish>
@ -52,10 +40,6 @@
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="$(var.ProgramFilesFolder)">
<Directory Id="INSTALLFOLDER" Name="$(var.Name)">
<Merge DiskId="1" Id="CRT" Language="0" SourceFile="$(var.CRT)"/>
<?if $(var.Configuration) = "Debug" ?>
<Merge DiskId="1" Id="DebugCRT" Language="0" SourceFile="$(var.DebugCRT)"/>
<?endif ?>
<Directory Id="OpenSSLDir" Name="OpenSSL"/>
<Directory Id="PlatformsDir" Name="Platforms"/>
</Directory>
@ -66,23 +50,23 @@
<Fragment>
<ComponentGroup Directory="INSTALLFOLDER" Id="ProductComponents">
<Component Guid="EC9AD3B0-277C-4157-B5C8-5FD5B6A5F4AD" Id="Core">
<File KeyPath="yes" Source="$(var.BinPath)/synergyd.exe"/>
<ServiceInstall Description="Controls the $(var.Name) foreground processes." DisplayName="$(var.Name)" ErrorControl="normal" Id="ServiceInstall" Name="Synergy" Start="auto" Type="ownProcess">
<File KeyPath="yes" Source="$(var.BinPath)/barrierd.exe"/>
<ServiceInstall Description="Controls the $(var.Name) foreground processes." DisplayName="$(var.Name)" ErrorControl="normal" Id="ServiceInstall" Name="Barrier" Start="auto" Type="ownProcess">
<util:ServiceConfig FirstFailureActionType="restart" ResetPeriodInDays="1" RestartServiceDelayInSeconds="1" SecondFailureActionType="restart" ThirdFailureActionType="restart"/>
</ServiceInstall>
<ServiceControl Id="ServiceControl" Name="Synergy" Remove="uninstall" Start="install" Stop="both"/>
<File Source="$(var.BinPath)/synergys.exe">
<ServiceControl Id="ServiceControl" Name="Barrier" Remove="uninstall" Start="install" Stop="both"/>
<File Source="$(var.BinPath)/barriers.exe">
<fire:FirewallException Id="ServerFirewallException" IgnoreFailure="yes" Name="$(var.Name)" Scope="any"/>
</File>
<File Source="$(var.BinPath)/synergyc.exe"/>
<File Source="$(var.BinPath)/syntool.exe"/>
<File Source="$(var.BinPath)/synwinhk.dll"/>
<File Source="$(var.BinPath)/barrierc.exe"/>
<File Source="$(var.OpenSSLBinPath)/libeay32.dll"/>
<File Source="$(var.OpenSSLBinPath)/ssleay32.dll"/>
<File Source="$(var.OpenSSLBinPath)/openssl.exe"/>
<File Source="$(var.ResPath)/openssl/barrier.conf"/>
</Component>
<Component Guid="BAC8149B-6287-45BF-9C27-43D71ED40214" Id="Gui">
<File Id="GuiProgram" KeyPath="yes" Source="$(var.BinPath)/synergy.exe">
<Shortcut Advertise="yes" Directory="ProgramMenuFolder" Icon="synergy.ico" Id="GuiShortcut" Name="$(var.Name)"/>
<File Id="GuiProgram" KeyPath="yes" Source="$(var.BinPath)/barrier.exe">
<Shortcut Advertise="yes" Directory="ProgramMenuFolder" Icon="barrier.ico" Id="GuiShortcut" Name="$(var.Name)"/>
<fire:FirewallException Id="GuiFirewallException" IgnoreFailure="yes" Name="$(var.Name)" Scope="any"/>
</File>
<?if $(var.Configuration) = "Debug" ?>
@ -115,13 +99,5 @@
<?endif ?>
</Component>
</ComponentGroup>
<ComponentGroup Directory="OpenSSLDir" Id="OpenSSLComponents">
<Component Guid="92648F77-65A6-4B16-AC59-A1F37BD341B1" Id="OpenSSL">
<File Id="OpenSSLDll1" Source="$(var.OpenSSLBinPath)/libeay32.dll"/>
<File Id="OpenSSLDll2" Source="$(var.OpenSSLBinPath)/ssleay32.dll"/>
<File Source="$(var.OpenSSLBinPath)/openssl.exe"/>
<File Source="$(var.ResPath)/openssl/synergy.conf"/>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
</Wix>

7
doc/MacReadme.txt Executable file → Normal file
View File

@ -5,14 +5,11 @@ To install on Mac OS X with the .zip distribution (first seen in 1.3.6) you must
1. Extract the zip file to any location (usually double click will do this)
2. Open Terminal, and cd to the extracted directory (e.g. /Users/my-name/Downloads/extracted-dir/)
3. Copy the binaries to /usr/bin using: sudo cp synergy* /usr/bin
4. Correct the permissions and ownership: sudo chown root:wheel /usr/bin/synergy*; sudo chmod 555 /usr/bin/synergy*
3. Copy the binaries to /usr/bin using: sudo cp barrier* /usr/bin
4. Correct the permissions and ownership: sudo chown root:wheel /usr/bin/barrier*; sudo chmod 555 /usr/bin/barrier*
Alternatively, you can copy the binaries as root. How to enable the root user in Mac OS X:
http://support.apple.com/en-us/ht1528
Once the binaries have been copied to /usr/bin, you should follow the configuration guide:
http://synergy2.sourceforge.net/configuration.html
If you have any problems, see the [[Support]] page:
http://symless.com/help/

View File

@ -1,234 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorCodeStyle>
<!-- Written by QtCreator 3.0.1, 2014-02-14T09:50:24. -->
<qtcreator>
<data>
<variable>CodeStyleData</variable>
<valuemap type="QVariantMap">
<value type="bool" key="AlignAssignments">false</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="bool" key="BindStarToIdentifier">true</value>
<value type="bool" key="BindStarToLeftSpecifier">false</value>
<value type="bool" key="BindStarToRightSpecifier">false</value>
<value type="bool" key="BindStarToTypeName">false</value>
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">false</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="int" key="IndentSize">4</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">false</value>
<value type="int" key="PaddingMode">2</value>
<value type="bool" key="SpacesForTabs">false</value>
<value type="int" key="TabSize">4</value>
</valuemap>
</data>
<data>
<variable>DisplayName</variable>
<value type="QString">Synergy</value>
</data>
</qtcreator>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorCodeStyle>
<!-- Written by QtCreator 3.0.1, 2014-02-14T09:50:24. -->
<qtcreator>
<data>
<variable>CodeStyleData</variable>
<valuemap type="QVariantMap">
<value type="bool" key="AlignAssignments">false</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="bool" key="BindStarToIdentifier">true</value>
<value type="bool" key="BindStarToLeftSpecifier">false</value>
<value type="bool" key="BindStarToRightSpecifier">false</value>
<value type="bool" key="BindStarToTypeName">false</value>
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">false</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="int" key="IndentSize">4</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">false</value>
<value type="int" key="PaddingMode">2</value>
<value type="bool" key="SpacesForTabs">false</value>
<value type="int" key="TabSize">4</value>
</valuemap>
</data>
<data>
<variable>DisplayName</variable>
<value type="QString">Synergy</value>
</data>
</qtcreator>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorCodeStyle>
<!-- Written by QtCreator 3.0.1, 2014-02-14T09:50:24. -->
<qtcreator>
<data>
<variable>CodeStyleData</variable>
<valuemap type="QVariantMap">
<value type="bool" key="AlignAssignments">false</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="bool" key="BindStarToIdentifier">true</value>
<value type="bool" key="BindStarToLeftSpecifier">false</value>
<value type="bool" key="BindStarToRightSpecifier">false</value>
<value type="bool" key="BindStarToTypeName">false</value>
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">false</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="int" key="IndentSize">4</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">false</value>
<value type="int" key="PaddingMode">2</value>
<value type="bool" key="SpacesForTabs">false</value>
<value type="int" key="TabSize">4</value>
</valuemap>
</data>
<data>
<variable>DisplayName</variable>
<value type="QString">Synergy</value>
</data>
</qtcreator>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorCodeStyle>
<!-- Written by QtCreator 3.0.1, 2014-02-14T09:50:24. -->
<qtcreator>
<data>
<variable>CodeStyleData</variable>
<valuemap type="QVariantMap">
<value type="bool" key="AlignAssignments">false</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="bool" key="BindStarToIdentifier">true</value>
<value type="bool" key="BindStarToLeftSpecifier">false</value>
<value type="bool" key="BindStarToRightSpecifier">false</value>
<value type="bool" key="BindStarToTypeName">false</value>
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">false</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="int" key="IndentSize">4</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">false</value>
<value type="int" key="PaddingMode">2</value>
<value type="bool" key="SpacesForTabs">false</value>
<value type="int" key="TabSize">4</value>
</valuemap>
</data>
<data>
<variable>DisplayName</variable>
<value type="QString">Synergy</value>
</data>
</qtcreator>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorCodeStyle>
<!-- Written by QtCreator 3.0.1, 2014-02-14T09:50:24. -->
<qtcreator>
<data>
<variable>CodeStyleData</variable>
<valuemap type="QVariantMap">
<value type="bool" key="AlignAssignments">false</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="bool" key="BindStarToIdentifier">true</value>
<value type="bool" key="BindStarToLeftSpecifier">false</value>
<value type="bool" key="BindStarToRightSpecifier">false</value>
<value type="bool" key="BindStarToTypeName">false</value>
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">false</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="int" key="IndentSize">4</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">false</value>
<value type="int" key="PaddingMode">2</value>
<value type="bool" key="SpacesForTabs">false</value>
<value type="int" key="TabSize">4</value>
</valuemap>
</data>
<data>
<variable>DisplayName</variable>
<value type="QString">Synergy</value>
</data>
</qtcreator>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorCodeStyle>
<!-- Written by QtCreator 3.0.1, 2014-02-14T09:50:24. -->
<qtcreator>
<data>
<variable>CodeStyleData</variable>
<valuemap type="QVariantMap">
<value type="bool" key="AlignAssignments">false</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="bool" key="BindStarToIdentifier">true</value>
<value type="bool" key="BindStarToLeftSpecifier">false</value>
<value type="bool" key="BindStarToRightSpecifier">false</value>
<value type="bool" key="BindStarToTypeName">false</value>
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">false</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="int" key="IndentSize">4</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">false</value>
<value type="int" key="PaddingMode">2</value>
<value type="bool" key="SpacesForTabs">false</value>
<value type="int" key="TabSize">4</value>
</valuemap>
</data>
<data>
<variable>DisplayName</variable>
<value type="QString">Synergy</value>
</data>
</qtcreator>

10
doc/UpdateManpages.txt Normal file
View File

@ -0,0 +1,10 @@
To recreate the generated part of barrierc manpage use a command like:
help2man -N --output=barrierc.1 --name='Barrier Keyboard/Mouse Client' /path/to/barrierc
And for barriers:
help2man -N --output=barriers.1 --name='Barrier Keyboard/Mouse Server' /path/to/barriers
After that manually fixup:
* replace your home directory with $HOME in barriers.1
* revert formatting of FILES and COPYRIGHT sections to match formatting of existing version.
* add note referencing this file for instructions to the first line.

View File

@ -1,4 +1,4 @@
# sample synergy configuration file
# sample barrier configuration file
#
# comments begin with the # character and continue to the end of
# line. comments may appear anywhere the syntax permits.

View File

@ -1,4 +1,4 @@
# sample synergy configuration file
# sample barrier configuration file
#
# comments begin with the # character and continue to the end of
# line. comments may appear anywhere the syntax permits.
@ -47,9 +47,9 @@ section: links
end
# The aliases section is to map the full names of the computers to their logical names used in the screens section
# One way to find the actual name of a comptuer is to run hostname from a command window
# One way to find the actual name of a computer is to run hostname from a command window
section: aliases
# Laptop is actually known as John-Smiths-MacBook-3.local
desktop2:
John-Smiths-MacBook-3.local
John-Smiths-MacBook-3.local:
desktop2
end

View File

@ -0,0 +1,17 @@
# barebones barrier.conf example
# for two computers side by side
# replace screen.name.server and screen.name.client with your screen names from gui
# there's a 50/50 chance you'll want to swap left and right
# save this as barrier.conf in your home folder and "Use existing configuration" on server
section: screens
screen.name.server:
screen.name.client:
end
section: links
screen.name.server:
left = screen.name.client
screen.name.client:
right = screen.name.server
end

View File

@ -1,4 +1,4 @@
# sample synergy configuration file
# sample barrier configuration file
#
# comments begin with the # character and continue to the end of
# line. comments may appear anywhere the syntax permits.
@ -34,6 +34,6 @@ end
section: aliases
# The "real" name of iMac is John-Smiths-iMac-3.local. If we wanted we could remove this alias and instead use John-Smiths-iMac-3.local everywhere iMac is above. Hopefully it should be easy to see why using an alias is nicer
iMac:
John-Smiths-iMac-3.local
John-Smiths-iMac-3.local:
iMac
end

73
doc/barrierc.1 Normal file
View File

@ -0,0 +1,73 @@
.\" See UpdateManpages.txt about modification of this file. Most of it was generated by help2man 1.47.8.
.TH BARRIERC "1" "November 2019" "barrierc 2.4.0-release" "User Commands"
.SH NAME
barrierc \- Barrier Keyboard/Mouse Client
.SH SYNOPSIS
.B barrierc
[\fI\,--yscroll <delta>\/\fR] [\fI\,--display <display>\/\fR] [\fI\,--no-xinitthreads\/\fR] [\fI\,--daemon|--no-daemon\/\fR] [\fI\,--name <screen-name>\/\fR] [\fI\,--restart|--no-restart\/\fR] [\fI\,--debug <level>\/\fR] \fI\,<server-address>\/\fR
.SH DESCRIPTION
Start the barrier client and connect to a remote server component.
.SH OPTIONS
.TP
\fB\-d\fR, \fB\-\-debug\fR <level>
filter out log messages with priority below level.
level may be: FATAL, ERROR, WARNING, NOTE, INFO,
DEBUG, DEBUG1, DEBUG2.
.TP
\fB\-n\fR, \fB\-\-name\fR <screen\-name> use screen\-name instead the hostname to identify
this screen in the configuration.
.TP
\fB\-1\fR, \fB\-\-no\-restart\fR
do not try to restart on failure.
.TP
\fB\-\-restart\fR
restart the server automatically if it fails. (*)
.TP
\fB\-l\fR \fB\-\-log\fR <file>
write log messages to file.
.TP
\fB\-\-no\-tray\fR
disable the system tray icon.
.TP
\fB\-\-enable\-drag\-drop\fR
enable file drag & drop.
.TP
\fB\-\-enable\-crypto\fR
enable the crypto (ssl) plugin.
.TP
\fB\-\-display\fR <display>
connect to the X server at <display>
.TP
\fB\-\-no\-xinitthreads\fR
do not call XInitThreads()
.TP
\fB\-f\fR, \fB\-\-no\-daemon\fR
run in the foreground.
.TP
\fB\-\-daemon\fR
run as a daemon. (*)
.TP
\fB\-\-yscroll\fR <delta>
defines the vertical scrolling delta, which is
120 by default.
.TP
\fB\-h\fR, \fB\-\-help\fR
display this help and exit.
.TP
\fB\-\-version\fR
display version information and exit.
.PP
Default options are marked with a *
.PP
The server address is of the form: [<hostname>][:<port>]. The hostname
must be the address or hostname of the server. Placing brackets around
an IPv6 address is required when also specifying a port number and
optional otherwise. The default port number is 24800.
.SH COPYRIGHT
Copyright \(co 2018 Debauchee Open Source Group
.br
Copyright \(co 2012\-2016 Symless Ltd.
.br
Copyright \(co 2008\-2014 Nick Bolton
.br
Copyright \(co 2002\-2014 Chris Schoeneman

87
doc/barriers.1 Normal file
View File

@ -0,0 +1,87 @@
.\" See UpdateManpages.txt about modification of this file. Most of it was generated by help2man 1.47.8.
.TH BARRIERS "1" "November 2019" "barriers 2.4.0-release" "User Commands"
.SH NAME
barriers \- Barrier Keyboard/Mouse Server
.SH SYNOPSIS
.B barriers
[\fI\,--address <address>\/\fR] [\fI\,--config <pathname>\/\fR] [\fI\,--display <display>\/\fR] [\fI\,--no-xinitthreads\/\fR] [\fI\,--daemon|--no-daemon\/\fR] [\fI\,--name <screen-name>\/\fR] [\fI\,--restart|--no-restart\/\fR] [\fI\,--debug <level>\/\fR]
.SH DESCRIPTION
Start the barrier server component.
.SH OPTIONS
.TP
\fB\-a\fR, \fB\-\-address\fR <address>
listen for clients on the given address.
.TP
\fB\-c\fR, \fB\-\-config\fR <pathname>
use the named configuration file instead.
.TP
\fB\-d\fR, \fB\-\-debug\fR <level>
filter out log messages with priority below level.
level may be: FATAL, ERROR, WARNING, NOTE, INFO,
DEBUG, DEBUG1, DEBUG2.
.TP
\fB\-n\fR, \fB\-\-name\fR <screen\-name> use screen\-name instead the hostname to identify
this screen in the configuration.
.TP
\fB\-1\fR, \fB\-\-no\-restart\fR
do not try to restart on failure.
.TP
\fB\-\-restart\fR
restart the server automatically if it fails. (*)
.TP
\fB\-l\fR \fB\-\-log\fR <file>
write log messages to file.
.TP
\fB\-\-no\-tray\fR
disable the system tray icon.
.TP
\fB\-\-enable\-drag\-drop\fR
enable file drag & drop.
.TP
\fB\-\-enable\-crypto\fR
enable the crypto (ssl) plugin.
.TP
\fB\-\-display\fR <display>
connect to the X server at <display>
.TP
\fB\-\-no\-xinitthreads\fR
do not call XInitThreads()
.TP
\fB\-\-screen\-change\-script\fR <path>
full path to script to run on screen change
first argument is the new screen name
.TP
\fB\-f\fR, \fB\-\-no\-daemon\fR
run in the foreground.
.TP
\fB\-\-daemon\fR
run as a daemon. (*)
.TP
\fB\-h\fR, \fB\-\-help\fR
display this help and exit.
.TP
\fB\-\-version\fR
display version information and exit.
.PP
Default options are marked with a *
.PP
The argument for \fB\-\-address\fR is of the form: [<hostname>][:<port>]. The
hostname must be the address or hostname of an interface on the system.
Placing brackets around an IPv6 address is required when also specifying
a port number and optional otherwise. The default is to listen on all
interfaces using port number 24800.
.SH FILES
If no configuration file pathname is provided then the first of the
following to load successfully sets the configuration:
.IP
.I $HOME/.local/share/barrier/.barrier.conf
.br
.I /etc/barrier.conf
.SH COPYRIGHT
Copyright \(co 2018 Debauchee Open Source Group
.br
Copyright \(co 2012\-2016 Symless Ltd.
.br
Copyright \(co 2008\-2014 Nick Bolton
.br
Copyright \(co 2002\-2014 Chris Schoeneman

View File

@ -0,0 +1 @@
Corrected macOS packaging to provide a better error message when a user attempts to launch Barrier on an incompatible macOS version. (https://github.com/debauchee/barrier/issues/1260).

View File

@ -0,0 +1 @@
Updated FAQs in project README.md with more detail on OS support and links to issues for infrequent users. (https://github.com/debauchee/barrier/issues/1260).

View File

@ -0,0 +1,13 @@
This is the directory for release note fragments processed by
[towncrier](https://github.com/hawkowl/towncrier).
When making a user-visible change create a file in this directory and it will be automatically be
included into the release note document when the next release is published.
The file extension specifies the type of a change. The following are currently supported:
- .feature: a new feature.
- .bugfix: a bug fix.
- .security: a fix for security issue.
- .doc: a documentation improvement.
- .removal: a deprecation or removal of functionality.

View File

@ -0,0 +1,2 @@
Fix wrong encoding for text copied between Linux and Windows
(https://github.com/debauchee/barrier/issues/1037, https://github.com/debauchee/barrier/issues/1137).

View File

@ -0,0 +1 @@
Fixed build on GCC 11.2 (https://github.com/debauchee/barrier/issues/1366).

View File

@ -0,0 +1,2 @@
Updated Japanese translation.
Add and translate strings that are not in gui.ts. Minor string adjustment, Fix wrong or duplicate shortcut keys.

View File

@ -0,0 +1 @@
Fixed FAQ link to Linux drag and drop issue.

View File

@ -0,0 +1 @@
Fixed a regression in 2.4.0 that caused Barrier to not support scaling other than 100% (https://github.com/debauchee/barrier/issues/1462).

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start barrier client automatically. Make sure you change the IP below. -->
<dict>
<key>Label</key>
<string>org.debauchee.com.barrierc.plist</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/barrierc</string>
<!-- Replace this IP with the IP of your barriers server -->
<string>192.168.0.2</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

View File

@ -2,19 +2,19 @@
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start synergy server automatically. Make sure you change configuration file below -->
<!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start barrier server automatically. Make sure you change configuration file below -->
<dict>
<key>Label</key>
<string>org.symless.com.synergys.plist</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/synergys</string>
<key>Label</key>
<string>org.debauchee.com.barriers.plist</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/barriers</string>
<string>--no-daemon</string>
<string>--config</string>
<!-- Replace this path with the path to your synergy configuration -->
<string>/Users/snorp/.synergy.conf</string>
<!-- Replace this path with the path to your barrier configuration -->
<string>/Users/snorp/.barrier.conf</string>
</array>
<key>RunAtLoad</key>
<true/>

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start synergy client automatically. Make sure you change the IP below. -->
<dict>
<key>Label</key>
<string>org.symless.com.synergyc.plist</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/synergyc</string>
<!-- Replace this IP with the IP of your synergys server -->
<string>192.168.0.2</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,98 @@
Release notes
=============
[comment]: <> (towncrier release notes start)
Barrier `2.4.0` ( `2021-11-01` )
================================
Security fixes
--------------
- Barrier now supports client identity verification (fixes CVE-2021-42072, CVE-2021-42073).
Previously a malicious client could connect to Barrier server without any authentication and
send application-level messages. This made the attack surface of Barrier significantly larger.
Additionally, in case the malicious client got possession of a valid screen name by brute forcing
or other means it could modify the clipboard contents of the server.
To support seamless upgrades from older versions of Barrier this is currently disabled by default.
The feature can be enabled in the settings dialog. If enabled, older clients of Barrier will be
rejected.
- Barrier now uses SHA256 fingerprints for establishing security of encrypted SSL connections.
After upgrading client to new version the existing server fingerprint will need to be approved
again. Client and server will show both SHA1 and SHA256 server fingerprints to allow
interoperability with older versions of Barrier.
All of the above security issues have been reported by Matthias Gerstner who was really helpful
resolving them.
Bug fixes
---------
- Fixed build failure on mips*el and riscv64 architecture.
- Fixed reading of configuration on Windows when the paths contain non-ASCII characters
(https://github.com/debauchee/barrier/issues/976, https://github.com/debauchee/barrier/issues/974,
https://github.com/debauchee/barrier/issues/444).
- Barrier no longer uses openssl CLI tool for any operations and hooks into the openssl library directly.
- More X11 clipboard MIME types have been mapped to corresponding converters (https://github.com/debauchee/barrier/issues/344).
- Fixed setup of multiple actions associated with a hotkey.
- Fixed setup of hotkeys with special characters such as comma and semicolon
(https://github.com/debauchee/barrier/issues/778).
- Fixed transfer of non-ASCII characters coming from a Windows server in certain cases
(https://github.com/debauchee/barrier/issues/527).
- Barrier will now regenerate server certificate if it's invalid instead of failing to launch
(https://github.com/debauchee/barrier/issues/802)
- Added support for additional keys on Sun Microsystems USB keyboards
(https://github.com/debauchee/barrier/issues/784).
- Updated Chinese translation.
- Updated Slovak translation.
- Theme icons are now preferred to icons distributed together with Barrier
(https://github.com/debauchee/barrier/issues/471).
- Fixed incorrect setup of Barrier service path on Windows.
Features
--------
- Added `--drop-target` option that improves drag and drop support on Windows when Barrier is
being run as a portable app.
- The `--enable-crypto` command line option has been made the default to reduce chances of
accidental security mishaps when configuring Barrier from command line.
A new `--disable-crypto` command line option has been added to explicitly disable encryption.
- Added support for randomart images for easier comparison of SSL certificate fingerprints.
The algorithm is identical to what OpenSSH uses.
- Implemented a configuration option for Server GUI auto-start.
- Made it possible to use keyboard instead of mouse to modify screen layout.
- Added support for keyboard backlight media keys
- Added support for Eisu_toggle and Muhenkan keys
- Added `--profile-dir` option that allows to select custom profile directory.
Barrier `2.3.4` ( `2021-11-01` )
================================
Security fixes
--------------
- Barrier will now correctly close connections when the app-level handshake fails (fixes CVE-2021-42075).
Previously repeated failing connections would leak file descriptors leading to Barrier being unable
to receive new connections from clients.
- Barrier will now enforce a maximum length of input messages (fixes CVE-2021-42076).
Previously it was possible for a malicious client or server to send excessive length messages
leading to denial of service by resource exhaustion.
- Fixed a bug which caused Barrier to crash when disconnecting a TCP session just after sending
Hello message (fixes CVE-2021-42074).
This bug allowed an unauthenticated attacker to crash Barrier with only network access.
All of the above security issues have been reported by Matthias Gerstner who was really helpful
resolving them.
Bug fixes
---------
- Fixed a bug in SSL implementation that caused invalid data occasionally being sent to clients
under heavy load.

View File

@ -0,0 +1,37 @@
{% for section, _ in sections|dictsort(by='key') %}
{% set underline = "-" %}
{% if section %}
{{section}}
{{ underline * section|length }}{% set underline = "-" %}
{% endif %}
{% if sections[section] %}
{% for category, val in definitions|dictsort if category in sections[section]%}
{{ definitions[category]['name'] }}
{{ underline * definitions[category]['name']|length }}
{% if definitions[category]['showcontent'] %}
{% for text, values in sections[section][category]|dictsort(by='value') %}
- {{ text }}
{% endfor %}
{% else %}
- {{ sections[section][category]['']|sort|join(', ') }}
{% endif %}
{% if sections[section][category]|length == 0 %}
No significant changes.
{% else %}
{% endif %}
{% endfor %}
{% else %}
No significant changes.
{% endif %}
{% endfor %}

View File

@ -1,47 +0,0 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.38.2.
.TH SYNERGYC "1" "June 2010" "synergyc 1.5.0, protocol version 1.3" "User Commands"
.SH NAME
synergyc \- manual page for synergyc 1.5.0, protocol version 1.3
.SH SYNOPSIS
.B synergyc
[\fI--yscroll <delta>\fR] [\fI--daemon|--no-daemon\fR] [\fI--name <screen-name>\fR] [\fI--restart|--no-restart\fR] [\fI--debug <level>\fR] \fI<server-address>\fR
.SH DESCRIPTION
Connect to a synergy mouse/keyboard sharing server.
.TP
\fB\-d\fR, \fB\-\-debug\fR <level>
filter out log messages with priority below level.
level may be: FATAL, ERROR, WARNING, NOTE, INFO,
DEBUG, DEBUGn (1\-5).
.TP
\fB\-n\fR, \fB\-\-name\fR <screen\-name> use screen\-name instead the hostname to identify
this screen in the configuration.
.TP
\fB\-1\fR, \fB\-\-no\-restart\fR
do not try to restart on failure.
.PP
* \fB\-\-restart\fR restart the server automatically if it fails.
.TP
\fB\-l\fR \fB\-\-log\fR <file>
write log messages to file.
.TP
\fB\-f\fR, \fB\-\-no\-daemon\fR
run in the foreground.
.PP
* \fB\-\-daemon\fR run as a daemon.
.TP
\fB\-\-yscroll\fR <delta>
defines the vertical scrolling delta, which is
.TP
\fB\-h\fR, \fB\-\-help\fR
display this help and exit.
.TP
\fB\-\-version\fR
display version information and exit.
.PP
* marks defaults.
.PP
The server address is of the form: [<hostname>][:<port>]. The hostname
must be the address or hostname of the server. The port overrides the
default port, 24800.
.SH COPYRIGHT
Copyright \(co 2010 Chris Schoeneman, Nick Bolton, Sorin Sbarnea

View File

@ -1,57 +0,0 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.38.2.
.TH SYNERGYS "1" "June 2010" "synergys 1.5.0, protocol version 1.3" "User Commands"
.SH NAME
synergys \- manual page for synergys 1.5.0, protocol version 1.3
.SH SYNOPSIS
.B synergys
[\fI--address <address>\fR] [\fI--config <pathname>\fR] [\fI--daemon|--no-daemon\fR] [\fI--name <screen-name>\fR] [\fI--restart|--no-restart\fR] [\fI--debug <level>\fR]
.SH DESCRIPTION
Start the synergy mouse/keyboard sharing server.
.TP
\fB\-a\fR, \fB\-\-address\fR <address>
listen for clients on the given address.
.TP
\fB\-c\fR, \fB\-\-config\fR <pathname>
use the named configuration file instead.
.TP
\fB\-d\fR, \fB\-\-debug\fR <level>
filter out log messages with priority below level.
level may be: FATAL, ERROR, WARNING, NOTE, INFO,
DEBUG, DEBUGn (1\-5).
.TP
\fB\-n\fR, \fB\-\-name\fR <screen\-name> use screen\-name instead the hostname to identify
this screen in the configuration.
.TP
\fB\-1\fR, \fB\-\-no\-restart\fR
do not try to restart on failure.
.PP
* \fB\-\-restart\fR restart the server automatically if it fails.
.TP
\fB\-l\fR \fB\-\-log\fR <file>
write log messages to file.
.TP
\fB\-f\fR, \fB\-\-no\-daemon\fR
run in the foreground.
.PP
* \fB\-\-daemon\fR run as a daemon.
.TP
\fB\-h\fR, \fB\-\-help\fR
display this help and exit.
.TP
\fB\-\-version\fR
display version information and exit.
.PP
* marks defaults.
.PP
The argument for \fB\-\-address\fR is of the form: [<hostname>][:<port>]. The
hostname must be the address or hostname of an interface on the system.
The default is to listen on all interfaces. The port overrides the
default port, 24800.
.PP
If no configuration file pathname is provided then the first of the
following to load successfully sets the configuration:
.IP
$HOME/.synergy.conf
/etc/synergy.conf
.SH COPYRIGHT
Copyright \(co 2010 Chris Schoeneman, Nick Bolton, Sorin Sbarnea

1
ext/gmock Submodule

@ -0,0 +1 @@
Subproject commit 7d33fee11ec480beae4c28ad09ca56d974140a72

View File

@ -1,92 +0,0 @@
Changes for 1.6.0:
* Compilation is much faster and uses much less memory, especially
when the constructor and destructor of a mock class are moved out of
the class body.
* New matchers: Pointwise(), Each().
* New actions: ReturnPointee() and ReturnRefOfCopy().
* CMake support.
* Project files for Visual Studio 2010.
* AllOf() and AnyOf() can handle up-to 10 arguments now.
* Google Mock doctor understands Clang error messages now.
* SetArgPointee<> now accepts string literals.
* gmock_gen.py handles storage specifier macros and template return
types now.
* Compatibility fixes.
* Bug fixes and implementation clean-ups.
* Potentially incompatible changes: disables the harmful 'make install'
command in autotools.
Potentially breaking changes:
* The description string for MATCHER*() changes from Python-style
interpolation to an ordinary C++ string expression.
* SetArgumentPointee is deprecated in favor of SetArgPointee.
* Some non-essential project files for Visual Studio 2005 are removed.
Changes for 1.5.0:
* New feature: Google Mock can be safely used in multi-threaded tests
on platforms having pthreads.
* New feature: function for printing a value of arbitrary type.
* New feature: function ExplainMatchResult() for easy definition of
composite matchers.
* The new matcher API lets user-defined matchers generate custom
explanations more directly and efficiently.
* Better failure messages all around.
* NotNull() and IsNull() now work with smart pointers.
* Field() and Property() now work when the matcher argument is a pointer
passed by reference.
* Regular expression matchers on all platforms.
* Added GCC 4.0 support for Google Mock Doctor.
* Added gmock_all_test.cc for compiling most Google Mock tests
in a single file.
* Significantly cleaned up compiler warnings.
* Bug fixes, better test coverage, and implementation clean-ups.
Potentially breaking changes:
* Custom matchers defined using MatcherInterface or MakePolymorphicMatcher()
need to be updated after upgrading to Google Mock 1.5.0; matchers defined
using MATCHER or MATCHER_P* aren't affected.
* Dropped support for 'make install'.
Changes for 1.4.0 (we skipped 1.2.* and 1.3.* to match the version of
Google Test):
* Works in more environments: Symbian and minGW, Visual C++ 7.1.
* Lighter weight: comes with our own implementation of TR1 tuple (no
more dependency on Boost!).
* New feature: --gmock_catch_leaked_mocks for detecting leaked mocks.
* New feature: ACTION_TEMPLATE for defining templatized actions.
* New feature: the .After() clause for specifying expectation order.
* New feature: the .With() clause for for specifying inter-argument
constraints.
* New feature: actions ReturnArg<k>(), ReturnNew<T>(...), and
DeleteArg<k>().
* New feature: matchers Key(), Pair(), Args<...>(), AllArgs(), IsNull(),
and Contains().
* New feature: utility class MockFunction<F>, useful for checkpoints, etc.
* New feature: functions Value(x, m) and SafeMatcherCast<T>(m).
* New feature: copying a mock object is rejected at compile time.
* New feature: a script for fusing all Google Mock and Google Test
source files for easy deployment.
* Improved the Google Mock doctor to diagnose more diseases.
* Improved the Google Mock generator script.
* Compatibility fixes for Mac OS X and gcc.
* Bug fixes and implementation clean-ups.
Changes for 1.1.0:
* New feature: ability to use Google Mock with any testing framework.
* New feature: macros for easily defining new matchers
* New feature: macros for easily defining new actions.
* New feature: more container matchers.
* New feature: actions for accessing function arguments and throwing
exceptions.
* Improved the Google Mock doctor script for diagnosing compiler errors.
* Bug fixes and implementation clean-ups.
Changes for 1.0.0:
* Initial Open Source release of Google Mock

View File

@ -1,151 +0,0 @@
########################################################################
# CMake build script for Google Mock.
#
# To run the tests for Google Mock itself on Linux, use 'make test' or
# ctest. You can select which tests to run using 'ctest -R regex'.
# For more options, run 'ctest --help'.
# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
# make it prominent in the GUI.
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
# Forces BUILD_SHARED_LIBS to OFF as Google Mock currently does not support
# working in a DLL.
# TODO(vladl@google.com): Implement building gMock as a DLL.
set(BUILD_SHARED_LIBS OFF)
option(gmock_build_tests "Build all of Google Mock's own tests." OFF)
# A directory to find Google Test sources.
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt")
set(gtest_dir gtest)
else()
set(gtest_dir ../gtest)
endif()
# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
include("${gtest_dir}/cmake/hermetic_build.cmake" OPTIONAL)
if (COMMAND pre_project_set_up_hermetic_build)
# Google Test also calls hermetic setup functions from add_subdirectory,
# although its changes will not affect things at the current scope.
pre_project_set_up_hermetic_build()
endif()
########################################################################
#
# Project-wide settings
# Name of the project.
#
# CMake files in this project can refer to the root source directory
# as ${gmock_SOURCE_DIR} and to the root binary directory as
# ${gmock_BINARY_DIR}.
# Language "C" is required for find_package(Threads).
project(gmock CXX C)
cmake_minimum_required(VERSION 2.6.2)
if (COMMAND set_up_hermetic_build)
set_up_hermetic_build()
endif()
# Instructs CMake to process Google Test's CMakeLists.txt and add its
# targets to the current scope. We are placing Google Test's binary
# directory in a subdirectory of our own as VC compilation may break
# if they are the same (the default).
add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/gtest")
# Although Google Test's CMakeLists.txt calls this function, the
# changes there don't affect the current scope. Therefore we have to
# call it again here.
config_compiler_and_linker() # from ${gtest_dir}/cmake/internal_utils.cmake
# Adds Google Mock's and Google Test's header directories to the search path.
include_directories("${gmock_SOURCE_DIR}/include"
"${gmock_SOURCE_DIR}"
"${gtest_SOURCE_DIR}/include"
# This directory is needed to build directly from Google
# Test sources.
"${gtest_SOURCE_DIR}")
########################################################################
#
# Defines the gmock & gmock_main libraries. User tests should link
# with one of them.
# Google Mock libraries. We build them using more strict warnings than what
# are used for other targets, to ensure that Google Mock can be compiled by
# a user aggressive about warnings.
cxx_library(gmock "${cxx_strict}" src/gmock-all.cc)
target_link_libraries(gmock gtest)
cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc)
target_link_libraries(gmock_main gmock)
########################################################################
#
# Google Mock's own tests.
#
# You can skip this section if you aren't interested in testing
# Google Mock itself.
#
# The tests are not built by default. To build them, set the
# gmock_build_tests option to ON. You can do it by running ccmake
# or specifying the -Dgmock_build_tests=ON flag when running cmake.
if (gmock_build_tests)
# This must be set in the root directory for the tests to be run by
# 'make test' or ctest.
enable_testing()
############################################################
# C++ tests built with standard compiler flags.
cxx_test(gmock-actions_test gmock_main)
cxx_test(gmock-cardinalities_test gmock_main)
cxx_test(gmock-generated-actions_test gmock_main)
cxx_test(gmock-generated-function-mockers_test gmock_main)
cxx_test(gmock-generated-internal-utils_test gmock_main)
cxx_test(gmock-generated-matchers_test gmock_main)
cxx_test(gmock-internal-utils_test gmock_main)
cxx_test(gmock-matchers_test gmock_main)
cxx_test(gmock-more-actions_test gmock_main)
cxx_test(gmock-nice-strict_test gmock_main)
cxx_test(gmock-port_test gmock_main)
cxx_test(gmock-spec-builders_test gmock_main)
cxx_test(gmock_link_test gmock_main test/gmock_link2_test.cc)
# cxx_test(gmock_stress_test gmock)
cxx_test(gmock_test gmock_main)
# gmock_all_test is commented to save time building and running tests.
# Uncomment if necessary.
# cxx_test(gmock_all_test gmock_main)
############################################################
# C++ tests built with non-standard compiler flags.
cxx_library(gmock_main_no_exception "${cxx_no_exception}"
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}"
gmock_main_no_exception test/gmock-more-actions_test.cc)
cxx_test_with_flags(gmock_no_rtti_test "${cxx_no_rtti}"
gmock_main_no_rtti test/gmock-spec-builders_test.cc)
cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
############################################################
# Python tests.
cxx_executable(gmock_leak_test_ test gmock_main)
py_test(gmock_leak_test)
cxx_executable(gmock_output_test_ test gmock)
py_test(gmock_output_test)
endif()

View File

@ -1,40 +0,0 @@
# This file contains a list of people who've made non-trivial
# contribution to the Google C++ Mocking Framework project. People
# who commit code to the project are encouraged to add their names
# here. Please keep the list sorted by first names.
Benoit Sigoure <tsuna@google.com>
Bogdan Piloca <boo@google.com>
Chandler Carruth <chandlerc@google.com>
Dave MacLachlan <dmaclach@gmail.com>
David Anderson <danderson@google.com>
Dean Sturtevant
Gene Volovich <gv@cite.com>
Hal Burch <gmock@hburch.com>
Jeffrey Yasskin <jyasskin@google.com>
Jim Keller <jimkeller@google.com>
Joe Walnes <joe@truemesh.com>
Jon Wray <jwray@google.com>
Keir Mierle <mierle@gmail.com>
Keith Ray <keith.ray@gmail.com>
Kostya Serebryany <kcc@google.com>
Lev Makhlis
Manuel Klimek <klimek@google.com>
Mario Tanev <radix@google.com>
Mark Paskin
Markus Heule <markus.heule@gmail.com>
Matthew Simmons <simmonmt@acm.org>
Mike Bland <mbland@google.com>
Neal Norwitz <nnorwitz@gmail.com>
Nermin Ozkiranartli <nermin@google.com>
Owen Carlsen <ocarlsen@google.com>
Paneendra Ba <paneendra@google.com>
Paul Menage <menage@google.com>
Piotr Kaminski <piotrk@google.com>
Russ Rufer <russ@pentad.com>
Sverre Sundsdal <sundsdal@gmail.com>
Takeshi Yoshino <tyoshino@google.com>
Vadim Berman <vadimb@google.com>
Vlad Losev <vladl@google.com>
Wolfgang Klier <wklier@google.com>
Zhanyong Wan <wan@google.com>

View File

@ -1,28 +0,0 @@
Copyright 2008, Google Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,209 +0,0 @@
# Automake file
# Nonstandard package files for distribution.
EXTRA_DIST =
# We may need to build our internally packaged gtest. If so, it will be
# included in the 'subdirs' variable.
SUBDIRS = $(subdirs)
# This is generated by the configure script, so clean it for distribution.
DISTCLEANFILES = scripts/gmock-config
# We define the global AM_CPPFLAGS as everything we compile includes from these
# directories.
AM_CPPFLAGS = $(GTEST_CPPFLAGS) -I$(srcdir)/include
# Modifies compiler and linker flags for pthreads compatibility.
if HAVE_PTHREADS
AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1
AM_LIBS = @PTHREAD_LIBS@
endif
# Build rules for libraries.
lib_LTLIBRARIES = lib/libgmock.la lib/libgmock_main.la
lib_libgmock_la_SOURCES = src/gmock-all.cc
pkginclude_HEADERS = \
include/gmock/gmock-actions.h \
include/gmock/gmock-cardinalities.h \
include/gmock/gmock-generated-actions.h \
include/gmock/gmock-generated-function-mockers.h \
include/gmock/gmock-generated-matchers.h \
include/gmock/gmock-generated-nice-strict.h \
include/gmock/gmock-matchers.h \
include/gmock/gmock-more-actions.h \
include/gmock/gmock-spec-builders.h \
include/gmock/gmock.h
pkginclude_internaldir = $(pkgincludedir)/internal
pkginclude_internal_HEADERS = \
include/gmock/internal/gmock-generated-internal-utils.h \
include/gmock/internal/gmock-internal-utils.h \
include/gmock/internal/gmock-port.h
lib_libgmock_main_la_SOURCES = src/gmock_main.cc
lib_libgmock_main_la_LIBADD = lib/libgmock.la
# Build rules for tests. Automake's naming for some of these variables isn't
# terribly obvious, so this is a brief reference:
#
# TESTS -- Programs run automatically by "make check"
# check_PROGRAMS -- Programs built by "make check" but not necessarily run
TESTS=
check_PROGRAMS=
AM_LDFLAGS = $(GTEST_LDFLAGS)
# This exercises all major components of Google Mock. It also
# verifies that libgmock works.
TESTS += test/gmock-spec-builders_test
check_PROGRAMS += test/gmock-spec-builders_test
test_gmock_spec_builders_test_SOURCES = test/gmock-spec-builders_test.cc
test_gmock_spec_builders_test_LDADD = $(GTEST_LIBS) lib/libgmock.la
# This tests using Google Mock in multiple translation units. It also
# verifies that libgmock_main and libgmock work.
TESTS += test/gmock_link_test
check_PROGRAMS += test/gmock_link_test
test_gmock_link_test_SOURCES = \
test/gmock_link2_test.cc \
test/gmock_link_test.cc \
test/gmock_link_test.h
test_gmock_link_test_LDADD = $(GTEST_LIBS) lib/libgmock_main.la lib/libgmock.la
# Tests that fused gmock files compile and work.
TESTS += test/gmock_fused_test
check_PROGRAMS += test/gmock_fused_test
test_gmock_fused_test_SOURCES = \
fused-src/gmock-gtest-all.cc \
fused-src/gmock/gmock.h \
fused-src/gmock_main.cc \
fused-src/gtest/gtest.h \
test/gmock_test.cc
test_gmock_fused_test_CPPFLAGS = -I"$(srcdir)/fused-src"
# Google Mock source files that we don't compile directly.
GMOCK_SOURCE_INGLUDES = \
src/gmock-cardinalities.cc \
src/gmock-internal-utils.cc \
src/gmock-matchers.cc \
src/gmock-spec-builders.cc \
src/gmock.cc
EXTRA_DIST += $(GMOCK_SOURCE_INGLUDES)
# C++ tests that we don't compile using autotools.
EXTRA_DIST += \
test/gmock-actions_test.cc \
test/gmock-cardinalities_test.cc \
test/gmock-generated-actions_test.cc \
test/gmock-generated-function-mockers_test.cc \
test/gmock-generated-internal-utils_test.cc \
test/gmock-generated-matchers_test.cc \
test/gmock-internal-utils_test.cc \
test/gmock-matchers_test.cc \
test/gmock-more-actions_test.cc \
test/gmock-nice-strict_test.cc \
test/gmock-port_test.cc \
test/gmock_all_test.cc
# Python tests, which we don't run using autotools.
EXTRA_DIST += \
test/gmock_leak_test.py \
test/gmock_leak_test_.cc \
test/gmock_output_test.py \
test/gmock_output_test_.cc \
test/gmock_output_test_golden.txt \
test/gmock_test_utils.py
# Nonstandard package files for distribution.
EXTRA_DIST += \
CHANGES \
CONTRIBUTORS \
make/Makefile
# Pump scripts for generating Google Mock headers.
# TODO(chandlerc@google.com): automate the generation of *.h from *.h.pump.
EXTRA_DIST += \
include/gmock/gmock-generated-actions.h.pump \
include/gmock/gmock-generated-function-mockers.h.pump \
include/gmock/gmock-generated-matchers.h.pump \
include/gmock/gmock-generated-nice-strict.h.pump \
include/gmock/internal/gmock-generated-internal-utils.h.pump
# Script for fusing Google Mock and Google Test source files.
EXTRA_DIST += scripts/fuse_gmock_files.py
# The Google Mock Generator tool from the cppclean project.
EXTRA_DIST += \
scripts/generator/COPYING \
scripts/generator/README \
scripts/generator/README.cppclean \
scripts/generator/cpp/__init__.py \
scripts/generator/cpp/ast.py \
scripts/generator/cpp/gmock_class.py \
scripts/generator/cpp/keywords.py \
scripts/generator/cpp/tokenize.py \
scripts/generator/cpp/utils.py \
scripts/generator/gmock_gen.py
# CMake scripts.
EXTRA_DIST += \
CMakeLists.txt
# Microsoft Visual Studio 2005 projects.
EXTRA_DIST += \
msvc/2005/gmock.sln \
msvc/2005/gmock.vcproj \
msvc/2005/gmock_config.vsprops \
msvc/2005/gmock_main.vcproj \
msvc/2005/gmock_test.vcproj
# Microsoft Visual Studio 2010 projects.
EXTRA_DIST += \
msvc/2010/gmock.sln \
msvc/2010/gmock.vcxproj \
msvc/2010/gmock_config.props \
msvc/2010/gmock_main.vcxproj \
msvc/2010/gmock_test.vcxproj
# gmock_test.cc does not really depend on files generated by the
# fused-gmock-internal rule. However, gmock_test.o does, and it is
# important to include test/gmock_test.cc as part of this rule in order to
# prevent compiling gmock_test.o until all dependent files have been
# generated.
$(test_gmock_fused_test_SOURCES): fused-gmock-internal
# TODO(vladl@google.com): Find a way to add Google Tests's sources here.
fused-gmock-internal: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \
$(lib_libgmock_la_SOURCES) $(GMOCK_SOURCE_INGLUDES) \
$(lib_libgmock_main_la_SOURCES) \
scripts/fuse_gmock_files.py
mkdir -p "$(srcdir)/fused-src"
chmod -R u+w "$(srcdir)/fused-src"
rm -f "$(srcdir)/fused-src/gtest/gtest.h"
rm -f "$(srcdir)/fused-src/gmock/gmock.h"
rm -f "$(srcdir)/fused-src/gmock-gtest-all.cc"
"$(srcdir)/scripts/fuse_gmock_files.py" "$(srcdir)/fused-src"
cp -f "$(srcdir)/src/gmock_main.cc" "$(srcdir)/fused-src"
maintainer-clean-local:
rm -rf "$(srcdir)/fused-src"
# Death tests may produce core dumps in the build directory. In case
# this happens, clean them to keep distcleancheck happy.
CLEANFILES = core
# Disables 'make install' as installing a compiled version of Google
# Mock can lead to undefined behavior due to violation of the
# One-Definition Rule.
install-exec-local:
echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system."
false
install-data-local:
echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Mock into your build system."
false

File diff suppressed because it is too large Load Diff

View File

@ -1,354 +0,0 @@
Google C++ Mocking Framework
============================
http://code.google.com/p/googlemock/
Overview
--------
Google's framework for writing and using C++ mock classes on a variety
of platforms (Linux, Mac OS X, Windows, Windows CE, Symbian, etc).
Inspired by jMock, EasyMock, and Hamcrest, and designed with C++'s
specifics in mind, it can help you derive better designs of your
system and write better tests.
Google Mock:
- provides a declarative syntax for defining mocks,
- can easily define partial (hybrid) mocks, which are a cross of real
and mock objects,
- handles functions of arbitrary types and overloaded functions,
- comes with a rich set of matchers for validating function arguments,
- uses an intuitive syntax for controlling the behavior of a mock,
- does automatic verification of expectations (no record-and-replay
needed),
- allows arbitrary (partial) ordering constraints on
function calls to be expressed,
- lets a user extend it by defining new matchers and actions.
- does not use exceptions, and
- is easy to learn and use.
Please see the project page above for more information as well as the
mailing list for questions, discussions, and development. There is
also an IRC channel on OFTC (irc.oftc.net) #gtest available. Please
join us!
Please note that code under scripts/generator/ is from the cppclean
project (http://code.google.com/p/cppclean/) and under the Apache
License, which is different from Google Mock's license.
Requirements for End Users
--------------------------
Google Mock is implemented on top of the Google Test C++ testing
framework (http://code.google.com/p/googletest/), and includes the
latter as part of the SVN repositary and distribution package. You
must use the bundled version of Google Test when using Google Mock, or
you may get compiler/linker errors.
You can also easily configure Google Mock to work with another testing
framework of your choice; although it will still need Google Test as
an internal dependency. Please read
http://code.google.com/p/googlemock/wiki/ForDummies#Using_Google_Mock_with_Any_Testing_Framework
for how to do it.
Google Mock depends on advanced C++ features and thus requires a more
modern compiler. The following are needed to use Google Mock:
### Linux Requirements ###
These are the base requirements to build and use Google Mock from a source
package (as described below):
* GNU-compatible Make or "gmake"
* POSIX-standard shell
* POSIX(-2) Regular Expressions (regex.h)
* C++98-standard-compliant compiler (e.g. GCC 3.4 or newer)
### Windows Requirements ###
* Microsoft Visual C++ 8.0 SP1 or newer
### Mac OS X Requirements ###
* Mac OS X 10.4 Tiger or newer
* Developer Tools Installed
Requirements for Contributors
-----------------------------
We welcome patches. If you plan to contribute a patch, you need to
build Google Mock and its own tests from an SVN checkout (described
below), which has further requirements:
* Automake version 1.9 or newer
* Autoconf version 2.59 or newer
* Libtool / Libtoolize
* Python version 2.3 or newer (for running some of the tests and
re-generating certain source files from templates)
Getting the Source
------------------
There are two primary ways of getting Google Mock's source code: you
can download a stable source release in your preferred archive format,
or directly check out the source from our Subversion (SVN) repositary.
The SVN checkout requires a few extra steps and some extra software
packages on your system, but lets you track development and make
patches much more easily, so we highly encourage it.
### Source Package ###
Google Mock is released in versioned source packages which can be
downloaded from the download page [1]. Several different archive
formats are provided, but the only difference is the tools needed to
extract their contents, and the size of the resulting file. Download
whichever you are most comfortable with.
[1] http://code.google.com/p/googlemock/downloads/list
Once downloaded expand the archive using whichever tools you prefer
for that type. This will always result in a new directory with the
name "gmock-X.Y.Z" which contains all of the source code. Here are
some examples on Linux:
tar -xvzf gmock-X.Y.Z.tar.gz
tar -xvjf gmock-X.Y.Z.tar.bz2
unzip gmock-X.Y.Z.zip
### SVN Checkout ###
To check out the main branch (also known as the "trunk") of Google
Mock, run the following Subversion command:
svn checkout http://googlemock.googlecode.com/svn/trunk/ gmock-svn
If you are using a *nix system and plan to use the GNU Autotools build
system to build Google Mock (described below), you'll need to
configure it now. Otherwise you are done with getting the source
files.
To prepare the Autotools build system, enter the target directory of
the checkout command you used ('gmock-svn') and proceed with the
following command:
autoreconf -fvi
Once you have completed this step, you are ready to build the library.
Note that you should only need to complete this step once. The
subsequent 'make' invocations will automatically re-generate the bits
of the build system that need to be changed.
If your system uses older versions of the autotools, the above command
will fail. You may need to explicitly specify a version to use. For
instance, if you have both GNU Automake 1.4 and 1.9 installed and
'automake' would invoke the 1.4, use instead:
AUTOMAKE=automake-1.9 ACLOCAL=aclocal-1.9 autoreconf -fvi
Make sure you're using the same version of automake and aclocal.
Setting up the Build
--------------------
To build Google Mock and your tests that use it, you need to tell your
build system where to find its headers and source files. The exact
way to do it depends on which build system you use, and is usually
straightforward.
### Generic Build Instructions ###
This section shows how you can integrate Google Mock into your
existing build system.
Suppose you put Google Mock in directory ${GMOCK_DIR} and Google Test
in ${GTEST_DIR} (the latter is ${GMOCK_DIR}/gtest by default). To
build Google Mock, create a library build target (or a project as
called by Visual Studio and Xcode) to compile
${GTEST_DIR}/src/gtest-all.cc and ${GMOCK_DIR}/src/gmock-all.cc
with
${GTEST_DIR}/include, ${GTEST_DIR}, ${GMOCK_DIR}/include, and ${GMOCK_DIR}
in the header search path. Assuming a Linux-like system and gcc,
something like the following will do:
g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -I${GMOCK_DIR}/include \
-I${GMOCK_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -I${GMOCK_DIR}/include \
-I${GMOCK_DIR} -c ${GMOCK_DIR}/src/gmock-all.cc
ar -rv libgmock.a gtest-all.o gmock-all.o
Next, you should compile your test source file with
${GTEST_DIR}/include and ${GMOCK_DIR}/include in the header search
path, and link it with gmock and any other necessary libraries:
g++ -I${GTEST_DIR}/include -I${GMOCK_DIR}/include \
path/to/your_test.cc libgmock.a -o your_test
As an example, the make/ directory contains a Makefile that you can
use to build Google Mock on systems where GNU make is available
(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google
Mock's own tests. Instead, it just builds the Google Mock library and
a sample test. You can use it as a starting point for your own build
script.
If the default settings are correct for your environment, the
following commands should succeed:
cd ${GMOCK_DIR}/make
make
./gmock_test
If you see errors, try to tweak the contents of make/Makefile to make
them go away. There are instructions in make/Makefile on how to do
it.
### Windows ###
The msvc/2005 directory contains VC++ 2005 projects and the msvc/2010
directory contains VC++ 2010 projects for building Google Mock and
selected tests.
Change to the appropriate directory and run "msbuild gmock.sln" to
build the library and tests (or open the gmock.sln in the MSVC IDE).
If you want to create your own project to use with Google Mock, you'll
have to configure it to use the gmock_config propety sheet. For that:
* Open the Property Manager window (View | Other Windows | Property Manager)
* Right-click on your project and select "Add Existing Property Sheet..."
* Navigate to gmock_config.vsprops or gmock_config.props and select it.
* In Project Properties | Configuration Properties | General | Additional
Include Directories, type <path to Google Mock>/include.
Tweaking Google Mock
--------------------
Google Mock can be used in diverse environments. The default
configuration may not work (or may not work well) out of the box in
some environments. However, you can easily tweak Google Mock by
defining control macros on the compiler command line. Generally,
these macros are named like GTEST_XYZ and you define them to either 1
or 0 to enable or disable a certain feature.
We list the most frequently used macros below. For a complete list,
see file ${GTEST_DIR}/include/gtest/internal/gtest-port.h.
### Choosing a TR1 Tuple Library ###
Google Mock uses the C++ Technical Report 1 (TR1) tuple library
heavily. Unfortunately TR1 tuple is not yet widely available with all
compilers. The good news is that Google Test 1.4.0+ implements a
subset of TR1 tuple that's enough for Google Mock's need. Google Mock
will automatically use that implementation when the compiler doesn't
provide TR1 tuple.
Usually you don't need to care about which tuple library Google Test
and Google Mock use. However, if your project already uses TR1 tuple,
you need to tell Google Test and Google Mock to use the same TR1 tuple
library the rest of your project uses, or the two tuple
implementations will clash. To do that, add
-DGTEST_USE_OWN_TR1_TUPLE=0
to the compiler flags while compiling Google Test, Google Mock, and
your tests. If you want to force Google Test and Google Mock to use
their own tuple library, just add
-DGTEST_USE_OWN_TR1_TUPLE=1
to the compiler flags instead.
If you want to use Boost's TR1 tuple library with Google Mock, please
refer to the Boost website (http://www.boost.org/) for how to obtain
it and set it up.
### Tweaking Google Test ###
Most of Google Test's control macros apply to Google Mock as well.
Please see file ${GTEST_DIR}/README for how to tweak them.
Upgrading from an Earlier Version
---------------------------------
We strive to keep Google Mock releases backward compatible.
Sometimes, though, we have to make some breaking changes for the
users' long-term benefits. This section describes what you'll need to
do if you are upgrading from an earlier version of Google Mock.
### Upgrading from 1.1.0 or Earlier ###
You may need to explicitly enable or disable Google Test's own TR1
tuple library. See the instructions in section "Choosing a TR1 Tuple
Library".
### Upgrading from 1.4.0 or Earlier ###
On platforms where the pthread library is available, Google Test and
Google Mock use it in order to be thread-safe. For this to work, you
may need to tweak your compiler and/or linker flags. Please see the
"Multi-threaded Tests" section in file ${GTEST_DIR}/README for what
you may need to do.
If you have custom matchers defined using MatcherInterface or
MakePolymorphicMatcher(), you'll need to update their definitions to
use the new matcher API [2]. Matchers defined using MATCHER() or
MATCHER_P*() aren't affected.
[2] http://code.google.com/p/googlemock/wiki/CookBook#Writing_New_Monomorphic_Matchers,
http://code.google.com/p/googlemock/wiki/CookBook#Writing_New_Polymorphic_Matchers
Developing Google Mock
----------------------
This section discusses how to make your own changes to Google Mock.
### Testing Google Mock Itself ###
To make sure your changes work as intended and don't break existing
functionality, you'll want to compile and run Google Test's own tests.
For that you'll need Autotools. First, make sure you have followed
the instructions in section "SVN Checkout" to configure Google Mock.
Then, create a build output directory and enter it. Next,
${GMOCK_DIR}/configure # Standard GNU configure script, --help for more info
Once you have successfully configured Google Mock, the build steps are
standard for GNU-style OSS packages.
make # Standard makefile following GNU conventions
make check # Builds and runs all tests - all should pass.
Note that when building your project against Google Mock, you are building
against Google Test as well. There is no need to configure Google Test
separately.
### Regenerating Source Files ###
Some of Google Mock's source files are generated from templates (not
in the C++ sense) using a script. A template file is named FOO.pump,
where FOO is the name of the file it will generate. For example, the
file include/gmock/gmock-generated-actions.h.pump is used to generate
gmock-generated-actions.h in the same directory.
Normally you don't need to worry about regenerating the source files,
unless you need to modify them. In that case, you should modify the
corresponding .pump files instead and run the 'pump' script (for Pump
is Useful for Meta Programming) to regenerate them. You can find
pump.py in the ${GTEST_DIR}/scripts/ directory. Read the Pump manual
[3] for how to use it.
[3] http://code.google.com/p/googletest/wiki/PumpManual.
### Contributing a Patch ###
We welcome patches. Please read the Google Mock developer's guide [4]
for how you can contribute. In particular, make sure you have signed
the Contributor License Agreement, or we won't be able to accept the
patch.
[4] http://code.google.com/p/googlemock/wiki/DevGuide
Happy testing!

9139
ext/gmock/aclocal.m4 vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,69 +0,0 @@
/* build-aux/config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define if you have POSIX threads libraries and header files. */
#undef HAVE_PTHREAD
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to necessary symbol if this constant uses a non-standard name on
your system. */
#undef PTHREAD_CREATE_JOINABLE
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION

File diff suppressed because it is too large Load Diff

View File

@ -1,630 +0,0 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2009-04-28.21; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
# Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u="sed s,\\\\\\\\,/,g"
depmode=msvisualcpp
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
IFS=" "
for arg
do
case "$arg" in
-o)
shift
;;
$object)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

View File

@ -1,520 +0,0 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2009-04-28.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/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-writeable 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"`
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"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
-*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

File diff suppressed because it is too large Load Diff

View File

@ -1,376 +0,0 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2009-04-28.21; # UTC
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
# 2008, 2009 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
\`g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# normalize program name to check for.
program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program). This is about non-GNU programs, so use $1 not
# $program.
case $1 in
lex*|yacc*)
# Not GNU programs, they don't have --version.
;;
tar*)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $program in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te*)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison*|yacc*)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex*|flex*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit $?
fi
;;
makeinfo*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar*)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

17795
ext/gmock/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,146 +0,0 @@
m4_include(gtest/m4/acx_pthread.m4)
AC_INIT([Google C++ Mocking Framework],
[1.6.0],
[googlemock@googlegroups.com],
[gmock])
# Provide various options to initialize the Autoconf and configure processes.
AC_PREREQ([2.59])
AC_CONFIG_SRCDIR([./COPYING])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([build-aux/config.h])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([scripts/gmock-config], [chmod +x scripts/gmock-config])
# Initialize Automake with various options. We require at least v1.9, prevent
# pedantic complaints about package files, and enable various distribution
# targets.
AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects])
# Check for programs used in building Google Test.
AC_PROG_CC
AC_PROG_CXX
AC_LANG([C++])
AC_PROG_LIBTOOL
# TODO(chandlerc@google.com): Currently we aren't running the Python tests
# against the interpreter detected by AM_PATH_PYTHON, and so we condition
# HAVE_PYTHON by requiring "python" to be in the PATH, and that interpreter's
# version to be >= 2.3. This will allow the scripts to use a "/usr/bin/env"
# hashbang.
PYTHON= # We *do not* allow the user to specify a python interpreter
AC_PATH_PROG([PYTHON],[python],[:])
AS_IF([test "$PYTHON" != ":"],
[AM_PYTHON_CHECK_VERSION([$PYTHON],[2.3],[:],[PYTHON=":"])])
AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != ":"])
# TODO(chandlerc@google.com) Check for the necessary system headers.
# Configure pthreads.
AC_ARG_WITH([pthreads],
[AS_HELP_STRING([--with-pthreads],
[use pthreads (default is yes)])],
[with_pthreads=$withval],
[with_pthreads=check])
have_pthreads=no
AS_IF([test "x$with_pthreads" != "xno"],
[ACX_PTHREAD(
[],
[AS_IF([test "x$with_pthreads" != "xcheck"],
[AC_MSG_FAILURE(
[--with-pthreads was specified, but unable to be used])])])
have_pthreads="$acx_pthread_ok"])
AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" == "xyes"])
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_LIBS)
# GoogleMock currently has hard dependencies upon GoogleTest above and beyond
# running its own test suite, so we both provide our own version in
# a subdirectory and provide some logic to use a custom version or a system
# installed version.
AC_ARG_WITH([gtest],
[AS_HELP_STRING([--with-gtest],
[Specifies how to find the gtest package. If no
arguments are given, the default behavior, a
system installed gtest will be used if present,
and an internal version built otherwise. If a
path is provided, the gtest built or installed at
that prefix will be used.])],
[],
[with_gtest=yes])
AC_ARG_ENABLE([external-gtest],
[AS_HELP_STRING([--disable-external-gtest],
[Disables any detection or use of a system
installed or user provided gtest. Any option to
'--with-gtest' is ignored. (Default is enabled.)])
], [], [enable_external_gtest=yes])
AS_IF([test "x$with_gtest" == "xno"],
[AC_MSG_ERROR([dnl
Support for GoogleTest was explicitly disabled. Currently GoogleMock has a hard
dependency upon GoogleTest to build, please provide a version, or allow
GoogleMock to use any installed version and fall back upon its internal
version.])])
# Setup various GTEST variables. TODO(chandlerc@google.com): When these are
# used below, they should be used such that any pre-existing values always
# trump values we set them to, so that they can be used to selectively override
# details of the detection process.
AC_ARG_VAR([GTEST_CONFIG],
[The exact path of Google Test's 'gtest-config' script.])
AC_ARG_VAR([GTEST_CPPFLAGS],
[C-like preprocessor flags for Google Test.])
AC_ARG_VAR([GTEST_CXXFLAGS],
[C++ compile flags for Google Test.])
AC_ARG_VAR([GTEST_LDFLAGS],
[Linker path and option flags for Google Test.])
AC_ARG_VAR([GTEST_LIBS],
[Library linking flags for Google Test.])
AC_ARG_VAR([GTEST_VERSION],
[The version of Google Test available.])
HAVE_BUILT_GTEST="no"
GTEST_MIN_VERSION="1.6.0"
AS_IF([test "x${enable_external_gtest}" = "xyes"],
[# Begin filling in variables as we are able.
AS_IF([test "x${with_gtest}" != "xyes"],
[AS_IF([test -x "${with_gtest}/scripts/gtest-config"],
[GTEST_CONFIG="${with_gtest}/scripts/gtest-config"],
[GTEST_CONFIG="${with_gtest}/bin/gtest-config"])
AS_IF([test -x "${GTEST_CONFIG}"], [],
[AC_MSG_ERROR([dnl
Unable to locate either a built or installed Google Test at '${with_gtest}'.])
])])
AS_IF([test -x "${GTEST_CONFIG}"], [],
[AC_PATH_PROG([GTEST_CONFIG], [gtest-config])])
AS_IF([test -x "${GTEST_CONFIG}"],
[AC_MSG_CHECKING([for Google Test version >= ${GTEST_MIN_VERSION}])
AS_IF([${GTEST_CONFIG} --min-version=${GTEST_MIN_VERSION}],
[AC_MSG_RESULT([yes])
HAVE_BUILT_GTEST="yes"],
[AC_MSG_RESULT([no])])])])
AS_IF([test "x${HAVE_BUILT_GTEST}" = "xyes"],
[GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags`
GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags`
GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
GTEST_LIBS=`${GTEST_CONFIG} --libs`
GTEST_VERSION=`${GTEST_CONFIG} --version`],
[AC_CONFIG_SUBDIRS([gtest])
# GTEST_CONFIG needs to be executable both in a Makefile environmont and
# in a shell script environment, so resolve an absolute path for it here.
GTEST_CONFIG="`pwd -P`/gtest/scripts/gtest-config"
GTEST_CPPFLAGS='-I$(top_srcdir)/gtest/include'
GTEST_CXXFLAGS='-g'
GTEST_LDFLAGS=''
GTEST_LIBS='$(top_builddir)/gtest/lib/libgtest.la'
GTEST_VERSION="${GTEST_MIN_VERSION}"])
# TODO(chandlerc@google.com) Check the types, structures, and other compiler
# and architecture characteristics.
# Output the generated files. No further autoconf macros may be used.
AC_OUTPUT

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +0,0 @@
// Copyright 2008, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: wan@google.com (Zhanyong Wan)
#include <iostream>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
// MS C++ compiler/linker has a bug on Windows (not on Windows CE), which
// causes a link error when _tmain is defined in a static library and UNICODE
// is enabled. For this reason instead of _tmain, main function is used on
// Windows. See the following link to track the current status of this bug:
// http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=394464 // NOLINT
#if GTEST_OS_WINDOWS_MOBILE
# include <tchar.h> // NOLINT
int _tmain(int argc, TCHAR** argv) {
#else
int main(int argc, char** argv) {
#endif // GTEST_OS_WINDOWS_MOBILE
std::cout << "Running main() from gmock_main.cc\n";
// Since Google Mock depends on Google Test, InitGoogleMock() is
// also responsible for initializing Google Test. Therefore there's
// no need for calling testing::InitGoogleTest() separately.
testing::InitGoogleMock(&argc, argv);
return RUN_ALL_TESTS();
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,146 +0,0 @@
// Copyright 2007, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: wan@google.com (Zhanyong Wan)
// Google Mock - a framework for writing C++ mock classes.
//
// This file implements some commonly used cardinalities. More
// cardinalities can be defined by the user implementing the
// CardinalityInterface interface if necessary.
#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
#define GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
#include <limits.h>
#include <ostream> // NOLINT
#include "gmock/internal/gmock-port.h"
#include "gtest/gtest.h"
namespace testing {
// To implement a cardinality Foo, define:
// 1. a class FooCardinality that implements the
// CardinalityInterface interface, and
// 2. a factory function that creates a Cardinality object from a
// const FooCardinality*.
//
// The two-level delegation design follows that of Matcher, providing
// consistency for extension developers. It also eases ownership
// management as Cardinality objects can now be copied like plain values.
// The implementation of a cardinality.
class CardinalityInterface {
public:
virtual ~CardinalityInterface() {}
// Conservative estimate on the lower/upper bound of the number of
// calls allowed.
virtual int ConservativeLowerBound() const { return 0; }
virtual int ConservativeUpperBound() const { return INT_MAX; }
// Returns true iff call_count calls will satisfy this cardinality.
virtual bool IsSatisfiedByCallCount(int call_count) const = 0;
// Returns true iff call_count calls will saturate this cardinality.
virtual bool IsSaturatedByCallCount(int call_count) const = 0;
// Describes self to an ostream.
virtual void DescribeTo(::std::ostream* os) const = 0;
};
// A Cardinality is a copyable and IMMUTABLE (except by assignment)
// object that specifies how many times a mock function is expected to
// be called. The implementation of Cardinality is just a linked_ptr
// to const CardinalityInterface, so copying is fairly cheap.
// Don't inherit from Cardinality!
class Cardinality {
public:
// Constructs a null cardinality. Needed for storing Cardinality
// objects in STL containers.
Cardinality() {}
// Constructs a Cardinality from its implementation.
explicit Cardinality(const CardinalityInterface* impl) : impl_(impl) {}
// Conservative estimate on the lower/upper bound of the number of
// calls allowed.
int ConservativeLowerBound() const { return impl_->ConservativeLowerBound(); }
int ConservativeUpperBound() const { return impl_->ConservativeUpperBound(); }
// Returns true iff call_count calls will satisfy this cardinality.
bool IsSatisfiedByCallCount(int call_count) const {
return impl_->IsSatisfiedByCallCount(call_count);
}
// Returns true iff call_count calls will saturate this cardinality.
bool IsSaturatedByCallCount(int call_count) const {
return impl_->IsSaturatedByCallCount(call_count);
}
// Returns true iff call_count calls will over-saturate this
// cardinality, i.e. exceed the maximum number of allowed calls.
bool IsOverSaturatedByCallCount(int call_count) const {
return impl_->IsSaturatedByCallCount(call_count) &&
!impl_->IsSatisfiedByCallCount(call_count);
}
// Describes self to an ostream
void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
// Describes the given actual call count to an ostream.
static void DescribeActualCallCountTo(int actual_call_count,
::std::ostream* os);
private:
internal::linked_ptr<const CardinalityInterface> impl_;
};
// Creates a cardinality that allows at least n calls.
Cardinality AtLeast(int n);
// Creates a cardinality that allows at most n calls.
Cardinality AtMost(int n);
// Creates a cardinality that allows any number of calls.
Cardinality AnyNumber();
// Creates a cardinality that allows between min and max calls.
Cardinality Between(int min, int max);
// Creates a cardinality that allows exactly n calls.
Cardinality Exactly(int n);
// Creates a cardinality from its implementation.
inline Cardinality MakeCardinality(const CardinalityInterface* c) {
return Cardinality(c);
}
} // namespace testing
#endif // GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More