This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch bugfix/osx in repository x2goclient. discards 74ecaf4 src/onmainwindow.cpp: use QFileInfo to get the key file's basename in exportDirs () instead of the old, potentially faulty string replace dance. discards ab07031 src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in generateKey (). discards 356b5f4 src/onmainwindow.h: actually, we do need startSshd () to be public. Move it back. discards bdf4f12 src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. discards 2c83c8c src/onmainwindow.{cpp,h}: don't try to initialize non-static ssh_key_type_ member variable directly, but in the constructor. discards d4db686 src/onmainwindow.h: remove WWrapper definition, seems to be unused. discards 14ebe4f src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. discards 205fb26 src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. discards b983373 src/onmainwindow.cpp: add and use key_types parameter to startWinServers (). discards 1747417 src/onmainwindow.cpp: pass key_type parameter to startSshd () in createKeyBundle (). discards 3e80efa src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call in WinServerStarter::run (). discards 137d3cb src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). discards f8f5f51 src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. discards 6ff1da6 src/onmainwindow.{cpp,h}: make startSshd () private. discards edb0f1c src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). discards e2a2a7c src/onmainwindow.cpp: add comment to last all-in listening check in startSshd (). discards 594efd5 src/onmainwindow.cpp: move QProcess startup check in startSshd () to non-Windows code section and add a listening socket check loop. discards e432011 macbuild.sh: switch to bundling PA 9.0. discards c4b5364 src/onmainwindow.{cpp,h}: rename createRSAKey () to the more-appropriate name createKeyBundle (). discards 3fbee71 src/onmainwindow.cpp: add some comments only to createRSAKey (). discards 9d023fd src/onmainwindow.cpp: let startSshd () act as a wrapper and be called multiple times. discards b0dbf3e src/onmainwindow.{cpp,h}: reformat createRSAKey () only. discards 105651a src/onmainwindow.{cpp,h}: move createRSAKey () around. discards 125a2f1 src/onmainwindow.{cpp,h}: reformat generateKey () only. discards 32e5a01 src/onmainwindow.h: move generateKey () declaration around. discards 30d83ec src/onmainwindow.cpp: use the new functions in generateKey (). discards e4dcf7e src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). discards 8661221 src/onmainwindow.{cpp,h}: add new function key_type_to_string (). discards 49bffc7 src/onmainwindow.{cpp,h}: add new function check_key_type (). discards 4e19f6f src/onmainwindow.cpp: terminate sshd more correctly. discards 95b0bec src/onmainwindow.cpp: uppercase key type in debug output and comment string in generateKey (). discards 1b88392 src/onmainwindow.cpp: when starting sshd on Unix-based plattforms, raise maximum startup time to 5 seconds and break out early, if the process went into running state earlier. discards 5c8bae8 src/{onmainwindow.{cpp,h},configdialog.cpp}: remove userSshd variable and code related to non-user-mode-sshd setups. discards 098d3c9 src/onmainwindow.cpp: fix up a few debug strings. discards 09fad0a src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. discards c0a3150 src/onmainwindow.{cpp,h}: rewrite generateKey () function to actually also generate user keys. discards 65db516 src/onmainwindow.cpp: refactor generateKey () a little bit to compact it. discards 11f7f34 src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () and add a boolean parameter with a default of false to request a public key. discards 1f6fcbe src/onmainwindow.cpp: add support for explicitly setting the private key bit size based on type and use values (currently) regarded as secure to generateHostKey (). discards 2dbe801 src/onmainwindow.cpp: document createRSAKey () because what it does is completely non-obvious. discards 7ebc06e src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. discards 7889b31 src/unixhelper.cpp: code cleanup. discards c2fa6e1 src/pulsemanager.cpp: remove unused variables. discards 781ffcb src/unixhelper.{cpp,h}: rewrite kill_pgroup () to act as a wrapper around real_kill_pgroup (). discards f4ece76 src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () into a new function called real_kill_pgroup (). discards 6d778b3 src/unixhelper.h: style and general fixes within comments. discards 436a0c7 src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. discards 00d5813 src/pulsemanager.cpp: fix PA version fetching on OS X again. discards f175965 src/pulsemanager.cpp: make sure that wherever we interface with non-Qt functions, paths are in native form (i.e., containing empty separators, instead of the "generic" slash UNIX-style separator.) discards f62a804 src/pulsemanager.cpp: make PA version parsing function more generic and don't expect that a number is always terminated with a period or dash. discards f7dd3e8 src/pulsemanager.h: include accidentally omitted wapi.h header file. discards fda9c8f src/onmainwindow.cpp: use correct C++ universal initializer for initializing in_addr-type variable, the C-style universal zero initializer won't cut it here. discards d845dc1 src/onmainwindow.cpp: fix compile error on Windows after moving some code around. discards 07dd1b6 src/onmainwindow.cpp: add another pair of braces to in_addr-type variable initialization on Windows to silence compiler warning. discards bf37b13 src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable initialization in Windows-only code. discards 37dacf0 src/onmainwindow.cpp: drop obsolete pulseVersionTest variable initialization in Windows-only code. discards aed3611 src/onmainwindow.cpp: short out code parts unconditionally checking for the userSshd variable. discards c31613c src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint otherwise. discards 0b1bb28 src/: new file windows_stdint.h for Windows-compatibility when using std::(u)int*_t types. discards ae62fb1 nsis/x2goclient.nsi: add startup.wav to installer package. discards bd02254 src/x2goutils.cpp: add some debug logging to find_binary (). discards b469003 src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the given path to CWD iff it's actually empty. Not the other way around. discards fe0f066 src/pulsemanager.cpp: remove extraneous newlines from debug output. discards 9fc7a11 src/pulsemanager.cpp: add warning message boxes where appropriate. discards a0d833c src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. discards 9ff6d9c src/pulsemanager.cpp: fix startup when using the system-PA version. discards e407de9 src/pulsemanager.cpp: fix compile error on Windows. discards 3344a31 debian/changelog: fix typo in function name. discards d2fa9e6 src/x2goutils.h: fix compile error due to typo. discards 4ac44f7 src/pulsemanager.cpp: add error message boxes throughout PulseManager. discards 5a615da src/x2goutils.{cpp,h}: add application modality parameter to show_RichText_Generic_MsgBox () and its wrappers. discards bd55b66 src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. discards 061a04b src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. discards 7f077db src/x2goutils.cpp: fix compile error. discards da75a52 src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). discards 2cfea17 src/pulsemanager.cpp: add comments to Qt 4 code part. discards f1f51f9 src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. discards 220ed25 src/x2goutils.{cpp,h}: add new function find_binary (). discards 7d31462 src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. discards fc2e700 src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables into environment as used by PulseManager. discards d539537 src/pulsemanager.cpp: don't insert stray newline into config.pa. discards 0122690 src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. discards 5193f96 src/pulsemanager.{cpp,h}: rename on_pulse_finished () to slot_on_pulse_finished (). discards fa1a401 src/pulsemanager.cpp: don't overwrite the temporary string variable for the current line with what was supposed to hold new data in fetch_pulseaudio_version (). discards a515eb1 src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). discards 6cfe224 macbuild.sh: save return value of parse_otool_output (). discards 6d25016 macbuild.sh: don't error out while executing parse_otool_output (). discards a100fe9 macbuild.sh: also add PA binaries to deduplication fixup list. discards 0ef4dc8 macbuild.sh: fix copying of resource files. discards 2c3c8e0 res: rename "sound" to "audio". discards 6e51c2c macbuild.sh: add support for copying resource files. discards 5c62d71 src/pulsemanager.cpp: don't time out while trying to start PA or paplay. discards ef54dfc res/sound: add startup.wav sound to be played back when starting the PA daemon in debug mode. discards c876e50 src/pulsemanager.h: fix compile error due to mismatching function declaration for set_debug (). discards 812d681 src/onmainwindow.cpp: port to new debugging feature of PulseManager. discards 9fc9bb1 src/pulsemanager.{cpp,h}: port to new debugging feature. discards 760c50f src/pulsemanager.{cpp,h}: add debugging setter and private variable. discards c568d4a src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. discards c9f6585 src/pulsemanager.cpp: fix compile error due to typo. discards 3624c97 src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. discards 4e132c4 src/onmainwindow.cpp: convert QDir object to QString for further processing. discards 8ff281a src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. discards 6d2a532 src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. discards 010e50f src/onmainwindow.cpp: fix compile errors due to misspelled function names. discards 9383768 src/configdialog.cpp: fix compile error by removing obsolete (and now faulty) line for removed restart message. discards 74d5865 src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly to stdout. discards 91050ea src/pulsemanager.h: move x2gologdebug.h inclusion into implementation file. discards dc95778 src/mediawidget.cpp: reflect new capabilities through PulseManager. discards 983b6ef src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. discards 8c83146 src/configdialog.cpp: whitespace only. discards 6b263c7 src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) discards 9ab4bb2 src/pulsemanager.cpp: backport fix for 422. discards c617dd2 src/pulsemanager.cpp: backport fix for 526. discards 469d24a src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) discards 281795f src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. discards 6509901 src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the (OS-dependent) PulseAudio config and cookie directory. discards 3761c27 pulsemanager.cpp: remove config.pa while doing post-exit cleanups. discards 539adc7 macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". discards 378ea7f macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. discards 799ee93 pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. discards 53a1896 pulsemanager.cpp: use record and playback member variables. discards 251ba7c pulsemanager.h: more moving around. discards 4053676 pulsemanager.cpp: fix compile error in startup sound function. discards 703aad9 pulsemanager.cpp: reorder member variables in initializer list. discards 7770a56 pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. discards ec05b7d pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is not currently running. discards 7760a31 pulsemanager.cpp: add algorithm for actually extracting PA version number. discards 283a410 pulsemanager.h: reformat a bit by adding newlines and moving lines in a (hopefully) logical fashion. discards a1a746d pulsemanager.{cpp,h}: some older PA versions used the major, minor and micro numbering scheme together with a descriptive string. discards 1ec5d07 pulsemanager.cpp: fix some error messages by removing redundant newlines. discards a9d3461 pulsemanager.cpp: re-initialize buffer string on each run while getting CWD on Linux. discards 25a146d pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () with first skeleton. discards 09c28d8 pulsemanager.cpp: generate platform-dependent values for member variables server_working_dir_ and server_binary_ in constructor. discards aa02e66 pulsemanager.cpp: add "dummy" start_linux () function. discards ae7fac9 pulsemanager.cpp: reorder member variables in initialization list. discards 82b71a2 pulsemanager.cpp: another typo fix: findPort -> find_port. discards 903d651 pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). discards 1c3081a pulsemanager.cpp: fix compile errors in find_port () by renaming the ret or port variable to search_port. discards de314cb pulsemanager.{cpp,h}: find_port () actually returns a value, fix declaration accordingly. discards 9b80479 pulsemanager.cpp: typo fix in member variable name server_working_dir_. discards 371220d pulsemanager.h: whitespace only. discards ab0b5e4 pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. discards 748c2c2 pulsemanager.cpp: only play startup sound if DEBUG macro is defined. discards 13e4980 pulsemanager.cpp: make generate_client_config () Windows-compatible. discards d53600e pulsemanager.cpp: make generate_server_config () Windows-compatible. discards b196479 pulsemanager.cpp: also load module-esound-protocol-tcp module. discards b31b7fe pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. discards 87291f9 pulsemanager.cpp: let start_osx () use start_generic (). discards 455eb6c pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. discards 53fecb6 pulsemanager.cpp: add Windows stuff to initial env in constructor. discards 63c9b86 pulsemanager.cpp: add cleanup support to on_pulse_finished (). discards aafe943 pulsemanager.cpp: add Windows support to shutdown (). discards 0fd1e82 pulsemanager.{cpp,h}: new function create_client_dir (). discards 61b817e pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. discards abf85fb pulsemanager.{cpp,h}: add server_args_, server_binary_ and server_working_dir_ class variables. discards e1b5f08 pulsemanager.{cpp,h}: fixup preprocessor usage. discards 5003b8d pulsemanager.cpp: reformat only. discards eac6de5 pulsemanager.{cpp,h}: rename relaunch () to restart (). discards 52f559e pulsemanager.{cpp,h}: add ESD support. discards 0662aff pulsemanager.h: add std:: namespace selector for uint32_t version variables. discards bde71e2 pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. discards 8c47152 pulsemanager.cpp: reformat only. discards 27391c4 pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. discards 3bb877d pulsemanager.cpp: use initializer list for constructor. discards 935844e pulsemanager.{cpp,h}: reformat only. discards d6190f3 pulsemanager.cpp: minor non-behavior changing fixes. discards f695f5a pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. discards 70debcc macbuild.sh: rewrite ID line detection algorithm. discards dea9fa6 macbuild.sh: copy "special" files, so that they can be removed later on. discards 0d9d6cc macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. discards 4688086 macbuild.sh: more debug messages and a whitespace change. discards 9ba3784 macbuild.sh: spelling fix. discards 1024be0 macbuild.sh: merge deduplicate.sh content in. discards 43074a6 deduplicate.sh: replace tabs with two spaces. No functional changes. discards b7439fb macbuild.sh: replace tabs with two spaces. No functional changes. discards aa81eba deduplicate.sh: remove some noisy debug output. discards 59d5671 deduplicate.sh: add WARNING to status message. discards e16ec2a deduplicate.sh: fix wrong return value capture. discards 7a72546 deduplicate.sh: remove a bit of noisy debug output, but turn on parse_otool_output debugging. discards 87ab8ea deduplicate.sh: cleanup as announced in the last commit - using lazy_canonical_path. discards 4ba528a deduplicate.sh: surprisingly, it turned out that only checking the duplicate's basename against the current dependency's basename is not good enough. discards 1d4d492 deduplicate.sh: more temporary debugging output in fixup section. discards 78d90ac deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. discards efc5e23 deduplicate.sh: save dependency format base string as a readonly variable and use that instead of repeating a fixed string. discards a5d9ad0 deduplicate.sh: actually include file name in install_name_tool pseudo output. discards 1d7a5cb deduplicate.sh: parse_otool_output: jump over first matching entry, which is - hopefully - the id line. discards 3b3b1c7 deduplicate.sh: unstub fixup section. discards c17a32d deduplicate.sh: add more useful information in fixup section's error message. discards 6495dc9 deduplicate.sh: switch to range-based for loop in fixup section for duplicate array walking as we need to access the same element index in the replacement array. discards 59be605 deduplicate.sh: prevent word splitting when parsing otool's output. discards 21a54c5 deduplicate.sh: debug parse_otool_output fiercely for the time being. discards a861c5d deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. discards 513122a deduplicate.sh: change exit to return in parse_otool_output. discards 3afee63 deduplicate.sh: fix parse_otool_output: we want to return failure only iff any of the strings are present in otool's output and actually handle the failure string *ARRAY* correctly as that. discards 6eccae6 deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word splitting. discards 9c6fa0d deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle "sparse" arrays correctly. discards 1463e41 deduplicate.sh: correctly unset an array element. discards 9792e5c deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. discards d06b4a9 deduplicate.sh: non-functional: change WARNING to ERROR in error messages. discards 3f325b1 deduplicate.sh: new function for parsing otool's output and printing library dependencies if no error occurred. discards 6489a99 deduplicate.sh: add missed local variable declaration. discards 83a41ff deduplicate.sh: add duplicates-to-real mapping. discards 9c411d0 deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. discards 0caeaa7 macbuild.sh: also install libraries into staging area with intermediate library path. discards 49867fc macbuild.sh: fix echo call to also show the intermediate lib dir, not just the library file name. discards e10f256 macbuild.sh: when actually bundling libraries, use @executable_path instead of @loader_path. discards 6063053 macbuild.sh: add the correct file path to the library bundling array. discards a084c8d macbuild.sh: check current file name against regex, not a (now) full path. discards f1ed5d0 macbuild.sh: use while-read-loop and find to actually recurse through directories. discards 5d580f0 macbuild.sh: remove libpulse and libpulsecore from libraries to be bundled, as something else will bundle them anyway. discards 8a051ad macbuild.sh: add some more debugging output. discards 4ad8d38 macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. discards 31863bb macbuild.sh: add Linux library file name scheme regex as a precaution. discards 4325c9c macbuild.sh: add work-in-progress PulseAudio bundling. discards b1bb61c macbuild.sh: add phase output for bundling nxproxy. discards 443dbb2 macbuild.sh: copy PulseAudio libraries and binaries. discards e4b9cda macbuild.sh: define PulseAudio libraries and binaries to be later copied. discards 0df4cb0 macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. discards 6736cad macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. discards b493206 macbuild.sh: add new repeat_str() helper function. discards 8921df3 macbuild.sh: add new get_nesting_level() helper function. discards 7698b89 macbuild.sh: add new lazy_canonical_path() helper function. discards 0d6d016 macbuild.sh: add new dependency_error() helper function. discards a84d356 macbuild.sh: add new MACPORTS_PREFIX detection/variable. discards a58ff85 x2goclient.pro{maemo}: reference new pulsemanager.{cpp,h} files. discards abb1e20 pulsemanager.{cpp,h}: new class for PulseAudio management. discards 840540e compat.h: include QtCore/qglobal.h for Q_OS_... macros. discards 94e366d compat.{cpp,h}: remove inline keyword, because function is not defined in header file. discards d58b5ac compat.{cpp,h}: new files. Implements strndup on OS X 10.6 and below. Add to x2goclient.cpp, x2goclient.pro and x2goclient.pro.maemo. discards 5657256 onmainwindow.cpp: correctly use ~/.x2go/.ssh as ssh directory when starting sshd in user mode. discards 85d445c appdialog.cpp: initialize parent in default case. Another GCC compile warning fix. discards 64d5e1f {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile warnings with GCC. Fix a few whitespace issues. discards c729dd5 x2goclient.cpp: fix failing exec() call for the UNIX helper utility: correctly terminate arguments vector. discards cebd8e5 unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and SIGUSR2. discards 220fe91 {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to parent PID polling. discards ecbfe7d unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period to 10 seconds. discards 7f1eae2 x2goclient.cpp: create new argv array on the heap instead of on the stack. discards 5f0a681 x2goclient.cpp: fix string comparison. discards 4617765 x2goclient.cpp: fix compile problems introduced with the last commit. discards 5a47e79 x2goclient.cpp: don't start the UNIX cleanup helper process right after forking. discards c36cdb3 x2goclient.cpp: clean up. discards 098baac unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. discards e9cdcda unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. discards b0b5ce2 unixhelper.cpp: kill process group on error. discards f4504be x2goclient.cpp: return return value of unixhelper::unix_cleanup(). discards f2d4ab9 unixhelper.{cpp,h}: add documentation/comments. discards e972a9a unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. discards f1a1953 unixhelper.h: forgot to declare type of unix_cleanup() function. discards b170459 unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. discards e1eb767 x2goclient.cpp: fix std::edit -> std::exit typo. discards 3088686 x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. discards affe1b9 x2goclient.cpp: add myself to copyright header. discards d3a3b98 x2goclient.cpp: use setsid() on UNIX to become session and process group leader. discards 7652675 x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup helper. discards 24c3278 x2goclient.cpp: wrap X2Go Client main function and use that. discards db7500f unixhelper.{cpp,h}: implement cleanup program for process group. discards b696c60 {unixhelper.{cpp,h},x2goclient.pro{maemo}}: add unixhelper stub. adds 944dadf src/sshmasterconnection.cpp: add SecurID prompt to challenge auth code prompts. new fb1b709 {unixhelper.{cpp,h},x2goclient.pro{maemo}}: add unixhelper stub. new ca9419d unixhelper.{cpp,h}: implement cleanup program for process group. new d55fd54 x2goclient.cpp: wrap X2Go Client main function and use that. new 548bb3d x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup helper. new 3f9a062 x2goclient.cpp: use setsid() on UNIX to become session and process group leader. new 9e5c12a x2goclient.cpp: add myself to copyright header. new 17e2502 x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. new 7ef7537 x2goclient.cpp: fix std::edit -> std::exit typo. new 97e0119 unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. new 6ad5812 unixhelper.h: forgot to declare type of unix_cleanup() function. new 254dd48 unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. new 097bd6f unixhelper.{cpp,h}: add documentation/comments. new 3d111f3 x2goclient.cpp: return return value of unixhelper::unix_cleanup(). new 1253b51 unixhelper.cpp: kill process group on error. new d442044 unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. new 9c8496c unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. new 4bf8d95 x2goclient.cpp: clean up. new 70a0f26 x2goclient.cpp: don't start the UNIX cleanup helper process right after forking. new bff78a5 x2goclient.cpp: fix compile problems introduced with the last commit. new 1f23c5d x2goclient.cpp: fix string comparison. new da9cef8 x2goclient.cpp: create new argv array on the heap instead of on the stack. new fa2386e unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period to 10 seconds. new 140f9c4 {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to parent PID polling. new 7aed6a5 unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and SIGUSR2. new 5dc5188 x2goclient.cpp: fix failing exec() call for the UNIX helper utility: correctly terminate arguments vector. new d67815e {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile warnings with GCC. Fix a few whitespace issues. new c958dd9 appdialog.cpp: initialize parent in default case. Another GCC compile warning fix. new 3dbd27e onmainwindow.cpp: correctly use ~/.x2go/.ssh as ssh directory when starting sshd in user mode. new f189d3e compat.{cpp,h}: new files. Implements strndup on OS X 10.6 and below. Add to x2goclient.cpp, x2goclient.pro and x2goclient.pro.maemo. new b387a7f compat.{cpp,h}: remove inline keyword, because function is not defined in header file. new 2778e19 compat.h: include QtCore/qglobal.h for Q_OS_... macros. new 59df0d6 pulsemanager.{cpp,h}: new class for PulseAudio management. new e52da11 x2goclient.pro{maemo}: reference new pulsemanager.{cpp,h} files. new 518d973 macbuild.sh: add new MACPORTS_PREFIX detection/variable. new 8c5236b macbuild.sh: add new dependency_error() helper function. new bc816f1 macbuild.sh: add new lazy_canonical_path() helper function. new 022c1b3 macbuild.sh: add new get_nesting_level() helper function. new 402dddf macbuild.sh: add new repeat_str() helper function. new b34c4be macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. new 92669a0 macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. new 5cf57ef macbuild.sh: define PulseAudio libraries and binaries to be later copied. new 850339b macbuild.sh: copy PulseAudio libraries and binaries. new e64f2ca macbuild.sh: add phase output for bundling nxproxy. new 45aade3 macbuild.sh: add work-in-progress PulseAudio bundling. new c061146 macbuild.sh: add Linux library file name scheme regex as a precaution. new 848da9a macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. new 21843e8 macbuild.sh: add some more debugging output. new 155d804 macbuild.sh: remove libpulse and libpulsecore from libraries to be bundled, as something else will bundle them anyway. new 63a2b7a macbuild.sh: use while-read-loop and find to actually recurse through directories. new 67b9a50 macbuild.sh: check current file name against regex, not a (now) full path. new 3964e2e macbuild.sh: add the correct file path to the library bundling array. new c584f1b macbuild.sh: when actually bundling libraries, use @executable_path instead of @loader_path. new 5e92088 macbuild.sh: fix echo call to also show the intermediate lib dir, not just the library file name. new 96c188c macbuild.sh: also install libraries into staging area with intermediate library path. new 1f4609b deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. new 12a048f deduplicate.sh: add duplicates-to-real mapping. new 991fb8b deduplicate.sh: add missed local variable declaration. new 3cde4ad deduplicate.sh: new function for parsing otool's output and printing library dependencies if no error occurred. new 4509f9e deduplicate.sh: non-functional: change WARNING to ERROR in error messages. new 2e678ca deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. new 0beb8f3 deduplicate.sh: correctly unset an array element. new 0bbe20a deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle "sparse" arrays correctly. new b53bbe8 deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word splitting. new 03a21de deduplicate.sh: fix parse_otool_output: we want to return failure only iff any of the strings are present in otool's output and actually handle the failure string *ARRAY* correctly as that. new 4f8ef40 deduplicate.sh: change exit to return in parse_otool_output. new 944ecef deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. new 8dccd33 deduplicate.sh: debug parse_otool_output fiercely for the time being. new 7f9518e deduplicate.sh: prevent word splitting when parsing otool's output. new 203692f deduplicate.sh: switch to range-based for loop in fixup section for duplicate array walking as we need to access the same element index in the replacement array. new c92ad68 deduplicate.sh: add more useful information in fixup section's error message. new 4eef623 deduplicate.sh: unstub fixup section. new 397d580 deduplicate.sh: parse_otool_output: jump over first matching entry, which is - hopefully - the id line. new ea47a12 deduplicate.sh: actually include file name in install_name_tool pseudo output. new a2201e5 deduplicate.sh: save dependency format base string as a readonly variable and use that instead of repeating a fixed string. new 0382d7b deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. new cf33355 deduplicate.sh: more temporary debugging output in fixup section. new 6d54016 deduplicate.sh: surprisingly, it turned out that only checking the duplicate's basename against the current dependency's basename is not good enough. new e9c24c8 deduplicate.sh: cleanup as announced in the last commit - using lazy_canonical_path. new e35da59 deduplicate.sh: remove a bit of noisy debug output, but turn on parse_otool_output debugging. new bf97b01 deduplicate.sh: fix wrong return value capture. new f8409eb deduplicate.sh: add WARNING to status message. new b478c0a deduplicate.sh: remove some noisy debug output. new 7379e5c macbuild.sh: replace tabs with two spaces. No functional changes. new c90871e deduplicate.sh: replace tabs with two spaces. No functional changes. new 2e9018f macbuild.sh: merge deduplicate.sh content in. new a66475d macbuild.sh: spelling fix. new 34f28b2 macbuild.sh: more debug messages and a whitespace change. new b786ac5 macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. new c4e2264 macbuild.sh: copy "special" files, so that they can be removed later on. new c9abccd macbuild.sh: rewrite ID line detection algorithm. new e66e439 pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. new d84b717 pulsemanager.cpp: minor non-behavior changing fixes. new 51bf43a pulsemanager.{cpp,h}: reformat only. new c7ece0b pulsemanager.cpp: use initializer list for constructor. new 35e239b pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. new 84182dd pulsemanager.cpp: reformat only. new 7b5de3d pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. new 60f6177 pulsemanager.h: add std:: namespace selector for uint32_t version variables. new ab7b8df pulsemanager.{cpp,h}: add ESD support. new 03ae3ef pulsemanager.{cpp,h}: rename relaunch () to restart (). new 85ba63c pulsemanager.cpp: reformat only. new 616d25c pulsemanager.{cpp,h}: fixup preprocessor usage. new a83c5fa pulsemanager.{cpp,h}: add server_args_, server_binary_ and server_working_dir_ class variables. new 5baed0b pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. new 6e3ef4f pulsemanager.{cpp,h}: new function create_client_dir (). new f9595ca pulsemanager.cpp: add Windows support to shutdown (). new 0d489c9 pulsemanager.cpp: add cleanup support to on_pulse_finished (). new 300c0d8 pulsemanager.cpp: add Windows stuff to initial env in constructor. new 95605ef pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. new c6ba017 pulsemanager.cpp: let start_osx () use start_generic (). new 392c626 pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. new 0501d80 pulsemanager.cpp: also load module-esound-protocol-tcp module. new 562a526 pulsemanager.cpp: make generate_server_config () Windows-compatible. new d055cad pulsemanager.cpp: make generate_client_config () Windows-compatible. new 00fc298 pulsemanager.cpp: only play startup sound if DEBUG macro is defined. new c37e419 pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. new a2c30c6 pulsemanager.h: whitespace only. new 311d3b1 pulsemanager.cpp: typo fix in member variable name server_working_dir_. new 4e542e7 pulsemanager.{cpp,h}: find_port () actually returns a value, fix declaration accordingly. new 9670689 pulsemanager.cpp: fix compile errors in find_port () by renaming the ret or port variable to search_port. new abaee6d pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). new efe3919 pulsemanager.cpp: another typo fix: findPort -> find_port. new b9f7781 pulsemanager.cpp: reorder member variables in initialization list. new 38c1962 pulsemanager.cpp: add "dummy" start_linux () function. new 91cebd4 pulsemanager.cpp: generate platform-dependent values for member variables server_working_dir_ and server_binary_ in constructor. new da58773 pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () with first skeleton. new 2ca5063 pulsemanager.cpp: re-initialize buffer string on each run while getting CWD on Linux. new 1734146 pulsemanager.cpp: fix some error messages by removing redundant newlines. new bf1d6b3 pulsemanager.{cpp,h}: some older PA versions used the major, minor and micro numbering scheme together with a descriptive string. new 9c3cfc5 pulsemanager.h: reformat a bit by adding newlines and moving lines in a (hopefully) logical fashion. new b3fd942 pulsemanager.cpp: add algorithm for actually extracting PA version number. new 24a2e27 pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is not currently running. new 18aec60 pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. new 520ba30 pulsemanager.cpp: reorder member variables in initializer list. new b4908ab pulsemanager.cpp: fix compile error in startup sound function. new 5f8adce pulsemanager.h: more moving around. new f6791d2 pulsemanager.cpp: use record and playback member variables. new 718a34e pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. new 2d83ce9 macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. new 061fc07 macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". new ecd4d31 pulsemanager.cpp: remove config.pa while doing post-exit cleanups. new 1ad19cf src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the (OS-dependent) PulseAudio config and cookie directory. new 4fe9215 src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. new 1f7a7e5 src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) new d475eab src/pulsemanager.cpp: backport fix for 526. new 9e6405d src/pulsemanager.cpp: backport fix for 422. new dd9a04f src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) new 90f999b src/configdialog.cpp: whitespace only. new a32068d src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. new 0b0f3dd src/mediawidget.cpp: reflect new capabilities through PulseManager. new dadd922 src/pulsemanager.h: move x2gologdebug.h inclusion into implementation file. new 2d83e15 src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly to stdout. new 5ad0560 src/configdialog.cpp: fix compile error by removing obsolete (and now faulty) line for removed restart message. new 5e200e3 src/onmainwindow.cpp: fix compile errors due to misspelled function names. new 1f9ccfe src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. new 37dd92d src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. new 466594b src/onmainwindow.cpp: convert QDir object to QString for further processing. new 4204765 src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. new 491ddad src/pulsemanager.cpp: fix compile error due to typo. new e162d32 src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. new b24ee88 src/pulsemanager.{cpp,h}: add debugging setter and private variable. new dbcd77a src/pulsemanager.{cpp,h}: port to new debugging feature. new 275922e src/onmainwindow.cpp: port to new debugging feature of PulseManager. new d250d3e src/pulsemanager.h: fix compile error due to mismatching function declaration for set_debug (). new 218b721 res/sound: add startup.wav sound to be played back when starting the PA daemon in debug mode. new 770d950 src/pulsemanager.cpp: don't time out while trying to start PA or paplay. new 0f2cc9f macbuild.sh: add support for copying resource files. new 3df2544 res: rename "sound" to "audio". new 2081035 macbuild.sh: fix copying of resource files. new a145e81 macbuild.sh: also add PA binaries to deduplication fixup list. new 2c1c5ed macbuild.sh: don't error out while executing parse_otool_output (). new 557d115 macbuild.sh: save return value of parse_otool_output (). new 0844739 src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). new 13c0e2d src/pulsemanager.cpp: don't overwrite the temporary string variable for the current line with what was supposed to hold new data in fetch_pulseaudio_version (). new 8823e11 src/pulsemanager.{cpp,h}: rename on_pulse_finished () to slot_on_pulse_finished (). new 5e395fb src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. new 82a10f8 src/pulsemanager.cpp: don't insert stray newline into config.pa. new 142d1e8 src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables into environment as used by PulseManager. new 0957842 src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. new 8f1257f src/x2goutils.{cpp,h}: add new function find_binary (). new b4c08f5 src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. new 445046a src/pulsemanager.cpp: add comments to Qt 4 code part. new e8b73a1 src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). new e99c477 src/x2goutils.cpp: fix compile error. new 4df5514 src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. new 7b448d0 src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. new 7c04060 src/x2goutils.{cpp,h}: add application modality parameter to show_RichText_Generic_MsgBox () and its wrappers. new 7c14ca3 src/pulsemanager.cpp: add error message boxes throughout PulseManager. new 7ca5522 src/x2goutils.h: fix compile error due to typo. new c2d0c7f debian/changelog: fix typo in function name. new a3eef0e src/pulsemanager.cpp: fix compile error on Windows. new 14d2cf0 src/pulsemanager.cpp: fix startup when using the system-PA version. new 2160cba src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. new 06e2b08 src/pulsemanager.cpp: add warning message boxes where appropriate. new aff320b src/pulsemanager.cpp: remove extraneous newlines from debug output. new 3a2b712 src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the given path to CWD iff it's actually empty. Not the other way around. new 4425447 src/x2goutils.cpp: add some debug logging to find_binary (). new 09fef55 nsis/x2goclient.nsi: add startup.wav to installer package. new 62e5f74 src/: new file windows_stdint.h for Windows-compatibility when using std::(u)int*_t types. new db57937 src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint otherwise. new a905c66 src/onmainwindow.cpp: short out code parts unconditionally checking for the userSshd variable. new eff0185 src/onmainwindow.cpp: drop obsolete pulseVersionTest variable initialization in Windows-only code. new 8995f24 src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable initialization in Windows-only code. new bc42bbd src/onmainwindow.cpp: add another pair of braces to in_addr-type variable initialization on Windows to silence compiler warning. new 745c43f src/onmainwindow.cpp: fix compile error on Windows after moving some code around. new fd9956d src/onmainwindow.cpp: use correct C++ universal initializer for initializing in_addr-type variable, the C-style universal zero initializer won't cut it here. new 26591ec src/pulsemanager.h: include accidentally omitted wapi.h header file. new b060ae9 src/pulsemanager.cpp: make PA version parsing function more generic and don't expect that a number is always terminated with a period or dash. new bce2e25 src/pulsemanager.cpp: make sure that wherever we interface with non-Qt functions, paths are in native form (i.e., containing empty separators, instead of the "generic" slash UNIX-style separator.) new e665df5 src/pulsemanager.cpp: fix PA version fetching on OS X again. new d52cd15 src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. new 452f902 src/unixhelper.h: style and general fixes within comments. new 09073eb src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () into a new function called real_kill_pgroup (). new 8d78f15 src/unixhelper.{cpp,h}: rewrite kill_pgroup () to act as a wrapper around real_kill_pgroup (). new cf405a7 src/pulsemanager.cpp: remove unused variables. new f93863a src/unixhelper.cpp: code cleanup. new 0ffaac8 src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. new 0743219 src/onmainwindow.cpp: document createRSAKey () because what it does is completely non-obvious. new a19169d src/onmainwindow.cpp: add support for explicitly setting the private key bit size based on type and use values (currently) regarded as secure to generateHostKey (). new 83a1834 src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () and add a boolean parameter with a default of false to request a public key. new 6f850ff src/onmainwindow.cpp: refactor generateKey () a little bit to compact it. new e7a25be src/onmainwindow.{cpp,h}: rewrite generateKey () function to actually also generate user keys. new 51743a4 src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. new 198d2a2 src/onmainwindow.cpp: fix up a few debug strings. new 1a03e60 src/{onmainwindow.{cpp,h},configdialog.cpp}: remove userSshd variable and code related to non-user-mode-sshd setups. new 5d97c1c src/onmainwindow.cpp: when starting sshd on Unix-based plattforms, raise maximum startup time to 5 seconds and break out early, if the process went into running state earlier. new ba36025 src/onmainwindow.cpp: uppercase key type in debug output and comment string in generateKey (). new d6af8b1 src/onmainwindow.cpp: terminate sshd more correctly. new 8634fab src/onmainwindow.{cpp,h}: add new function check_key_type (). new 9fcbc90 src/onmainwindow.{cpp,h}: add new function key_type_to_string (). new 65a6d0b src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). new 5950e49 src/onmainwindow.cpp: use the new functions in generateKey (). new 2e77d1a src/onmainwindow.h: move generateKey () declaration around. new 07fe44f src/onmainwindow.{cpp,h}: reformat generateKey () only. new 4f140be src/onmainwindow.{cpp,h}: move createRSAKey () around. new 8ae02d4 src/onmainwindow.{cpp,h}: reformat createRSAKey () only. new f50892c src/onmainwindow.cpp: let startSshd () act as a wrapper and be called multiple times. new f4743c8 src/onmainwindow.cpp: add some comments only to createRSAKey (). new dba0e4a src/onmainwindow.{cpp,h}: rename createRSAKey () to the more-appropriate name createKeyBundle (). new ac07522 macbuild.sh: switch to bundling PA 9.0. new 28f1874 src/onmainwindow.cpp: move QProcess startup check in startSshd () to non-Windows code section and add a listening socket check loop. new d7ce9fa src/onmainwindow.cpp: add comment to last all-in listening check in startSshd (). new 3ebafa3 src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). new c9b2590 src/onmainwindow.{cpp,h}: make startSshd () private. new b1d8319 src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. new 58a4964 src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). new 6b07329 src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call in WinServerStarter::run (). new 8d1fc7f src/onmainwindow.cpp: pass key_type parameter to startSshd () in createKeyBundle (). new 9f66fa0 src/onmainwindow.cpp: add and use key_types parameter to startWinServers (). new 21609ca src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. new c843402 src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. new 540e813 src/onmainwindow.h: remove WWrapper definition, seems to be unused. new d988a25 src/onmainwindow.{cpp,h}: don't try to initialize non-static ssh_key_type_ member variable directly, but in the constructor. new 13f6832 src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. new 8d9d6db src/onmainwindow.h: actually, we do need startSshd () to be public. Move it back. new 88d2394 src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in generateKey (). new 76d422d src/onmainwindow.cpp: use QFileInfo to get the key file's basename in exportDirs () instead of the old, potentially faulty string replace dance. This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (74ecaf4) \ N -- N -- N refs/heads/bugfix/osx (76d422d) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 257 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: debian/changelog | 2 ++ src/sshmasterconnection.cpp | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit fb1b709c49d6d71300665e528e58290e1f3e63ef Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Mar 14 22:21:34 2015 +0100 {unixhelper.{cpp,h},x2goclient.pro{maemo}}: add unixhelper stub. --- debian/changelog | 1 + src/unixhelper.cpp | 23 +++++++++++++++++++++++ src/unixhelper.h | 29 +++++++++++++++++++++++++++++ x2goclient.pro | 6 ++++-- x2goclient.pro.maemo | 6 ++++-- 5 files changed, 61 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 101b6bb..9c77213 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium printSshDError_noHostPubKey (). - src/sshmasterconnection.cpp: add SecurID prompt to challenge auth code prompts. + - {unixhelper.{cpp,h},x2goclient.pro{,.maemo}}: add unixhelper stub. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp new file mode 100644 index 0000000..221bdb2 --- /dev/null +++ b/src/unixhelper.cpp @@ -0,0 +1,23 @@ +/*************************************************************************** + * Copyright (C) 2015 by Mihai Moldovan <ionic@ionic.de> +49 721 14595728 * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifdef Q_OS_UNIX + + +#endif /* defined (Q_OS_UNIX) */ diff --git a/src/unixhelper.h b/src/unixhelper.h new file mode 100644 index 0000000..31d983e --- /dev/null +++ b/src/unixhelper.h @@ -0,0 +1,29 @@ +/*************************************************************************** + * Copyright (C) 2015 by Mihai Moldovan <ionic@ionic.de> +49 721 14595728 * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifdef Q_OS_UNIX + +#ifndef UNIXHELPER_H +#define UNIXHELPER_H + + + +#endif /* !defined (UNIXHELPER_H) */ + +#endif /* defined (Q_OS_UNIX) */ diff --git a/x2goclient.pro b/x2goclient.pro index 9fbac48..47b2197 100644 --- a/x2goclient.pro +++ b/x2goclient.pro @@ -79,7 +79,8 @@ HEADERS += src/configdialog.h \ src/folderbutton.h \ src/folderexplorer.h \ src/non_modal_messagebox.h \ - src/help.h + src/help.h \ + src/unixhelper.h SOURCES += src/sharewidget.cpp \ src/settingswidget.cpp \ @@ -122,7 +123,8 @@ SOURCES += src/sharewidget.cpp \ src/folderbutton.cpp \ src/folderexplorer.cpp \ src/non_modal_messagebox.cpp \ - src/help.cpp + src/help.cpp \ + src/unixhelper.cpp LIBS += -lssh win32:LIBS += -lAdvAPI32 -lshell32 -lUser32 diff --git a/x2goclient.pro.maemo b/x2goclient.pro.maemo index ac2eacf..63cc3d8 100644 --- a/x2goclient.pro.maemo +++ b/x2goclient.pro.maemo @@ -35,7 +35,8 @@ HEADERS += src/configdialog.h \ src/settingswidget.h \ src/sharewidget.h \ src/clicklineedit.h \ - src/help.h + src/help.h \ + src/unixhelper.h SOURCES += src/sharewidget.cpp \ src/settingswidget.cpp \ @@ -62,7 +63,8 @@ SOURCES += src/sharewidget.cpp \ src/embedwidget.cpp \ src/wapi.cpp \ src/clicklineedit.cpp \ - src/help.cpp + src/help.cpp \ + src/unixhelper.cpp TEMPLATE = app TARGET = -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d55fd54073aff867ed11be80d4f1586c6eb37ba6 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun Mar 15 00:03:42 2015 +0100 x2goclient.cpp: wrap X2Go Client main function and use that. --- debian/changelog | 1 + src/x2goclient.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index dff3ae8..1b5abd6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium prompts. - {unixhelper.{cpp,h},x2goclient.pro{,.maemo}}: add unixhelper stub. - unixhelper.{cpp,h}: implement cleanup program for process group. + - x2goclient.cpp: wrap X2Go Client main function and use that. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index 015bbce..fb63fe5 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -17,7 +17,11 @@ #include "ongetpass.h" +int wrap_x2go_main (int argc, char **argv) { + return (x2goMain (argc, argv)); +} + int main(int argc, char *argv[]) { - return x2goMain(argc,argv); + return (wrap_x2go_main (argc, argv)); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 548bb3d83290331fb5a17433531b5074c051ac18 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 20:27:23 2015 +0100 x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup helper. --- debian/changelog | 2 ++ src/x2goclient.cpp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1b5abd6..3b26ee8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - {unixhelper.{cpp,h},x2goclient.pro{,.maemo}}: add unixhelper stub. - unixhelper.{cpp,h}: implement cleanup program for process group. - x2goclient.cpp: wrap X2Go Client main function and use that. + - x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup + helper. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index fb63fe5..df15858 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -15,12 +15,45 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * ***************************************************************************/ +#include <iostream> +#include <unistd.h> +#include <cstring> +#include <cerrno> +#include <cstdlib> + +#include "unixhelper.h" #include "ongetpass.h" int wrap_x2go_main (int argc, char **argv) { return (x2goMain (argc, argv)); } +#ifdef Q_OS_UNIX +int fork_helper (int argc, char **argv) { + /* Fork off to start helper process. */ + pid_t tmp_pid = fork (); + + /* Child. */ + if (0 == tmp_pid) { + /* Starting unixhelper. */ + unixhelper cleanup_helper (); + cleanup_helper.unix_cleanup (); + } + /* Error. */ + else if (-1 == tmp_pid) { + std::cerr << "Unable to create a new process for the UNIX cleanup watchdog: " << std::strerror (errno) << "\n"; + std::cerr << "Terminating. Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; + + std::exit (EXIT_FAILURE); + } + /* Parent. */ + else { + /* Start real X2Go Client. */ + return (wrap_x2go_main (argc, argv)); + } +} +#endif /* defined (Q_OS_UNIX) */ + int main(int argc, char *argv[]) { return (wrap_x2go_main (argc, argv)); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit ca9419d32029c74da8332c45dfcc1db15b6c1a17 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Mar 14 23:57:49 2015 +0100 unixhelper.{cpp,h}: implement cleanup program for process group. --- debian/changelog | 1 + src/unixhelper.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/unixhelper.h | 9 +++++++++ 3 files changed, 48 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9c77213..dff3ae8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/sshmasterconnection.cpp: add SecurID prompt to challenge auth code prompts. - {unixhelper.{cpp,h},x2goclient.pro{,.maemo}}: add unixhelper stub. + - unixhelper.{cpp,h}: implement cleanup program for process group. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index 221bdb2..545c2c1 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -19,5 +19,43 @@ #ifdef Q_OS_UNIX +#include <csignal> +#include <unistd.h> +#include <iostream> +#include <cstring> +#include <cerrno> +#include <cstdlib> + +#include "unixhelper.h" + +void unixhelper::kill_pgroup (int signal) { + if (SIGHUP == signal) { + /* Try to kill via SIGTERM first. */ + if (0 != killpg (getpgrp (), SIGTERM)) { + std::cerr << "WARNING: unable to send SIGTERM to process group: " << std::strerror (errno) << std::endl; + } + + /* Grant a grace period of (at least) 5 seconds. */ + sleep (5); + + /* Don't handle any errors here, because we die anyway. */ + killpg (getpgrp (), SIGKILL); + } +} + + +int unixhelper::unix_cleanup () { + if (SIG_ERR == std::signal (SIGTERM, SIG_IGN)) { + std::cerr << "Unable to ignore SIGTERM: " << std::strerror (errno) << std::endl; + std::exit (1); + } + + std::signal (SIGHUP, kill_pgroup); + + /* Sleep forever... at least one second in each run. */ + for (;;) { + sleep (1); + } +} #endif /* defined (Q_OS_UNIX) */ diff --git a/src/unixhelper.h b/src/unixhelper.h index 31d983e..fab611e 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -22,7 +22,16 @@ #ifndef UNIXHELPER_H #define UNIXHELPER_H +class unixhelper { + public: + unixhelper () {} + ~unixhelper () {} + unix_cleanup (); + private: + unixhelper (const unixhelper &other); + void kill_pgroup (int signal); +}; #endif /* !defined (UNIXHELPER_H) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3f9a0626d2ad926a91b0d9833d78249bdee239b9 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 20:30:49 2015 +0100 x2goclient.cpp: use setsid() on UNIX to become session and process group leader. If that fails, fork, terminate the parent and execute setsid() in the child process. Use fork_helper() to start the UNIX cleanup helper in a child process and continue with the main application in the parent. --- debian/changelog | 4 ++++ src/x2goclient.cpp | 43 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3b26ee8..9113c2c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,6 +16,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - x2goclient.cpp: wrap X2Go Client main function and use that. - x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup helper. + - x2goclient.cpp: use setsid() on UNIX to become session and process group + leader. If that fails, fork, terminate the parent and execute setsid() + in the child process. Use fork_helper() to start the UNIX cleanup helper + in a child process and continue with the main application in the parent. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index df15858..f56bed2 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -54,7 +54,44 @@ int fork_helper (int argc, char **argv) { } #endif /* defined (Q_OS_UNIX) */ -int main(int argc, char *argv[]) -{ - return (wrap_x2go_main (argc, argv)); +int main (int argc, char **argv) { +#ifdef Q_OS_UNIX + if (-1 == setsid ()) { + std::cerr << "Unable to create a new process session: " << std::strerror (errno) << "\n"; + + std::cerr << "Trying to fork." << std::endl; + pid_t tmp_pid = fork (); + + /* Child. */ + if (0 == tmp_pid) { + /* Trying to get a new session and become session + process group leader again. */ + if (-1 == setsid ()) { + std::cerr << "Child was unable to create a new process session: " << std::strerror (errno) << "\n"; + std::cerr << "Terminating. Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; + + std::exit (EXIT_FAILURE); + } + + /* By now, we should be session and group leader. */ + return (fork_helper (argc, argv)); + } + /* Error. */ + else if (-1 == tmp_pid) { + std::cerr << "Error while forking: " << std::strerror (errno) << std::endl; + std::cerr << "Terminating. Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; + + std::edit (EXIT_FAILURE); + } + /* Parent. Just die here. */ + else { + std::exit (EXIT_SUCCESS); + } + } + else { + /* setsid() worked. Starting helper and main program. */ + return (fork_helper (argc, argv)); + } +#else /* defined (Q_OS_UNIX) */ + return (wrap_x2go_main (argc, argv)); +#endif /* defined (Q_OS_UNIX) */ } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 17e2502dfc3bcc39c6a0bb3af2e8afe502b324c6 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 20:37:43 2015 +0100 x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. --- debian/changelog | 2 ++ src/x2goclient.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index a63e6fa..e9b3190 100644 --- a/debian/changelog +++ b/debian/changelog @@ -21,6 +21,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium in the child process. Use fork_helper() to start the UNIX cleanup helper in a child process and continue with the main application in the parent. - x2goclient.cpp: add myself to copyright header. + - x2goclient.cpp: add legacy <sys/types.h> header needed for old operating + systems. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index 44c41d3..1e92536 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -17,6 +17,7 @@ ***************************************************************************/ #include <iostream> +#include <sys/types.h> #include <unistd.h> #include <cstring> #include <cerrno> -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9e5c12a3608728e5cf6c354ef08406bb06074dab Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 20:36:35 2015 +0100 x2goclient.cpp: add myself to copyright header. --- debian/changelog | 1 + src/x2goclient.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9113c2c..a63e6fa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium leader. If that fails, fork, terminate the parent and execute setsid() in the child process. Use fork_helper() to start the UNIX cleanup helper in a child process and continue with the main application in the parent. + - x2goclient.cpp: add myself to copyright header. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index f56bed2..44c41d3 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -1,6 +1,7 @@ /************************************************************************** * Copyright (C) 2005-2016 by Oleksandr Shneyder * * o.shneyder@phoca-gmbh.de * +* Copyright (C) 2015 by Mihai Moldovan <ionic@ionic.de> * * * * 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 * -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 097bd6fa27df1074f014b681698d736be05e5a1d Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 22:04:19 2015 +0100 unixhelper.{cpp,h}: add documentation/comments. --- debian/changelog | 1 + src/unixhelper.cpp | 4 ++++ src/unixhelper.h | 24 ++++++++++++++++++++++++ src/x2goclient.cpp | 2 ++ 4 files changed, 31 insertions(+) diff --git a/debian/changelog b/debian/changelog index 595da21..d2216b4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -29,6 +29,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - unixhelper.h: forgot to declare type of unix_cleanup() function. - {unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. + - unixhelper.{cpp,h}: add documentation/comments. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index b0729c6..2ad0740 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -30,6 +30,8 @@ #include <cerrno> #include <cstdlib> +/* For documentation please see unixhelper.h. */ + namespace unixhelper { void kill_pgroup (int signal) { if (SIGHUP == signal) { @@ -51,6 +53,8 @@ namespace unixhelper { if (SIG_ERR == std::signal (SIGTERM, SIG_IGN)) { std::cerr << "Unable to ignore SIGTERM: " << std::strerror (errno) << std::endl; std::exit (1); + + /* Anything here shall be unreachable. */ } std::signal (SIGHUP, kill_pgroup); diff --git a/src/unixhelper.h b/src/unixhelper.h index fe86017..a00d21b 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -26,7 +26,31 @@ #ifdef Q_OS_UNIX namespace unixhelper { + /* + * TODO: Unblocks all signals and + * installs a signal handler for SIGHUP, which calls kill_pgroup. + * + * TODO: Should signal unblocking or + * installing the signal handler fail, an emergency exit is performed + * and the whole process group killed. + * + * Loops indefinitely afterwards. + */ int unix_cleanup (); + + /* + * Kills the whole process group. + * First, SIGTERM is sent to the group. + * A 5 seconds grace period is granted to make sure + * processes exit cleanly on their own. + * Lastly, SIGKILL is sent to the group -- which also + * implies the demise of this program. + * + * signal may be any of: + * * -1 to indicate an error leading to emergency termination + * * SIGHUP as the standard signal that is sent when the + * group leeader dies + */ void kill_pgroup (int signal); } diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index 7eb6511..e7ec69b 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -39,6 +39,8 @@ int fork_helper (int argc, char **argv) { if (0 == tmp_pid) { /* Starting unixhelper. */ unixhelper::unix_cleanup (); + + /* Anything here shall be unreachable. */ } /* Error. */ else if (-1 == tmp_pid) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 97e0119b45eb317aae330082d620f7ebbe6ae378 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 21:13:05 2015 +0100 unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. --- debian/changelog | 2 ++ src/unixhelper.cpp | 5 ++++- src/unixhelper.h | 9 ++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index be998eb..b440033 100644 --- a/debian/changelog +++ b/debian/changelog @@ -24,6 +24,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. - x2goclient.cpp: fix std::edit -> std::exit typo. + - unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX + defined on UNIX-based platforms. Move guards around. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index 545c2c1..b326f35 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -17,6 +17,10 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +/* Necessary for Q_OS_UNIX! */ + +#include "unixhelper.h" + #ifdef Q_OS_UNIX #include <csignal> @@ -26,7 +30,6 @@ #include <cerrno> #include <cstdlib> -#include "unixhelper.h" void unixhelper::kill_pgroup (int signal) { if (SIGHUP == signal) { diff --git a/src/unixhelper.h b/src/unixhelper.h index fab611e..27cb735 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -17,11 +17,14 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifdef Q_OS_UNIX #ifndef UNIXHELPER_H #define UNIXHELPER_H +#include <QtCore/qglobal.h> + +#ifdef Q_OS_UNIX + class unixhelper { public: unixhelper () {} @@ -33,6 +36,6 @@ class unixhelper { void kill_pgroup (int signal); }; -#endif /* !defined (UNIXHELPER_H) */ - #endif /* defined (Q_OS_UNIX) */ + +#endif /* !defined (UNIXHELPER_H) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 6ad5812477685a7ba6b9cf9281e0ba423440b103 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 21:17:49 2015 +0100 unixhelper.h: forgot to declare type of unix_cleanup() function. --- debian/changelog | 1 + src/unixhelper.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b440033..fb8a062 100644 --- a/debian/changelog +++ b/debian/changelog @@ -26,6 +26,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - x2goclient.cpp: fix std::edit -> std::exit typo. - unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. + - unixhelper.h: forgot to declare type of unix_cleanup() function. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.h b/src/unixhelper.h index 27cb735..9069b5d 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -29,7 +29,7 @@ class unixhelper { public: unixhelper () {} ~unixhelper () {} - unix_cleanup (); + int unix_cleanup (); private: unixhelper (const unixhelper &other); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 254dd48a8d96a31b244f1fef4887aadca5f0a007 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 21:38:10 2015 +0100 unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. --- debian/changelog | 2 ++ src/unixhelper.cpp | 43 ++++++++++++++++++++++--------------------- src/unixhelper.h | 14 ++++---------- src/x2goclient.cpp | 3 +-- 4 files changed, 29 insertions(+), 33 deletions(-) diff --git a/debian/changelog b/debian/changelog index fb8a062..595da21 100644 --- a/debian/changelog +++ b/debian/changelog @@ -27,6 +27,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. - unixhelper.h: forgot to declare type of unix_cleanup() function. + - {unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a + (module) namespace, not a class. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index b326f35..b0729c6 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -30,34 +30,35 @@ #include <cerrno> #include <cstdlib> +namespace unixhelper { + void kill_pgroup (int signal) { + if (SIGHUP == signal) { + /* Try to kill via SIGTERM first. */ + if (0 != killpg (getpgrp (), SIGTERM)) { + std::cerr << "WARNING: unable to send SIGTERM to process group: " << std::strerror (errno) << std::endl; + } -void unixhelper::kill_pgroup (int signal) { - if (SIGHUP == signal) { - /* Try to kill via SIGTERM first. */ - if (0 != killpg (getpgrp (), SIGTERM)) { - std::cerr << "WARNING: unable to send SIGTERM to process group: " << std::strerror (errno) << std::endl; - } - - /* Grant a grace period of (at least) 5 seconds. */ - sleep (5); + /* Grant a grace period of (at least) 5 seconds. */ + sleep (5); - /* Don't handle any errors here, because we die anyway. */ - killpg (getpgrp (), SIGKILL); + /* Don't handle any errors here, because we die anyway. */ + killpg (getpgrp (), SIGKILL); + } } -} -int unixhelper::unix_cleanup () { - if (SIG_ERR == std::signal (SIGTERM, SIG_IGN)) { - std::cerr << "Unable to ignore SIGTERM: " << std::strerror (errno) << std::endl; - std::exit (1); - } + int unix_cleanup () { + if (SIG_ERR == std::signal (SIGTERM, SIG_IGN)) { + std::cerr << "Unable to ignore SIGTERM: " << std::strerror (errno) << std::endl; + std::exit (1); + } - std::signal (SIGHUP, kill_pgroup); + std::signal (SIGHUP, kill_pgroup); - /* Sleep forever... at least one second in each run. */ - for (;;) { - sleep (1); + /* Sleep forever... at least one second in each run. */ + for (;;) { + sleep (1); + } } } diff --git a/src/unixhelper.h b/src/unixhelper.h index 9069b5d..fe86017 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -25,16 +25,10 @@ #ifdef Q_OS_UNIX -class unixhelper { - public: - unixhelper () {} - ~unixhelper () {} - int unix_cleanup (); - - private: - unixhelper (const unixhelper &other); - void kill_pgroup (int signal); -}; +namespace unixhelper { + int unix_cleanup (); + void kill_pgroup (int signal); +} #endif /* defined (Q_OS_UNIX) */ diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index f495796..7eb6511 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -38,8 +38,7 @@ int fork_helper (int argc, char **argv) { /* Child. */ if (0 == tmp_pid) { /* Starting unixhelper. */ - unixhelper cleanup_helper (); - cleanup_helper.unix_cleanup (); + unixhelper::unix_cleanup (); } /* Error. */ else if (-1 == tmp_pid) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7ef753703ec399ceeb95dac8209c092d766c47b9 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 20:45:24 2015 +0100 x2goclient.cpp: fix std::edit -> std::exit typo. --- debian/changelog | 1 + src/x2goclient.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index e9b3190..be998eb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -23,6 +23,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - x2goclient.cpp: add myself to copyright header. - x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. + - x2goclient.cpp: fix std::edit -> std::exit typo. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index 1e92536..f495796 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -82,7 +82,7 @@ int main (int argc, char **argv) { std::cerr << "Error while forking: " << std::strerror (errno) << std::endl; std::cerr << "Terminating. Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; - std::edit (EXIT_FAILURE); + std::exit (EXIT_FAILURE); } /* Parent. Just die here. */ else { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d442044193ba714647148a303ee697281b0f5210 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 22:42:14 2015 +0100 unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. --- debian/changelog | 2 ++ src/unixhelper.cpp | 20 ++++++++++++++++++++ src/unixhelper.h | 10 +++++----- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0123940..72d4073 100644 --- a/debian/changelog +++ b/debian/changelog @@ -32,6 +32,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - unixhelper.{cpp,h}: add documentation/comments. - x2goclient.cpp: return return value of unixhelper::unix_cleanup(). - unixhelper.cpp: kill process group on error. + - unixhelper.{cpp,h}: implement signal unblocking in + unixhelper::unix_cleanup(). Update documentation. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index 2ad0740..f2cc11c 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -50,6 +50,26 @@ namespace unixhelper { int unix_cleanup () { + /* + * Unblock all signals first. + * Signal blocks are inherited, so you never you what is currently set. + */ + sigset_t empty_set; + if (0 != sigemptyset (&empty_set)) { + std::cerr << "Unable to fetch empty signal set: " << std::strerror (errno) << std::endl; + kill_pgroup (-1); + + /* Anything here shall be unreachable. */ + } + + if (0 != sigprocmask (SIG_SETMASK, &empty_set, NULL)) { + std::cerr << "Unable to set empty signal set: " << std::strerror (errno) << std::endl; + kill_pgroup (-1); + + /* Anything here shall be unreachable. */ + } + + /* Set up signal handler to ignore SIGTERM. */ if (SIG_ERR == std::signal (SIGTERM, SIG_IGN)) { std::cerr << "Unable to ignore SIGTERM: " << std::strerror (errno) << std::endl; std::exit (1); diff --git a/src/unixhelper.h b/src/unixhelper.h index a00d21b..7ca8b43 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -27,12 +27,12 @@ namespace unixhelper { /* - * TODO: Unblocks all signals and - * installs a signal handler for SIGHUP, which calls kill_pgroup. + * Unblocks all signals and installs a signal handler for SIGHUP, + * which calls kill_pgroup. * - * TODO: Should signal unblocking or - * installing the signal handler fail, an emergency exit is performed - * and the whole process group killed. + * Should signal unblocking or installing the signal handler fail, + * an emergency exit is performed and + * the whole process group killed. * * Loops indefinitely afterwards. */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3d111f3276be788cbab7b6e036af7ba77cf0a1d7 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 22:14:46 2015 +0100 x2goclient.cpp: return return value of unixhelper::unix_cleanup(). --- debian/changelog | 1 + src/x2goclient.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d2216b4..9f345cb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -30,6 +30,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - {unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. - unixhelper.{cpp,h}: add documentation/comments. + - x2goclient.cpp: return return value of unixhelper::unix_cleanup(). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index e7ec69b..be070d8 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -38,7 +38,7 @@ int fork_helper (int argc, char **argv) { /* Child. */ if (0 == tmp_pid) { /* Starting unixhelper. */ - unixhelper::unix_cleanup (); + return (unixhelper::unix_cleanup ()); /* Anything here shall be unreachable. */ } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1253b51bb3634bd9f7b627a7b69f20f16caa9f5d Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 22:15:58 2015 +0100 unixhelper.cpp: kill process group on error. --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 9f345cb..0123940 100644 --- a/debian/changelog +++ b/debian/changelog @@ -31,6 +31,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium (module) namespace, not a class. - unixhelper.{cpp,h}: add documentation/comments. - x2goclient.cpp: return return value of unixhelper::unix_cleanup(). + - unixhelper.cpp: kill process group on error. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4bf8d95891497a5498b77070fccbef8bf83d07ed Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 23:41:12 2015 +0100 x2goclient.cpp: clean up. We don't care if setsid() fails or succeeds and we certainly do not need to fork to force it to succeed. Whether we are a process group leader already or become one doesn't matter, if the end result is that we are process group leader. --- debian/changelog | 4 ++++ src/x2goclient.cpp | 42 ++++++++---------------------------------- 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/debian/changelog b/debian/changelog index 39a44dc..3e0ee58 100644 --- a/debian/changelog +++ b/debian/changelog @@ -35,6 +35,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. - unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. + - x2goclient.cpp: clean up. We don't care if setsid() fails or succeeds + and we certainly do not need to fork to force it to succeed. Whether we + are a process group leader already or become one doesn't matter, if the + end result is that we are process group leader. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index be070d8..ad613fb 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -59,41 +59,15 @@ int fork_helper (int argc, char **argv) { int main (int argc, char **argv) { #ifdef Q_OS_UNIX - if (-1 == setsid ()) { - std::cerr << "Unable to create a new process session: " << std::strerror (errno) << "\n"; + /* + * setsid() may succeed and we become a session and process + * group leader, or it may fail indicating that we already + * are a process group leader. Either way is fine. + */ + setsid (); - std::cerr << "Trying to fork." << std::endl; - pid_t tmp_pid = fork (); - - /* Child. */ - if (0 == tmp_pid) { - /* Trying to get a new session and become session + process group leader again. */ - if (-1 == setsid ()) { - std::cerr << "Child was unable to create a new process session: " << std::strerror (errno) << "\n"; - std::cerr << "Terminating. Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; - - std::exit (EXIT_FAILURE); - } - - /* By now, we should be session and group leader. */ - return (fork_helper (argc, argv)); - } - /* Error. */ - else if (-1 == tmp_pid) { - std::cerr << "Error while forking: " << std::strerror (errno) << std::endl; - std::cerr << "Terminating. Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; - - std::exit (EXIT_FAILURE); - } - /* Parent. Just die here. */ - else { - std::exit (EXIT_SUCCESS); - } - } - else { - /* setsid() worked. Starting helper and main program. */ - return (fork_helper (argc, argv)); - } + /* We should be process group leader by now. */ + return (fork_helper (argc, argv)); #else /* defined (Q_OS_UNIX) */ return (wrap_x2go_main (argc, argv)); #endif /* defined (Q_OS_UNIX) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit bff78a5b686f07f3dbdd9ee7947fb792e69d99fc Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Mar 18 03:06:15 2015 +0100 x2goclient.cpp: fix compile problems introduced with the last commit. --- debian/changelog | 1 + src/x2goclient.cpp | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index b6929e5..7c4950f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -44,6 +44,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium re-execute the main binary with this new option to indicate that the UNIX cleanup helper tool is requested. It is necessary to call exec() after fork on virtually all operating system, especially on OS X. + - x2goclient.cpp: fix compile problems introduced with the last commit. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index 3f11d55..895db0d 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -26,6 +26,7 @@ #include <algorithm> #include <cctype> #include <vector> +#include <csignal> #include "unixhelper.h" #include "ongetpass.h" @@ -43,16 +44,23 @@ int fork_helper (int argc, char **argv) { if (0 == tmp_pid) { /* Starting unixhelper. */ std::vector<std::string> new_argv; - new_argv.push (std::string (argv[0])); - new_argv.push ("--unixhelper"); + new_argv.push_back (std::string (argv[0])); + new_argv.push_back ("--unixhelper"); - std::vector<const char *> new_argv_c_str; - for (const_iterator it = new_argv.begin (); it != new_argv.end (); ++it) { - new_argv_c_str.push ((*it).c_str ()); + std::vector<char *> new_argv_c_str; + for (std::vector<std::string>::iterator it = new_argv.begin (); it != new_argv.end (); ++it) { + const char *elem = (*it).c_str (); + new_argv_c_str.push_back (strndup (elem, std::strlen (elem))); } - new_argv_c_str.push (""); - if (0 != execv (new_argv_c_str.data (), new_argv_c_str.data ())) { + /* Add null pointer as last element. */ + { + std::vector<char> tmp; + tmp.push_back (0); + new_argv_c_str.push_back (&tmp.front ()); + } + + if (0 != execv (new_argv_c_str.front (), &(new_argv_c_str.front ()))) { std::cerr << "Failed to re-execute process as UNIX cleanup helper tool: " << std::strerror (errno) << "\n" << "Terminating and killing parent." << "\n" << "Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; @@ -66,6 +74,7 @@ int fork_helper (int argc, char **argv) { } /* Anything here shall be unreachable. */ + return (0); } /* Error. */ else if (-1 == tmp_pid) { @@ -90,7 +99,7 @@ int main (int argc, char **argv) { std::string cur_arg (argv[i]); /* Make the current argument lowercase. */ - std::transform (cur_arg.begin (), cur_arg.end (), cur_arg.begin (), std::tolower); + std::transform (cur_arg.begin (), cur_arg.end (), cur_arg.begin (), ::tolower); if ((!cur_arg.empty ()) && (cur_arg.compare ("--unixhelper"))) { unix_helper_request = 1; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9c8496c06f26e5c72225fe781822cb078c9e8b79 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Mar 16 23:08:13 2015 +0100 unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. --- debian/changelog | 1 + src/unixhelper.cpp | 33 ++++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index 72d4073..39a44dc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -34,6 +34,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - unixhelper.cpp: kill process group on error. - unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. + - unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index f2cc11c..fdcaac9 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -69,15 +69,34 @@ namespace unixhelper { /* Anything here shall be unreachable. */ } - /* Set up signal handler to ignore SIGTERM. */ - if (SIG_ERR == std::signal (SIGTERM, SIG_IGN)) { - std::cerr << "Unable to ignore SIGTERM: " << std::strerror (errno) << std::endl; - std::exit (1); - - /* Anything here shall be unreachable. */ + { + struct sigaction sig_action; + sig_action.sa_handler = SIG_IGN; + sig_action.sa_mask = empty_set; + sig_action.sa_flags = SA_RESTART; + + /* Set up signal handler to ignore SIGTERM. */ + if (0 != sigaction (SIGTERM, &sig_action, NULL)) { + std::cerr << "Unable to ignore SIGTERM: " << std::strerror (errno) << std::endl; + kill_pgroup (-1); + + /* Anything here shall be unreachable. */ + } } - std::signal (SIGHUP, kill_pgroup); + { + struct sigaction sig_action; + sig_action.sa_handler = kill_pgroup; + sig_action.sa_mask = empty_set; + sig_action.sa_flags = SA_RESTART; + + if (0 != sigaction (SIGHUP, &sig_action, NULL)) { + std::cerr << "Unable to set up signal handler for SIGHUP: " << std::strerror (errno) << std::endl; + kill_pgroup (-1); + + /* Anything here shall be unreachable. */ + } + } /* Sleep forever... at least one second in each run. */ for (;;) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 70a0f26b02437f9e024a6c967b86e5623eb9e0bb Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Mar 18 01:04:33 2015 +0100 x2goclient.cpp: don't start the UNIX cleanup helper process right after forking. Introduce a new command line option --unixhelper and re-execute the main binary with this new option to indicate that the UNIX cleanup helper tool is requested. It is necessary to call exec() after fork on virtually all operating system, especially on OS X. --- debian/changelog | 5 ++++ src/x2goclient.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 60 insertions(+), 10 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3e0ee58..b6929e5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -39,6 +39,11 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium and we certainly do not need to fork to force it to succeed. Whether we are a process group leader already or become one doesn't matter, if the end result is that we are process group leader. + - x2goclient.cpp: don't start the UNIX cleanup helper process right after + forking, but introduce a new command line option --unixhelper and + re-execute the main binary with this new option to indicate that the + UNIX cleanup helper tool is requested. It is necessary to call exec() + after fork on virtually all operating system, especially on OS X. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index ad613fb..3f11d55 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -22,6 +22,10 @@ #include <cstring> #include <cerrno> #include <cstdlib> +#include <string> +#include <algorithm> +#include <cctype> +#include <vector> #include "unixhelper.h" #include "ongetpass.h" @@ -38,7 +42,28 @@ int fork_helper (int argc, char **argv) { /* Child. */ if (0 == tmp_pid) { /* Starting unixhelper. */ - return (unixhelper::unix_cleanup ()); + std::vector<std::string> new_argv; + new_argv.push (std::string (argv[0])); + new_argv.push ("--unixhelper"); + + std::vector<const char *> new_argv_c_str; + for (const_iterator it = new_argv.begin (); it != new_argv.end (); ++it) { + new_argv_c_str.push ((*it).c_str ()); + } + new_argv_c_str.push (""); + + if (0 != execv (new_argv_c_str.data (), new_argv_c_str.data ())) { + std::cerr << "Failed to re-execute process as UNIX cleanup helper tool: " << std::strerror (errno) << "\n" + << "Terminating and killing parent." << "\n" + << "Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; + + pid_t parent_pid = getppid (); + if (0 != kill (parent_pid, SIGTERM)) { + std::cerr << "Failed to kill parent process: " << std::strerror (errno) << std::endl; + } + + std::exit (EXIT_FAILURE); + } /* Anything here shall be unreachable. */ } @@ -59,15 +84,35 @@ int fork_helper (int argc, char **argv) { int main (int argc, char **argv) { #ifdef Q_OS_UNIX - /* - * setsid() may succeed and we become a session and process - * group leader, or it may fail indicating that we already - * are a process group leader. Either way is fine. - */ - setsid (); - - /* We should be process group leader by now. */ - return (fork_helper (argc, argv)); + /* Scan program arguments for --unixhelper flag. */ + bool unix_helper_request = 0; + for (int i = 0; i < argc; ++i) { + std::string cur_arg (argv[i]); + + /* Make the current argument lowercase. */ + std::transform (cur_arg.begin (), cur_arg.end (), cur_arg.begin (), std::tolower); + + if ((!cur_arg.empty ()) && (cur_arg.compare ("--unixhelper"))) { + unix_helper_request = 1; + break; + } + } + + if (unix_helper_request) { + /* We were instructed to start as the UNIX cleanup helper tool. */ + return (unixhelper::unix_cleanup ()); + } + else { + /* + * setsid() may succeed and we become a session and process + * group leader, or it may fail indicating that we already + * are a process group leader. Either way is fine. + */ + setsid (); + + /* We should be process group leader by now. */ + return (fork_helper (argc, argv)); + } #else /* defined (Q_OS_UNIX) */ return (wrap_x2go_main (argc, argv)); #endif /* defined (Q_OS_UNIX) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit fa2386ebb4139d2bfd9ebf3da10e9db14c1bff5b Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Mar 18 21:08:46 2015 +0100 unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period to 10 seconds. --- debian/changelog | 2 ++ src/unixhelper.cpp | 8 ++++---- src/unixhelper.h | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index d0df940..90a8057 100644 --- a/debian/changelog +++ b/debian/changelog @@ -49,6 +49,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - x2goclient.cpp: create new argv array on the heap instead of on the stack. Stack data will be invalid once the function goes out of scope (which is what execv is doing.) + - unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period + to 10 seconds. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index fdcaac9..d4698df 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -40,8 +40,8 @@ namespace unixhelper { std::cerr << "WARNING: unable to send SIGTERM to process group: " << std::strerror (errno) << std::endl; } - /* Grant a grace period of (at least) 5 seconds. */ - sleep (5); + /* Grant a grace period of (at least) 10 seconds. */ + sleep (10); /* Don't handle any errors here, because we die anyway. */ killpg (getpgrp (), SIGKILL); @@ -98,9 +98,9 @@ namespace unixhelper { } } - /* Sleep forever... at least one second in each run. */ + /* Sleep forever... at least two seconds in each run. */ for (;;) { - sleep (1); + sleep (2); } } } diff --git a/src/unixhelper.h b/src/unixhelper.h index 7ca8b43..9f213a8 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -28,7 +28,7 @@ namespace unixhelper { /* * Unblocks all signals and installs a signal handler for SIGHUP, - * which calls kill_pgroup. + * which calls kill_pgroup(). * * Should signal unblocking or installing the signal handler fail, * an emergency exit is performed and @@ -41,7 +41,7 @@ namespace unixhelper { /* * Kills the whole process group. * First, SIGTERM is sent to the group. - * A 5 seconds grace period is granted to make sure + * A 10 seconds grace period is granted to make sure * processes exit cleanly on their own. * Lastly, SIGKILL is sent to the group -- which also * implies the demise of this program. -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1f23c5d4b81f7db5cbc4084c613393b4504e5f90 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Mar 18 04:39:43 2015 +0100 x2goclient.cpp: fix string comparison. --- debian/changelog | 1 + src/x2goclient.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7c4950f..3fda4a8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -45,6 +45,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium UNIX cleanup helper tool is requested. It is necessary to call exec() after fork on virtually all operating system, especially on OS X. - x2goclient.cpp: fix compile problems introduced with the last commit. + - x2goclient.cpp: fix string comparison. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index 895db0d..eee541f 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -101,7 +101,7 @@ int main (int argc, char **argv) { /* Make the current argument lowercase. */ std::transform (cur_arg.begin (), cur_arg.end (), cur_arg.begin (), ::tolower); - if ((!cur_arg.empty ()) && (cur_arg.compare ("--unixhelper"))) { + if ((!cur_arg.empty ()) && (cur_arg.compare ("--unixhelper") == 0)) { unix_helper_request = 1; break; } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit da9cef8098fe23df8ddc22b799e1d32a0695c27c Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Mar 18 05:51:03 2015 +0100 x2goclient.cpp: create new argv array on the heap instead of on the stack. Stack data will be invalid once the function goes out of scope (which is what execv is doing.) --- debian/changelog | 3 +++ src/x2goclient.cpp | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3fda4a8..d0df940 100644 --- a/debian/changelog +++ b/debian/changelog @@ -46,6 +46,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium after fork on virtually all operating system, especially on OS X. - x2goclient.cpp: fix compile problems introduced with the last commit. - x2goclient.cpp: fix string comparison. + - x2goclient.cpp: create new argv array on the heap instead of on the + stack. Stack data will be invalid once the function goes out of scope + (which is what execv is doing.) [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index eee541f..c8df342 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -47,20 +47,20 @@ int fork_helper (int argc, char **argv) { new_argv.push_back (std::string (argv[0])); new_argv.push_back ("--unixhelper"); - std::vector<char *> new_argv_c_str; + std::vector<char *> *new_argv_c_str = new (std::vector<char *>) (); for (std::vector<std::string>::iterator it = new_argv.begin (); it != new_argv.end (); ++it) { const char *elem = (*it).c_str (); - new_argv_c_str.push_back (strndup (elem, std::strlen (elem))); + new_argv_c_str->push_back (strndup (elem, std::strlen (elem))); } /* Add null pointer as last element. */ { - std::vector<char> tmp; - tmp.push_back (0); - new_argv_c_str.push_back (&tmp.front ()); + std::vector<char> *tmp = new (std::vector<char>) (); + tmp->push_back (0); + new_argv_c_str->push_back (&tmp->front ()); } - if (0 != execv (new_argv_c_str.front (), &(new_argv_c_str.front ()))) { + if (0 != execv (new_argv_c_str->front (), &(new_argv_c_str->front ()))) { std::cerr << "Failed to re-execute process as UNIX cleanup helper tool: " << std::strerror (errno) << "\n" << "Terminating and killing parent." << "\n" << "Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 140f9c41a81fde16ce9d9837e118970febae4877 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Mar 18 21:15:08 2015 +0100 {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to parent PID polling. --- debian/changelog | 2 ++ src/unixhelper.cpp | 9 ++++++++- src/unixhelper.h | 11 +++++++++-- src/x2goclient.cpp | 2 +- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 90a8057..b449be6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -51,6 +51,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium (which is what execv is doing.) - unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period to 10 seconds. + - {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to + parent PID polling. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index d4698df..410c320 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -49,7 +49,7 @@ namespace unixhelper { } - int unix_cleanup () { + int unix_cleanup (const pid_t parent) { /* * Unblock all signals first. * Signal blocks are inherited, so you never you what is currently set. @@ -100,6 +100,13 @@ namespace unixhelper { /* Sleep forever... at least two seconds in each run. */ for (;;) { + pid_t cur_ppid = getppid (); + + /* cur_ppid should match parent, otherwise the parent died. */ + if (cur_ppid != parent) { + kill_pgroup (SIGHUP); + } + sleep (2); } } diff --git a/src/unixhelper.h b/src/unixhelper.h index 9f213a8..7511d4d 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -22,6 +22,7 @@ #define UNIXHELPER_H #include <QtCore/qglobal.h> +#include <unistd.h> #ifdef Q_OS_UNIX @@ -35,8 +36,12 @@ namespace unixhelper { * the whole process group killed. * * Loops indefinitely afterwards. + * + * In this loop, the current parent PID is polled and compared against + * the original value passed via parameter parent. + * Should they mismatch, the parent died and kill_pgroup() is called. */ - int unix_cleanup (); + int unix_cleanup (const pid_t parent); /* * Kills the whole process group. @@ -49,7 +54,9 @@ namespace unixhelper { * signal may be any of: * * -1 to indicate an error leading to emergency termination * * SIGHUP as the standard signal that is sent when the - * group leeader dies + * group leader dies under specific circumstances + * (we cannot rely that this always happens, though, + * so a polling solution is needed, see unix_cleanup().) */ void kill_pgroup (int signal); } diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index c8df342..2c334e1 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -109,7 +109,7 @@ int main (int argc, char **argv) { if (unix_helper_request) { /* We were instructed to start as the UNIX cleanup helper tool. */ - return (unixhelper::unix_cleanup ()); + return (unixhelper::unix_cleanup (getppid ())); } else { /* -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d67815e26eac2c40a472f7eab70d75b6880ef729 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Mar 21 00:00:59 2015 +0100 {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile warnings with GCC. Fix a few whitespace issues. --- debian/changelog | 2 ++ src/appdialog.cpp | 22 ++++++++++++---------- src/configwidget.cpp | 6 ++---- src/onmainwindow.cpp | 5 ++++- src/unixhelper.cpp | 7 +++++++ 5 files changed, 27 insertions(+), 15 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6926e34..c8be5df 100644 --- a/debian/changelog +++ b/debian/changelog @@ -57,6 +57,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium and SIGUSR2. - x2goclient.cpp: fix failing exec() call for the UNIX helper utility: correctly terminate arguments vector. + - {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile + warnings with GCC. Fix a few whitespace issues. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/appdialog.cpp b/src/appdialog.cpp index 4b25ee9..327ffdc 100644 --- a/src/appdialog.cpp +++ b/src/appdialog.cpp @@ -156,16 +156,18 @@ void AppDialog::loadApps() break; } - QTreeWidgetItem* it; - if (app.category==Application::TOP) - it=new QTreeWidgetItem(treeWidget); - else - it=new QTreeWidgetItem(parent); - it->setText(0, app.name); - it->setToolTip(0,app.comment); - it->setIcon(0,app.icon); - it->setData(0, Qt::UserRole, app.exec); - it->setData(0, Qt::UserRole+1, app.comment); + if (parent) { + QTreeWidgetItem* it; + if (app.category==Application::TOP) + it=new QTreeWidgetItem(treeWidget); + else + it=new QTreeWidgetItem(parent); + it->setText(0, app.name); + it->setToolTip(0,app.comment); + it->setIcon(0,app.icon); + it->setData(0, Qt::UserRole, app.exec); + it->setData(0, Qt::UserRole+1, app.comment); + } } treeWidget->sortItems(0,Qt::AscendingOrder); } diff --git a/src/configwidget.cpp b/src/configwidget.cpp index d0f67ba..c450e48 100644 --- a/src/configwidget.cpp +++ b/src/configwidget.cpp @@ -24,8 +24,8 @@ ConfigWidget::ConfigWidget ( QString id, ONMainWindow * mw, { sessionId=id; mainWindow=mw; - miniMode=mw->retMiniMode(); - embedMode=embedMode= mw->getEmbedMode(); + miniMode=mw->retMiniMode(); + embedMode = mw->getEmbedMode(); if(embedMode) sessionId="embedded"; } @@ -34,5 +34,3 @@ ConfigWidget::ConfigWidget ( QString id, ONMainWindow * mw, ConfigWidget::~ConfigWidget() { } - - diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index be271d2..2467d85 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -4296,8 +4296,10 @@ void ONMainWindow::resumeSession ( const x2goSession& s ) if (! startXorgOnStart) startXOrg(); // #endif +#else /* defined (Q_OS_WIN) */ + UNUSED (rootless); +#endif /* defined (Q_OS_WIN) */ -#endif if ( fullscreen ) { geometry="fullscreen"; @@ -10982,6 +10984,7 @@ void ONMainWindow::slotEmbedIntoParentWindow() void ONMainWindow::processSessionConfig() { bool haveKey=false; + UNUSED (haveKey); config.command="KDE"; config.brokerNoAuth=false; diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index acdee33..d5aa67d 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -29,6 +29,7 @@ #include <cstring> #include <cerrno> #include <vector> +#include <cstdlib> /* For documentation please see unixhelper.h. */ @@ -117,6 +118,12 @@ namespace unixhelper { sleep (2); } + + /* + * Anything here shall be unreachable. + * But make compilers happy by returning something. + */ + return (EXIT_SUCCESS); } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7aed6a5db9d7066bf24043a5db1ea2a48d4c6921 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Mar 18 22:22:27 2015 +0100 unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and SIGUSR2. --- debian/changelog | 2 ++ src/unixhelper.cpp | 18 +++++++++++++----- src/unixhelper.h | 3 +++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index b449be6..cf6cff9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -53,6 +53,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium to 10 seconds. - {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to parent PID polling. + - unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 + and SIGUSR2. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index 410c320..acdee33 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -28,7 +28,7 @@ #include <iostream> #include <cstring> #include <cerrno> -#include <cstdlib> +#include <vector> /* For documentation please see unixhelper.h. */ @@ -69,15 +69,23 @@ namespace unixhelper { /* Anything here shall be unreachable. */ } - { + std::vector<int> ignore_signals; + ignore_signals.push_back (SIGINT); + ignore_signals.push_back (SIGTERM); + ignore_signals.push_back (SIGPIPE); + ignore_signals.push_back (SIGQUIT); + ignore_signals.push_back (SIGUSR1); + ignore_signals.push_back (SIGUSR2); + + for (std::vector<int>::iterator it = ignore_signals.begin (); it != ignore_signals.end (); ++it) { struct sigaction sig_action; sig_action.sa_handler = SIG_IGN; sig_action.sa_mask = empty_set; sig_action.sa_flags = SA_RESTART; - /* Set up signal handler to ignore SIGTERM. */ - if (0 != sigaction (SIGTERM, &sig_action, NULL)) { - std::cerr << "Unable to ignore SIGTERM: " << std::strerror (errno) << std::endl; + /* Set up signal handler to ignore the current signal. */ + if (0 != sigaction (*it, &sig_action, NULL)) { + std::cerr << "Unable to ignore signal " << strsignal (*it) << ": " << std::strerror (errno) << std::endl; kill_pgroup (-1); /* Anything here shall be unreachable. */ diff --git a/src/unixhelper.h b/src/unixhelper.h index 7511d4d..a34456e 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -35,6 +35,9 @@ namespace unixhelper { * an emergency exit is performed and * the whole process group killed. * + * The signals SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and + * SIGUSR2 are ignored. + * * Loops indefinitely afterwards. * * In this loop, the current parent PID is polled and compared against -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5dc5188d16f2c7f7433f330528ed909321b406f6 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Mar 20 04:02:06 2015 +0100 x2goclient.cpp: fix failing exec() call for the UNIX helper utility: correctly terminate arguments vector. --- debian/changelog | 2 ++ src/x2goclient.cpp | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index cf6cff9..6926e34 100644 --- a/debian/changelog +++ b/debian/changelog @@ -55,6 +55,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium parent PID polling. - unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and SIGUSR2. + - x2goclient.cpp: fix failing exec() call for the UNIX helper utility: + correctly terminate arguments vector. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index 2c334e1..df53ba1 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -54,11 +54,7 @@ int fork_helper (int argc, char **argv) { } /* Add null pointer as last element. */ - { - std::vector<char> *tmp = new (std::vector<char>) (); - tmp->push_back (0); - new_argv_c_str->push_back (&tmp->front ()); - } + new_argv_c_str->push_back (0); if (0 != execv (new_argv_c_str->front (), &(new_argv_c_str->front ()))) { std::cerr << "Failed to re-execute process as UNIX cleanup helper tool: " << std::strerror (errno) << "\n" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c958dd961fe00446ea0e6abe7487a1eba2f68d7a Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Mar 21 00:04:44 2015 +0100 appdialog.cpp: initialize parent in default case. Another GCC compile warning fix. --- debian/changelog | 2 ++ src/appdialog.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index c8be5df..892bd0e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -59,6 +59,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium correctly terminate arguments vector. - {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile warnings with GCC. Fix a few whitespace issues. + - appdialog.cpp: initialize parent in default case. Another GCC compile + warning fix. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/appdialog.cpp b/src/appdialog.cpp index 327ffdc..f41361c 100644 --- a/src/appdialog.cpp +++ b/src/appdialog.cpp @@ -153,6 +153,7 @@ void AppDialog::loadApps() parent=other; break; default: + parent = NULL; break; } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3dbd27e07e99902f4efa5122780aaf0d80681e30 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Mar 21 03:58:18 2015 +0100 onmainwindow.cpp: correctly use ~/.x2go/.ssh as ssh directory when starting sshd in user mode. Put the authorized_keys file in there. Check and set correct permissions for both the directory and authorized_keys file. Generalize some Windows-specific sections by using QDir and QFile. --- debian/changelog | 4 ++ src/onmainwindow.cpp | 183 +++++++++++++++++++++++++++++++++----------------- 2 files changed, 126 insertions(+), 61 deletions(-) diff --git a/debian/changelog b/debian/changelog index 892bd0e..d7726b8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -61,6 +61,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium warnings with GCC. Fix a few whitespace issues. - appdialog.cpp: initialize parent in default case. Another GCC compile warning fix. + - onmainwindow.cpp: correctly use ~/.x2go/.ssh as ssh directory when + starting sshd in user mode. Put the authorized_keys file in there. Check + and set correct permissions for both the directory and authorized_keys + file. Generalize some Windows-specific sections by using QDir and QFile. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 2467d85..20140f3 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8245,43 +8245,54 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output, QByteArray line = file.readLine(); file.close(); - QString authofname=homeDir; -#ifdef Q_OS_WIN - QDir dir; - dir.mkpath ( authofname+"\\.x2go\\.ssh" ); - x2goDebug<<"Creating "<<authofname+"\\.x2go\\.ssh"; + QDir authorized_keys_dir (homeDir); - authofname=wapiShortFileName ( authofname ) +"/.x2go"; -#endif - authofname+="/.ssh/authorized_keys" ; - file.setFileName ( authofname ); - if ( !file.open ( QIODevice::ReadOnly | QIODevice::Text ) ) - { - printSshDError_noAuthorizedKeysFile(); - QFile::remove - ( key+".pub" ); - return; + /* + * Do the user SSHD/global SSHD dance here and either use the + * private .x2go/.ssh or the global .ssh dir. + */ + if (userSshd) { + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); } + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); + QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); + + /* + * We do not try to create the file first. + * This has been already done in startX2goMount(). + * We wouldn't be here if that failed. + */ + if (!authorized_keys_file.open (QIODevice::ReadOnly | QIODevice::Text)) { + printSshDError_noAuthorizedKeysFile (); + QFile::remove (key + ".pub"); + return; + } - QTemporaryFile tfile ( authofname ); - tfile.open(); - tfile.setAutoRemove ( true ); - QTextStream out ( &tfile ); + QTemporaryFile tfile (authorized_keys_file.fileName ()); + tfile.open (); + tfile.setPermissions (QFile::ReadOwner | QFile::WriteOwner); + tfile.setAutoRemove (true); + QTextStream out (&tfile); - while ( !file.atEnd() ) - { - QByteArray newline = file.readLine(); - if ( newline!=line ) - out<<newline; + /* + * Copy the content of the authorized_keys file to our new temporary file + * and remove the public authorized key for the current "session" again. + */ + while (!authorized_keys_file.atEnd ()) { + QByteArray newline = authorized_keys_file.readLine (); + if (newline != line) + out << newline; } - file.close(); - tfile.close(); - file.remove(); - tfile.copy ( authofname ); - QFile::remove - ( key+".pub" ); + + authorized_keys_file.close (); + tfile.close (); + + authorized_keys_file.remove (); + + tfile.copy (authorized_keys_file.fileName ()); + QFile::remove (key + ".pub"); } @@ -9512,41 +9523,90 @@ void ONMainWindow::startX2goMount() QByteArray line = file.readLine(); file.close(); - QString authofname=homeDir; -#ifdef Q_OS_WIN - QDir tdir; - tdir.mkpath ( authofname+"\\.x2go\\.ssh" ); - x2goDebug<<"Creating "<<authofname+"\\.x2go\\.ssh"; + QDir authorized_keys_dir (homeDir); - authofname=wapiShortFileName ( authofname ) +"/.x2go"; -#endif - authofname+= "/.ssh/authorized_keys" ; + /* + * Do the user SSHD/global SSHD dance here and either use the + * private .x2go/.ssh or the global .ssh dir. + */ + if (userSshd) { + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); + } - QFile file1 ( authofname ); + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); + QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); - if ( !file1.open ( QIODevice::WriteOnly | QIODevice::Text | - QIODevice::Append ) ) - { - QString message=tr ( "Unable to write:\n" ) + authofname; - QMessageBox::critical ( 0l,tr ( "Error" ),message, - QMessageBox::Ok, - QMessageBox::NoButton ); - QFile::remove - ( fsExportKey+".pub" ); - return; + if (userSshd) { + x2goDebug << "Creating dir " << authorized_keys_dir.absolutePath (); + authorized_keys_dir.mkpath (authorized_keys_dir.absolutePath ()); + } + x2goDebug << "Potentially creating file " << authorized_keys_file.fileName (); + if (!authorized_keys_file.open (QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { + QString message = tr ("Unable to create or append to file: ") + authorized_keys_file.fileName (); + QMessageBox::critical (0l, tr ("Error"), message, + QMessageBox::Ok, QMessageBox::NoButton); + QFile::remove (fsExportKey + ".pub"); + return; } - directory* dir=getExpDir ( fsExportKey ); - bool rem=dir->isRemovable; - if ( !dir ) - return; - QTextStream out ( &file1 ); - out<<line; - file1.close(); +#ifdef Q_OS_UNIX + QFile::Permissions authorized_keys_file_perm = authorized_keys_file.permissions (); + QFile::Permissions authorized_keys_file_target_perm = QFile::ReadOwner | QFile::WriteOwner; + + bool permission_error = false; + + /* + * Try to set the permissions if they are wrong. + * (sshd would disallow such a file.) + */ + if (authorized_keys_file_perm != authorized_keys_file_target_perm) { + if (!authorized_keys_file.setPermissions (authorized_keys_file_target_perm)) { + /* FIXME: use a function for this... */ + QString message = tr ("Unable to change the permissions of file: ") + authorized_keys_file.fileName (); + message += "\n" + tr ("This is an error because sshd would deny such a file."); + QMessageBox::critical (NULL, tr ("Error"), message, + QMessageBox::Ok, QMessageBox::NoButton); + permission_error = true; + } + } + + QFile::Permissions authorized_keys_dir_perm = QFile (authorized_keys_dir.absolutePath ()).permissions (); + QFile::Permissions authorized_keys_dir_target_perm = QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner; + + /* + * Try to set the permissions if they are wrong. + * (sshd would disallow such a directory.) + */ + if (authorized_keys_dir_perm != authorized_keys_dir_target_perm) { + if (!QFile (authorized_keys_dir.absolutePath ()).setPermissions (authorized_keys_dir_target_perm)) { + /* FIXME: use a function for this... */ + QString message = tr ("Unable to change the permissions of directory: ") + authorized_keys_dir.absolutePath (); + message += "\n" + tr ("This is an error because sshd would deny such a directory."); + QMessageBox::critical (NULL, tr ("Error"), message, + QMessageBox::Ok, QMessageBox::NoButton); + permission_error = true; + } + } - x2goDebug<<"Temporarily activated public key from file "<<fsExportKey<<".pub."<<endl; + if (permission_error) { + QFile::remove (fsExportKey + ".pub"); + return; + } +#endif /* defined (Q_OS_UNIX) */ + + directory* dir = getExpDir (fsExportKey); + bool rem = dir->isRemovable; + if (!dir) { + return; + } + + QTextStream out (&authorized_keys_file); + out << line; + authorized_keys_file.close (); + + x2goDebug << "Temporarily activated public key from file " << fsExportKey << ".pub."; QString passwd=getCurrentPass(); QString user=getCurrentUname(); @@ -10329,18 +10389,19 @@ void ONMainWindow::generateEtcFiles() QFile file ( etcDir +"/sshd_config" ); if ( !file.open ( QIODevice::WriteOnly | QIODevice::Text ) ) return; + QString authKeyPath = homeDir + "/.x2go/.ssh/authorized_keys"; #ifdef Q_OS_WIN - QString authKeyPath=cygwinPath ( homeDir+"/.x2go/.ssh/authorized_keys" ); - authKeyPath.replace(wapiGetUserName(),"%u"); -#endif + authKeyPath = cygwinPath (authKeyPath); + authKeyPath.replace (wapiGetUserName (), "%u"); +#endif /* defined (Q_OS_WIN) */ QTextStream out ( &file ); out<<"StrictModes no\n"<< "UsePrivilegeSeparation no\n"<< "PidFile \"" + varDir + "/sshd.pid\"\n" << + "AuthorizedKeysFile \"" << authKeyPath << "\"\n" << #ifdef Q_OS_WIN "Subsystem shell "<< wapiShortFileName ( appDir) +"/sh"+"\n"<< "Subsystem sftp "<< wapiShortFileName ( appDir) +"/sftp-server"+"\n"<< - "AuthorizedKeysFile \""<<authKeyPath<<"\"\n"; #else "Subsystem sftp " /* This may need some sanitization, i.e., appDir could potentially include whitespace. */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f189d3e51878a763798dec2dcdfc91feb412dbd5 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Mar 21 23:30:54 2015 +0100 compat.{cpp,h}: new files. Implements strndup on OS X 10.6 and below. Add to x2goclient.cpp, x2goclient.pro and x2goclient.pro.maemo. --- debian/changelog | 2 ++ src/compat.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/compat.h | 38 ++++++++++++++++++++++++++++++++++++++ src/x2goclient.cpp | 1 + x2goclient.pro | 6 ++++-- x2goclient.pro.maemo | 6 ++++-- 6 files changed, 98 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index d7726b8..e572dff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -65,6 +65,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium starting sshd in user mode. Put the authorized_keys file in there. Check and set correct permissions for both the directory and authorized_keys file. Generalize some Windows-specific sections by using QDir and QFile. + - compat.{cpp,h}: new files. Implements strndup on OS X 10.6 and below. + Add to x2goclient.cpp, x2goclient.pro and x2goclient.pro.maemo. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/compat.cpp b/src/compat.cpp new file mode 100644 index 0000000..877d07b --- /dev/null +++ b/src/compat.cpp @@ -0,0 +1,49 @@ +/*************************************************************************** + * Copyright (C) 2015 by Mihai Moldovan <ionic@ionic.de> +49 721 14595728 * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "compat.h" + +#ifdef Q_OS_DARWIN +/* + * strndup() is not available on 10.6 and below, define a compat version here. + * Shameless copy from libiberty. + */ +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +#include <stddef.h> +#include <string.h> +#include <stdlib.h> + +inline char *strndup (const char *s, size_t n) { + char *result; + size_t len = strlen (s); + + if (n < len) { + len = n; + } + + result = (char *) malloc (len + 1); + if (!result) { + return (0); + } + + result[len] = '\0'; + return ((char *) memcpy (result, s, len)); +} +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED */ +#endif /* defined (Q_OS_DARWIN) */ diff --git a/src/compat.h b/src/compat.h new file mode 100644 index 0000000..8b9d77e --- /dev/null +++ b/src/compat.h @@ -0,0 +1,38 @@ +/*************************************************************************** + * Copyright (C) 2015 by Mihai Moldovan <ionic@ionic.de> +49 721 14595728 * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + + +#ifndef COMPAT_H +#define COMPAT_H + +#ifdef Q_OS_DARWIN +/* + * strndup() is not available on 10.6 and below, define a compat version here. + * Shameless copy from libiberty. + */ +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +#include <stddef.h> +#include <string.h> +#include <stdlib.h> + +inline char *strndup (const char *s, size_t n); +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED */ +#endif /* defined (Q_OS_DARWIN) */ + +#endif /* !defined (COMPAT_H) */ diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index df53ba1..b201a4e 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -30,6 +30,7 @@ #include "unixhelper.h" #include "ongetpass.h" +#include "compat.h" int wrap_x2go_main (int argc, char **argv) { return (x2goMain (argc, argv)); diff --git a/x2goclient.pro b/x2goclient.pro index 47b2197..a7b74a0 100644 --- a/x2goclient.pro +++ b/x2goclient.pro @@ -80,7 +80,8 @@ HEADERS += src/configdialog.h \ src/folderexplorer.h \ src/non_modal_messagebox.h \ src/help.h \ - src/unixhelper.h + src/unixhelper.h \ + src/compat.h SOURCES += src/sharewidget.cpp \ src/settingswidget.cpp \ @@ -124,7 +125,8 @@ SOURCES += src/sharewidget.cpp \ src/folderexplorer.cpp \ src/non_modal_messagebox.cpp \ src/help.cpp \ - src/unixhelper.cpp + src/unixhelper.cpp \ + src/compat.cpp LIBS += -lssh win32:LIBS += -lAdvAPI32 -lshell32 -lUser32 diff --git a/x2goclient.pro.maemo b/x2goclient.pro.maemo index 63cc3d8..905ef77 100644 --- a/x2goclient.pro.maemo +++ b/x2goclient.pro.maemo @@ -36,7 +36,8 @@ HEADERS += src/configdialog.h \ src/sharewidget.h \ src/clicklineedit.h \ src/help.h \ - src/unixhelper.h + src/unixhelper.h \ + src/compat.h SOURCES += src/sharewidget.cpp \ src/settingswidget.cpp \ @@ -64,7 +65,8 @@ SOURCES += src/sharewidget.cpp \ src/wapi.cpp \ src/clicklineedit.cpp \ src/help.cpp \ - src/unixhelper.cpp + src/unixhelper.cpp \ + src/compat.cpp TEMPLATE = app TARGET = -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b387a7f9c7ee120fbdbaa0c6a47650d7c5ee3553 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Mar 21 23:40:41 2015 +0100 compat.{cpp,h}: remove inline keyword, because function is not defined in header file. --- debian/changelog | 2 ++ src/compat.cpp | 2 +- src/compat.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index e572dff..98760c9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -67,6 +67,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium file. Generalize some Windows-specific sections by using QDir and QFile. - compat.{cpp,h}: new files. Implements strndup on OS X 10.6 and below. Add to x2goclient.cpp, x2goclient.pro and x2goclient.pro.maemo. + - compat.{cpp,h}: remove inline keyword, because function is not defined + in header file. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/compat.cpp b/src/compat.cpp index 877d07b..c443489 100644 --- a/src/compat.cpp +++ b/src/compat.cpp @@ -29,7 +29,7 @@ #include <string.h> #include <stdlib.h> -inline char *strndup (const char *s, size_t n) { +char *strndup (const char *s, size_t n) { char *result; size_t len = strlen (s); diff --git a/src/compat.h b/src/compat.h index 8b9d77e..36b71ef 100644 --- a/src/compat.h +++ b/src/compat.h @@ -31,7 +31,7 @@ #include <string.h> #include <stdlib.h> -inline char *strndup (const char *s, size_t n); +char *strndup (const char *s, size_t n); #endif /* MAC_OS_X_VERSION_MIN_REQUIRED */ #endif /* defined (Q_OS_DARWIN) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2778e19204f74e5a31ebfe7ce3b1a66d61f00f2a Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Mar 21 23:51:37 2015 +0100 compat.h: include QtCore/qglobal.h for Q_OS_... macros. --- debian/changelog | 1 + src/compat.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 98760c9..18631b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -69,6 +69,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium Add to x2goclient.cpp, x2goclient.pro and x2goclient.pro.maemo. - compat.{cpp,h}: remove inline keyword, because function is not defined in header file. + - compat.h: include QtCore/qglobal.h for Q_OS_... macros. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/compat.h b/src/compat.h index 36b71ef..39da9eb 100644 --- a/src/compat.h +++ b/src/compat.h @@ -17,10 +17,11 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ - #ifndef COMPAT_H #define COMPAT_H +#include <QtCore/qglobal.h> + #ifdef Q_OS_DARWIN /* * strndup() is not available on 10.6 and below, define a compat version here. -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 59df0d679e5e346a915c208eb92f536b69b73372 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 29 02:34:13 2015 +0200 pulsemanager.{cpp,h}: new class for PulseAudio management. --- debian/changelog | 1 + src/pulsemanager.cpp | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/pulsemanager.h | 92 +++++++++++++++++ 3 files changed, 363 insertions(+) diff --git a/debian/changelog b/debian/changelog index 18631b9..40e3174 100644 --- a/debian/changelog +++ b/debian/changelog @@ -70,6 +70,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - compat.{cpp,h}: remove inline keyword, because function is not defined in header file. - compat.h: include QtCore/qglobal.h for Q_OS_... macros. + - pulsemanager.{cpp,h}: new class for PulseAudio management. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp new file mode 100644 index 0000000..af1ba2b --- /dev/null +++ b/src/pulsemanager.cpp @@ -0,0 +1,270 @@ +/*************************************************************************** + * Copyright (C) 2012-2015 by Mihai Moldovan <ionic@ionic.de> * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "pulsemanager.h" + +#ifndef DEBUG +#define DEBUG_UNDEF +#define DEBUG +#endif + +PulseManager::PulseManager () { + _pulse_X2Go = "/.x2go/pulse"; + + _pulse_dir = QDir (QDir::homePath ()); + _pulse_dir.mkpath (_pulse_dir.absolutePath () + _pulse_X2Go + "/tmp"); + _pulse_dir.cd (_pulse_X2Go.mid (1)); + + _env = QProcessEnvironment::systemEnvironment (); + _env.insert ("HOME", _pulse_dir.absolutePath ()); + _env.insert ("TEMP", _pulse_dir.absolutePath () + "/tmp"); + + _pulse_port = 4713; + + _state = QProcess::NotRunning; + + _pulse_server = 0; + + _app_dir = QApplication::applicationDirPath (); +} + +PulseManager::~PulseManager () { + if (_pulse_server && is_server_running ()) + shutdown (); + + delete (_pulse_server); +} + +void PulseManager::start () { + assert (!is_server_running ()); + + delete (_pulse_server); + + _pulse_server = new QProcess (0); + _state = QProcess::Starting; + +#ifdef Q_OS_DARWIN + start_osx (); +#elif defined (Q_OS_WIN) + start_win (); +#elif defined (Q_OS_LINUX) + start_linux (); +#endif +} + +void PulseManager::start_osx () { + find_port (); + + if (generate_server_config () && generate_client_config ()) { + cleanup_client_dir (); + + _pulse_server->setProcessEnvironment (_env); + + QStringList args; + args << "--exit-idle-time=-1" << "-n" + << "-F" << _pulse_dir.absolutePath () + "/config.pa" + << "-p" + << QDir (_app_dir + + "/../Frameworks/pulse-2.0/modules").absolutePath () + << "--high-priority"; +#ifdef DEBUG + args << "--log-level=debug"; +#endif + + _pulse_server->setWorkingDirectory (_app_dir + "/../exe/"); + _pulse_server->start (_app_dir + "/../exe/pulseaudio", args); + + if (_pulse_server->waitForStarted ()) { + x2goDebug << "pulse started with" << args << "waiting for finish..."; + _state = QProcess::Running; + + connect (_pulse_server, SIGNAL (finished (int)), + this, SLOT (on_pulse_finished (int))); + +#ifdef DEBUG + // Give PA a little time to come up. + QTimer::singleShot (5000, this, SLOT (slot_play_startup_sound ())); +#endif + } + } +} + +void PulseManager::find_port () { + QTcpSocket tcpSocket (0); + bool free = false; + + do { + tcpSocket.connectToHost ("127.0.0.1", _pulse_port); + + if (tcpSocket.waitForConnected (1000)) { + tcpSocket.close (); + free = false; + _pulse_port++; + } + else + free = true; + } while (!free); +} + +bool PulseManager::generate_server_config () { + QString config_file_name = _pulse_dir.absolutePath () + "/config.pa"; + QTemporaryFile config_tmp_file (_pulse_dir.absolutePath () + "/tmp/tmpconfig"); + X2goSettings settings ("settings"); + bool disable_input = false; + bool ret = false; + + disable_input = settings.setting ()->value ("soundnoinput", + (QVariant) false).toBool (); + + if (config_tmp_file.open ()) { + QTextStream config_tmp_file_stream (&config_tmp_file); + + config_tmp_file_stream << "load-module module-native-protocol-tcp port=" + + QString::number (_pulse_port) << endl; + config_tmp_file_stream << "load-module module-native-protocol-unix" << endl; + config_tmp_file_stream << "load-module module-coreaudio-detect"; + + if (disable_input) + config_tmp_file_stream << " record=0"; + + config_tmp_file_stream << endl; + + QFile config_file (config_file_name); + if (QFile::exists (config_file_name)) + QFile::remove (config_file_name); + + config_tmp_file.copy (config_file_name); + config_tmp_file.remove (); + + ret = true; + } + + return (ret); +} + +bool PulseManager::generate_client_config () { + QTemporaryFile client_config_tmp_file (_pulse_dir.absolutePath () + + "/tmp/tmpconfig"); + QString client_config_file_name (_pulse_dir.absolutePath () + "/.pulse/client.conf"); + bool ret = false; + + if (client_config_tmp_file.open ()) { + QTextStream config_tmp_file_stream (&client_config_tmp_file); + + config_tmp_file_stream << "autospawn=no" << endl; + config_tmp_file_stream << "daemon-binary=" + << QDir (_app_dir + + "/../exe/pulseaudio").absolutePath () + << endl; + + if (QFile::exists (client_config_file_name)) + QFile::remove (client_config_file_name); + + client_config_tmp_file.copy (client_config_file_name); + client_config_tmp_file.remove (); + + ret = true; + } + + return (ret); +} + +void PulseManager::cleanup_client_dir () { + // PA expects $HOME/.pulse/$HOST-runtime to be a symbolic link + // and will fail, if it's just a plain directory on Mac OS X. + // Delete it first. + QDir machine_dir (_pulse_dir.absolutePath () + "/.pulse/" + + QHostInfo::localHostName () + "-runtime"); + + if (QFile::exists (machine_dir.absolutePath () + "/pid")) + QFile::remove (machine_dir.absolutePath () + "/pid"); + + if (machine_dir.exists ()) + machine_dir.remove (machine_dir.absolutePath ()); +} + +void PulseManager::slot_play_startup_sound () { + QProcess play_file (0); + + play_file.setWorkingDirectory (_pulse_server->workingDirectory ()); + play_file.setProcessEnvironment (_env); + play_file.start (_app_dir + "/../exe/paplay " + + _app_dir + "/../Resources/startup.wav"); + + if (play_file.waitForStarted ()) + play_file.waitForFinished (); +} + +void PulseManager::on_pulse_finished (int exit_code) { + if (!exit_code) + x2goDebug << "Warning! Pulseaudio's exit code is non-zero."; + + QByteArray ba = _pulse_server->readAllStandardOutput (); + char *data = ba.data (); + std::cout << data; + ba = _pulse_server->readAllStandardError (); + data = ba.data (); + std::cout << data; + + _state = QProcess::NotRunning; + emit (sig_pulse_server_terminated ()); +} + +bool PulseManager::is_server_running () { + if (_pulse_server) + return (_pulse_server->state () == QProcess::Running); + else + return (false); +} + +void PulseManager::shutdown () { + QEventLoop loop; + + connect (this, SIGNAL (sig_pulse_server_terminated ()), + &loop, SLOT (quit ())); + + _pulse_server->terminate (); + + loop.exec (); +} + +int PulseManager::get_pulse_port () { + return (_pulse_port); +} + +void PulseManager::set_pulse_port (int pulse_port) { + _pulse_port = pulse_port; +} + +void PulseManager::relaunch () { + if (_pulse_server && is_server_running ()) + shutdown (); + + x2goDebug << "restarting pulse"; + start (); +} + +QProcess::ProcessState PulseManager::state () { + return (_state); +} + +#ifdef DEBUG_UNDEF +#undef DEBUG +#undef DEBUG_UNDEF +#endif diff --git a/src/pulsemanager.h b/src/pulsemanager.h new file mode 100644 index 0000000..fc0a989 --- /dev/null +++ b/src/pulsemanager.h @@ -0,0 +1,92 @@ +/*************************************************************************** + * Copyright (C) 2012-2015 by Mihai Moldovan <ionic@ionic.de> * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef PULSEMANAGER_H +#define PULSEMANAGER_H + +#ifdef NDEBUG +#define NDEBUG_DEFINE +#undef NDEBUG +#endif + +#include <iostream> +#include <QDir> +#include <QTcpSocket> +#include <QEventLoop> +#include <QTemporaryFile> +#include <QHostInfo> +#include <QProcess> +#include <QApplication> +#include <QTimer> +#include <assert.h> +#include "x2gologdebug.h" +#include "x2gosettings.h" + +class PulseManager: public QObject +{ + Q_OBJECT; + +public: + PulseManager (); + ~PulseManager (); + int get_pulse_port (); + void set_pulse_port (int pulse_port); + QProcess::ProcessState state (); + +public slots: + void start (); + void relaunch (); + +private: + PulseManager (const PulseManager &other); + void start_osx (); + // FIXME + void start_win (); + // FIXME + void start_linux (); + void find_port (); + bool generate_server_config (); + bool generate_client_config (); + void cleanup_client_dir (); + void shutdown (); + bool is_server_running (); + +private slots: + void on_pulse_finished (int exit_code); + void slot_play_startup_sound (); + +signals: + void sig_pulse_server_terminated (); + +private: + QString _pulse_X2Go; + QDir _pulse_dir; + QProcessEnvironment _env; + QProcess *_pulse_server; + int _pulse_port; + QProcess::ProcessState _state; + QString _app_dir; +}; + +#ifdef NDEBUG_DEFINE +#define NDEBUG +#undef NDEBUG_DEFINE +#endif + +#endif // PULSEMANAGER_H -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e52da111664464d14f0c86f7ede6e343d9aac99a Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 29 02:36:24 2015 +0200 x2goclient.pro{maemo}: reference new pulsemanager.{cpp,h} files. --- debian/changelog | 1 + x2goclient.pro | 6 ++++-- x2goclient.pro.maemo | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 40e3174..c75e6c8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -71,6 +71,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium in header file. - compat.h: include QtCore/qglobal.h for Q_OS_... macros. - pulsemanager.{cpp,h}: new class for PulseAudio management. + - x2goclient.pro{,.maemo}: reference new pulsemanager.{cpp,h} files. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/x2goclient.pro b/x2goclient.pro index a7b74a0..a5e421f 100644 --- a/x2goclient.pro +++ b/x2goclient.pro @@ -81,7 +81,8 @@ HEADERS += src/configdialog.h \ src/non_modal_messagebox.h \ src/help.h \ src/unixhelper.h \ - src/compat.h + src/compat.h \ + src/pulsemanager.h SOURCES += src/sharewidget.cpp \ src/settingswidget.cpp \ @@ -126,7 +127,8 @@ SOURCES += src/sharewidget.cpp \ src/non_modal_messagebox.cpp \ src/help.cpp \ src/unixhelper.cpp \ - src/compat.cpp + src/compat.cpp \ + src/pulsemanager.cpp LIBS += -lssh win32:LIBS += -lAdvAPI32 -lshell32 -lUser32 diff --git a/x2goclient.pro.maemo b/x2goclient.pro.maemo index 905ef77..4a06622 100644 --- a/x2goclient.pro.maemo +++ b/x2goclient.pro.maemo @@ -37,7 +37,8 @@ HEADERS += src/configdialog.h \ src/clicklineedit.h \ src/help.h \ src/unixhelper.h \ - src/compat.h + src/compat.h \ + src/pulsemanager.h SOURCES += src/sharewidget.cpp \ src/settingswidget.cpp \ @@ -66,7 +67,8 @@ SOURCES += src/sharewidget.cpp \ src/clicklineedit.cpp \ src/help.cpp \ src/unixhelper.cpp \ - src/compat.cpp + src/compat.cpp \ + src/pulsemanager.cpp TEMPLATE = app TARGET = -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 518d973db96c2cb7e3cb02bc3f1df530a53c1328 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:16:27 2015 +0200 macbuild.sh: add new MACPORTS_PREFIX detection/variable. --- debian/changelog | 1 + macbuild.sh | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index c75e6c8..8724bf9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -72,6 +72,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - compat.h: include QtCore/qglobal.h for Q_OS_... macros. - pulsemanager.{cpp,h}: new class for PulseAudio management. - x2goclient.pro{,.maemo}: reference new pulsemanager.{cpp,h} files. + - macbuild.sh: add new MACPORTS_PREFIX detection/variable. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 64a93ec..6e37740 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -32,6 +32,7 @@ usage() { printf "\tDEBUG\t\t\t\tenables or disables debug builds [boolean]\n\t\t\t\t\tdefault: disabled\n" printf "\tBUNDLE\t\t\t\tenables or disables library bundling and the creation of a .dmg installer [boolean]\n\t\t\t\t\tdefault: enabled\n" printf "\tUNIVERSAL\t\t\tenables or disables x86 support. x86_64 support is always enabled [boolean]\n\t\t\t\t\tdefault: enabled\n" + printf "\tMACPORTS_PREFIX\t\t\tsets the (MacPorts) prefix used to detect PulseAudio and nxproxy binaries\n\t\t\t\t\tdefault: /opt/local/\n" printf "\n" printf "Boolean values help:\n" printf "\ta value of ${NO_VAL} will be treated as false\n" @@ -54,6 +55,16 @@ PROJECT="${TOP_DIR}/${NAME}.pro" PKG_DMG="${TOP_DIR}/pkg-dmg" NXPROXY="$(which nxproxy)" +# Try to find the MacPorts prefix. +typeset MACPORTS_PREFIX_SEARCH="" +if type -P port >/dev/null 2>&1; then + MACPORTS_PREFIX_SEARCH="$(type -P port)" + MACPORTS_PREFIX_SEARCH="${MACPORTS_PREFIX_SEARCH%%bin/port}" +else + # Port not being part find in ${PATH} doesn't necessarily mean it isn't available. + # Try to guess. + MACPORTS_PREFIX_SEARCH="/opt/local/" +fi : ${SDK:="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk"} : ${MACOSX_DEPLOYMENT_TARGET:="10.7"} @@ -61,6 +72,9 @@ NXPROXY="$(which nxproxy)" : ${DEBUG:="0"} : ${BUNDLE:="1"} : ${UNIVERSAL:="1"} +: ${MACPORTS_PREFIX:="${MACPORTS_PREFIX_SEARCH}"} + +unset MACPORTS_PREFIX_SEARCH FORCE_STDLIB="$(make_boolean "${FORCE_STDLIB}")" DEBUG="$(make_boolean "${DEBUG}")" @@ -114,10 +128,6 @@ pushd "${BUILD_DIR}" phase "Running lrelease" lrelease "${PROJECT}" - -# WILL BE REMOVED IN OTHER BRANCH - ONLY HERE FOR COMPAT REASONS -MACPORTS_PREFIX="/opt/local" - phase "Running qmake" qmake -config "${BUILD_MODE}" -spec macx-g++ "${PROJECT}" \ CONFIG+="${BUILD_ARCH}" \ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8c5236bebd865d2f1ee1d8df23e1e349cb817dee Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:19:59 2015 +0200 macbuild.sh: add new dependency_error() helper function. --- debian/changelog | 1 + macbuild.sh | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index 8724bf9..f743c09 100644 --- a/debian/changelog +++ b/debian/changelog @@ -73,6 +73,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: new class for PulseAudio management. - x2goclient.pro{,.maemo}: reference new pulsemanager.{cpp,h} files. - macbuild.sh: add new MACPORTS_PREFIX detection/variable. + - macbuild.sh: add new dependency_error() helper function. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 6e37740..83df7ea 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -41,6 +41,20 @@ usage() { exit 2 } +dependency_error() { + exec >&2 + + typeset element="${1}"; shift + typeset component="${1}"; shift + typeset type="${1}"; shift + + echo "${element} ${type} not found." + echo "Install ${component} -- e.g., via "port -vt install ${component}" if using MacPorts." + echo "If ${component} is already installed, try passing MACPORTS_PREFIX if the autodetected or default value (${MACPORTS_PREFIX}) does not match your setup." + + exit 3 +} + MATCH_HELP='(^((-h)|(--help))([ ]|$))|([ ]+((-h)|(--help))([ ]|$))' [ -n "${*}" ] && [[ "${*}" =~ ${MATCH_HELP} ]] && usage -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 022c1b352ecc151df1b2bcf5735f17cf3b6fb387 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:22:49 2015 +0200 macbuild.sh: add new get_nesting_level() helper function. --- debian/changelog | 1 + macbuild.sh | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index d3d11a0..d302e9c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -75,6 +75,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add new MACPORTS_PREFIX detection/variable. - macbuild.sh: add new dependency_error() helper function. - macbuild.sh: add new lazy_canonical_path() helper function. + - macbuild.sh: add new get_nesting_level() helper function. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 0c8e47b..5df4670 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -67,6 +67,20 @@ lazy_canonical_path() { printf "${old_path}" } +get_nesting_level() { +set -x + typeset -i level=0 + typeset path="${1}" + + while [ -n "${path}" ] && [ "${path}" != "." ] && [ "${path}" != "/" ]; do + i="$((${i} + 1))" + path="$(dirname "${path}")" + done + + printf "${level}" +set +x +} + MATCH_HELP='(^((-h)|(--help))([ ]|$))|([ ]+((-h)|(--help))([ ]|$))' [ -n "${*}" ] && [[ "${*}" =~ ${MATCH_HELP} ]] && usage -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit bc816f195d1956c58b1b9b62f2cf8db99be23718 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:21:31 2015 +0200 macbuild.sh: add new lazy_canonical_path() helper function. --- debian/changelog | 1 + macbuild.sh | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index f743c09..d3d11a0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -74,6 +74,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - x2goclient.pro{,.maemo}: reference new pulsemanager.{cpp,h} files. - macbuild.sh: add new MACPORTS_PREFIX detection/variable. - macbuild.sh: add new dependency_error() helper function. + - macbuild.sh: add new lazy_canonical_path() helper function. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 83df7ea..0c8e47b 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -55,6 +55,18 @@ dependency_error() { exit 3 } +lazy_canonical_path() { + typeset path="${1}" + + typeset old_path="" + while [ "${old_path}" != "${path}" ]; do + old_path="${path}" + path="${path//\/\///}" + done + + printf "${old_path}" +} + MATCH_HELP='(^((-h)|(--help))([ ]|$))|([ ]+((-h)|(--help))([ ]|$))' [ -n "${*}" ] && [[ "${*}" =~ ${MATCH_HELP} ]] && usage -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 402dddfe241002c2bd7fa445979f65b0174f4ccb Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:24:37 2015 +0200 macbuild.sh: add new repeat_str() helper function. --- debian/changelog | 1 + macbuild.sh | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/debian/changelog b/debian/changelog index d302e9c..d57daa9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -76,6 +76,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add new dependency_error() helper function. - macbuild.sh: add new lazy_canonical_path() helper function. - macbuild.sh: add new get_nesting_level() helper function. + - macbuild.sh: add new repeat_str() helper function. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 5df4670..e264e86 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -81,6 +81,22 @@ set -x set +x } +repeat_str() { # INPUT COUNT + typeset INPUT="${1:?"Error: no input string passed to ${FUNCNAME}()."}" + typeset COUNT="${2:?"Error: no count passed to ${FUNCNAME}()."}" + + typeset ret="" + typeset -i i=0 + while [ "${i}" -lt "${COUNT}" ]; do + ret="${ret}$(printf "${INPUT}")" + i=$((${i} + 1)) + done + + printf "${ret}" + + return 0 +} + MATCH_HELP='(^((-h)|(--help))([ ]|$))|([ ]+((-h)|(--help))([ ]|$))' [ -n "${*}" ] && [[ "${*}" =~ ${MATCH_HELP} ]] && usage -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b34c4be9b8e50f0c96edcd161aba482f1624cb3f Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:28:02 2015 +0200 macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. --- debian/changelog | 1 + macbuild.sh | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d57daa9..aa07323 100644 --- a/debian/changelog +++ b/debian/changelog @@ -77,6 +77,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add new lazy_canonical_path() helper function. - macbuild.sh: add new get_nesting_level() helper function. - macbuild.sh: add new repeat_str() helper function. + - macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index e264e86..9ea2d32 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -110,7 +110,6 @@ DMGFILE="${BUILD_DIR}/${NAME}.dmg" PROJECT="${TOP_DIR}/${NAME}.pro" PKG_DMG="${TOP_DIR}/pkg-dmg" -NXPROXY="$(which nxproxy)" # Try to find the MacPorts prefix. typeset MACPORTS_PREFIX_SEARCH="" if type -P port >/dev/null 2>&1; then @@ -122,6 +121,8 @@ else MACPORTS_PREFIX_SEARCH="/opt/local/" fi +NXPROXY="nxproxy" + : ${SDK:="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk"} : ${MACOSX_DEPLOYMENT_TARGET:="10.7"} : ${FORCE_STDLIB:="0"} @@ -164,6 +165,11 @@ else fi fi +# Gather files. +NXPROXY="$(lazy_canonical_path "${MACPORTS_PREFIX}/bin/${NXPROXY}")" + +[ -x "${NXPROXY}" ] || dependency_error "nxproxy" "nxproxy" "binary" + set -e phase "Cleaning" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 92669a002d0482e231386912552f8a5ae20f71a8 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:30:08 2015 +0200 macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. Create directories based on that. Use them when bundling. --- debian/changelog | 2 ++ macbuild.sh | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index aa07323..4c7c75b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -78,6 +78,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add new get_nesting_level() helper function. - macbuild.sh: add new repeat_str() helper function. - macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. + - macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. Create + directories based on that. Use them when bundling. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 9ea2d32..e0db1f7 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -106,6 +106,8 @@ TOP_DIR="$(dirname "$0")" [[ "${TOP_DIR}" == /* ]] || TOP_DIR="${PWD}/${TOP_DIR#./}" BUILD_DIR="${TOP_DIR}/client_build" APPBUNDLE="${BUILD_DIR}/${NAME}.app" +EXE_DIR="${APPBUNDLE}/Contents/exe/" +FRAMEWORKS_DIR="${APPBUNDLE}/Contents/Frameworks/" DMGFILE="${BUILD_DIR}/${NAME}.dmg" PROJECT="${TOP_DIR}/${NAME}.pro" PKG_DMG="${TOP_DIR}/pkg-dmg" @@ -202,15 +204,17 @@ qmake -config "${BUILD_MODE}" -spec macx-g++ "${PROJECT}" \ phase "Running make" make -j2 +mkdir -p "${EXE_DIR}/" +mkdir -p "${FRAMEWORKS_DIR}/" + phase "Copying nxproxy" -mkdir -p "${APPBUNDLE}/Contents/exe" -cp "${NXPROXY}" "${APPBUNDLE}/Contents/exe" +cp -av "${NXPROXY}" "${EXE_DIR}/" if [ "${BUNDLE}" = "1" ]; then dylibbundler \ - --fix-file "${APPBUNDLE}/Contents/exe/nxproxy" \ + --fix-file "${EXE_DIR}/nxproxy" \ --bundle-deps \ - --dest-dir "${APPBUNDLE}/Contents/Frameworks" \ + --dest-dir "${FRAMEWORKS_DIR}/" \ --install-path "@executable_path/../Frameworks/" \ --create-dir -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5cf57efed16b4d2ac7e2b64604cc6e5e8b1ae85b Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:33:59 2015 +0200 macbuild.sh: define PulseAudio libraries and binaries to be later copied. Discover them using MACPORTS_PREFIX. Error out if any component was not found. --- debian/changelog | 3 +++ macbuild.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4c7c75b..a199a35 100644 --- a/debian/changelog +++ b/debian/changelog @@ -80,6 +80,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. - macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. Create directories based on that. Use them when bundling. + - macbuild.sh: define PulseAudio libraries and binaries to be later + copied. Discover them using MACPORTS_PREFIX. Error out if any component + was not found. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index e0db1f7..ae7cc7f 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -124,6 +124,13 @@ else fi NXPROXY="nxproxy" +PULSEAUDIO_BINARIES=( "pulseaudio" "esdcompat" "pacat" "pacmd" "pactl" + "pamon" "paplay" "parec" "parecord" "pasuspender" ) +PULSEAUDIO_LIBRARIES=( "libpulse-simple.0.dylib" + "libpulse.0.dylib" + "libpulsecore-6.0.dylib" + "pulse-6.0" + "pulseaudio" ) : ${SDK:="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk"} : ${MACOSX_DEPLOYMENT_TARGET:="10.7"} @@ -172,6 +179,50 @@ NXPROXY="$(lazy_canonical_path "${MACPORTS_PREFIX}/bin/${NXPROXY}")" [ -x "${NXPROXY}" ] || dependency_error "nxproxy" "nxproxy" "binary" +typeset -i i +typeset -i fail +typeset -a PULSEAUDIO_BINARIES_FULL +typeset cur_binary +fail="0" +for cur_binary in ${PULSEAUDIO_BINARIES[@]}; do + cur_binary="$(lazy_canonical_path "${MACPORTS_PREFIX}/bin/${cur_binary}")" + + if [ -x "${cur_binary}" ]; then + PULSEAUDIO_BINARIES_FULL+=( "${cur_binary}" ) + else + fail="1" + break + fi +done + +[ "${fail}" -eq "1" ] && dependency_error "${cur_binary##"$(lazy_canonical_path "${MACPORTS_PREFIX}/bin/")"}" "pulseaudio" "binary" + +typeset cur_lib_or_libdir +typeset -a PULSEAUDIO_LIBRARIES_FULL +fail="0" +for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do + cur_lib_or_libdir="$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/${cur_lib_or_libdir}")" + + if [ -x "${cur_lib_or_libdir}" ]; then + PULSEAUDIO_LIBRARIES_FULL+=( "${cur_lib_or_libdir}" ) + elif [ -d "${cur_lib_or_libdir}" ]; then + # That's a directory... more work needed here. + typeset entry="" + for entry in "${cur_lib_or_libdir}"/*; do + typeset TMP_REGEX='^.*\.(so|dylib|bundle)(\.[0-9]+){0,2}$' + if [[ "${entry}" =~ ${TMP_REGEX} ]]; then + # Filename matched the expected template. + PULSEAUDIO_LIBRARIES_FULL+=( "$(lazy_canonical_path "${cur_lib_or_libdir}/${entry}")" ) + fi + done + else + fail="1" + break + fi +done + +[ "${fail}" -eq "1" ] && dependency_error "${cur_lib_or_libdir}" "pulseaudio" "library or library directory" + set -e phase "Cleaning" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 850339bb64312c9a9c532f1f7b9126bc5474a91c Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:35:00 2015 +0200 macbuild.sh: copy PulseAudio libraries and binaries. --- debian/changelog | 1 + macbuild.sh | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/debian/changelog b/debian/changelog index a199a35..870a266 100644 --- a/debian/changelog +++ b/debian/changelog @@ -83,6 +83,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: define PulseAudio libraries and binaries to be later copied. Discover them using MACPORTS_PREFIX. Error out if any component was not found. + - macbuild.sh: copy PulseAudio libraries and binaries. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index ae7cc7f..c10c814 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -261,6 +261,23 @@ mkdir -p "${FRAMEWORKS_DIR}/" phase "Copying nxproxy" cp -av "${NXPROXY}" "${EXE_DIR}/" +phase "Copying PulseAudio" +for cur_binary in ${PULSEAUDIO_BINARIES_FULL[@]}; do + cp -av "${cur_binary}" "${EXE_DIR}/" +done + +typeset intermediate_lib_dir="" +for cur_binary in ${PULSEAUDIO_LIBRARIES_FULL[@]}; do +set -x + intermediate_lib_dir="$(lazy_canonical_path "$(dirname "${cur_binary}")/")" + intermediate_lib_dir="${intermediate_lib_dir##"$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/")"}" + + mkdir -p "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/" + + cp -av "${cur_binary}" "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/" +set +x +done + if [ "${BUNDLE}" = "1" ]; then dylibbundler \ --fix-file "${EXE_DIR}/nxproxy" \ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 45aade343f2bb7ddfdb8bdb03ec041bd50243896 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:37:46 2015 +0200 macbuild.sh: add work-in-progress PulseAudio bundling. Needs to be ripped apart and be redone, because dylibbundler is not smart enough to handle our case. --- debian/changelog | 3 +++ macbuild.sh | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/debian/changelog b/debian/changelog index d678d58..96b26e2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -85,6 +85,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium was not found. - macbuild.sh: copy PulseAudio libraries and binaries. - macbuild.sh: add phase output for bundling nxproxy. + - macbuild.sh: add work-in-progress PulseAudio bundling. Needs to be ripped + apart and be redone, because dylibbundler is not smart enough to handle + our case. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index cff39ae..7b14bb5 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -287,6 +287,41 @@ if [ "${BUNDLE}" = "1" ]; then --install-path "@executable_path/../Frameworks/" \ --create-dir + phase "Bundling PulseAudio" + typeset cur_binary_name="" + for cur_binary in ${PULSEAUDIO_BINARIES_FULL[@]}; do + if [ ! -L "${cur_binary}" ]; then + cur_binary_name="$(basename "${cur_binary}")" + dylibbundler \ + --fix-file "${EXE_DIR}/${cur_binary_name}" \ + --bundle-deps \ + --dest-dir "${FRAMEWORKS_DIR}/" \ + --install-path "@executable_path/../Frameworks/" \ + --create-dir \ + --overwrite-files + fi + done + + typeset intermediate_lib_dir="" + for cur_binary in ${PULSEAUDIO_LIBRARIES_FULL[@]}; do + intermediate_lib_dir="$(lazy_canonical_path "$(dirname "${cur_binary}")/")" + intermediate_lib_dir="${intermediate_lib_dir##"$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/")"}" + + if [ ! -L "${cur_binary}" ]; then + cur_binary_name="$(basename "${cur_binary}")" + + typeset nesting_level="$(get_nesting_level "${intermediate_lib_dir}")" + + dylibbundler \ + --fix-file "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/${cur_binary_name}" \ + --bundle-deps \ + --dest-dir "${FRAMEWORKS_DIR}/" \ + --install-path "@loader_path/$(repeat_str "../" "${nesting_level}")Frameworks/" \ + --create-dir \ + --overwrite-files + fi + done + phase "Bundling up using macdeployqt" macdeployqt "${APPBUNDLE}" -verbose=2 -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e64f2ca1dfb1645fbd724ce6b28fd89c9015c1c7 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun May 3 23:36:16 2015 +0200 macbuild.sh: add phase output for bundling nxproxy. --- debian/changelog | 1 + macbuild.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 870a266..d678d58 100644 --- a/debian/changelog +++ b/debian/changelog @@ -84,6 +84,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium copied. Discover them using MACPORTS_PREFIX. Error out if any component was not found. - macbuild.sh: copy PulseAudio libraries and binaries. + - macbuild.sh: add phase output for bundling nxproxy. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index c10c814..cff39ae 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -279,6 +279,7 @@ set +x done if [ "${BUNDLE}" = "1" ]; then + phase "Bundling nxproxy" dylibbundler \ --fix-file "${EXE_DIR}/nxproxy" \ --bundle-deps \ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 848da9a30dafc429ef4d6c38deabaf6a05ae5609 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jun 29 23:09:05 2015 +0200 macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. --- debian/changelog | 2 ++ macbuild.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index ad35072..2e3a51f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -89,6 +89,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium apart and be redone, because dylibbundler is not smart enough to handle our case. - macbuild.sh: add Linux library file name scheme regex as a precaution. + - macbuild.sh: directories are "executable", so the first check must + explicitly include a check for the argument being not a directory. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 9e9a1f8..a6b9224 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -203,7 +203,7 @@ fail="0" for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do cur_lib_or_libdir="$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/${cur_lib_or_libdir}")" - if [ -x "${cur_lib_or_libdir}" ]; then + if [ ! -d "${cur_lib_or_libdir}" ] && [ -x "${cur_lib_or_libdir}" ]; then PULSEAUDIO_LIBRARIES_FULL+=( "${cur_lib_or_libdir}" ) elif [ -d "${cur_lib_or_libdir}" ]; then # That's a directory... more work needed here. -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c06114660a836064f81dc8c5b1d2501f9dd46b9b Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jun 29 23:03:23 2015 +0200 macbuild.sh: add Linux library file name scheme regex as a precaution. --- debian/changelog | 1 + macbuild.sh | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 96b26e2..ad35072 100644 --- a/debian/changelog +++ b/debian/changelog @@ -88,6 +88,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add work-in-progress PulseAudio bundling. Needs to be ripped apart and be redone, because dylibbundler is not smart enough to handle our case. + - macbuild.sh: add Linux library file name scheme regex as a precaution. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 7b14bb5..9e9a1f8 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -209,8 +209,13 @@ for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do # That's a directory... more work needed here. typeset entry="" for entry in "${cur_lib_or_libdir}"/*; do - typeset TMP_REGEX='^.*\.(so|dylib|bundle)(\.[0-9]+){0,2}$' - if [[ "${entry}" =~ ${TMP_REGEX} ]]; then + typeset TMP_REGEX='^.*\.(\.[0-9]+){0,2}(so|dylib|bundle)$' + + # This is only here should the PA build system ever break and create + # "linux-style" library file names. Let's hope it never actually comes to that. + typeset TMP_REGEX_LINUX_COMPAT='^.*\.(so|dylib|bundle)(\.[0-9]+){0,2}$' + + if [[ "${entry}" =~ ${TMP_REGEX} ]] || [[ "${entry}" =~ ${TMP_REGEX_LINUX_COMPAT} ]]; then # Filename matched the expected template. PULSEAUDIO_LIBRARIES_FULL+=( "$(lazy_canonical_path "${cur_lib_or_libdir}/${entry}")" ) fi -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 21843e811e04225578f16f861b1e8c04c737ea84 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jul 30 04:31:52 2015 +0200 macbuild.sh: add some more debugging output. --- debian/changelog | 1 + macbuild.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2e3a51f..46c0e52 100644 --- a/debian/changelog +++ b/debian/changelog @@ -91,6 +91,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add Linux library file name scheme regex as a precaution. - macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. + - macbuild.sh: add some more debugging output. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index a6b9224..b3f5177 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -204,9 +204,11 @@ for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do cur_lib_or_libdir="$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/${cur_lib_or_libdir}")" if [ ! -d "${cur_lib_or_libdir}" ] && [ -x "${cur_lib_or_libdir}" ]; then + echo "Adding ${cur_lib_or_libdir} to \${PULSEAUDIO_LIBRARIES_FULL}" PULSEAUDIO_LIBRARIES_FULL+=( "${cur_lib_or_libdir}" ) elif [ -d "${cur_lib_or_libdir}" ]; then # That's a directory... more work needed here. + echo "Scrubbing directory ${cur_lib_or_libdir}" typeset entry="" for entry in "${cur_lib_or_libdir}"/*; do typeset TMP_REGEX='^.*\.(\.[0-9]+){0,2}(so|dylib|bundle)$' @@ -314,6 +316,7 @@ if [ "${BUNDLE}" = "1" ]; then if [ ! -L "${cur_binary}" ]; then cur_binary_name="$(basename "${cur_binary}")" + echo "Handling ${cur_binary} => ${cur_binary_name}." typeset nesting_level="$(get_nesting_level "${intermediate_lib_dir}")" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 155d80479aec7ceaae410fee737fd775804bae2b Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jul 30 04:33:30 2015 +0200 macbuild.sh: remove libpulse and libpulsecore from libraries to be bundled, as something else will bundle them anyway. --- debian/changelog | 2 ++ macbuild.sh | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 46c0e52..3c0b423 100644 --- a/debian/changelog +++ b/debian/changelog @@ -92,6 +92,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. - macbuild.sh: add some more debugging output. + - macbuild.sh: remove libpulse and libpulsecore from libraries to be + bundled, as something else will bundle them anyway. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index b3f5177..231e030 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -127,8 +127,6 @@ NXPROXY="nxproxy" PULSEAUDIO_BINARIES=( "pulseaudio" "esdcompat" "pacat" "pacmd" "pactl" "pamon" "paplay" "parec" "parecord" "pasuspender" ) PULSEAUDIO_LIBRARIES=( "libpulse-simple.0.dylib" - "libpulse.0.dylib" - "libpulsecore-6.0.dylib" "pulse-6.0" "pulseaudio" ) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 63a2b7a9005c13f21b1c890d033dc32b763eb955 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jul 30 04:39:59 2015 +0200 macbuild.sh: use while-read-loop and find to actually recurse through directories. --- debian/changelog | 2 ++ macbuild.sh | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3c0b423..6f37ddb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -94,6 +94,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add some more debugging output. - macbuild.sh: remove libpulse and libpulsecore from libraries to be bundled, as something else will bundle them anyway. + - macbuild.sh: use while-read-loop and find to actually recurse through + directories. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 231e030..cbf9909 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -208,7 +208,11 @@ for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do # That's a directory... more work needed here. echo "Scrubbing directory ${cur_lib_or_libdir}" typeset entry="" - for entry in "${cur_lib_or_libdir}"/*; do + + # -r parameter to read: Backslashes may NOT escape any characters! + # -d '': specifies the delimiter to be used - as '' resolves to an empty string followed + # by a NUL character, the delimiter is set to this very NUL (\000) character. + while read -r -d '' entry; do typeset TMP_REGEX='^.*\.(\.[0-9]+){0,2}(so|dylib|bundle)$' # This is only here should the PA build system ever break and create @@ -219,7 +223,7 @@ for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do # Filename matched the expected template. PULSEAUDIO_LIBRARIES_FULL+=( "$(lazy_canonical_path "${cur_lib_or_libdir}/${entry}")" ) fi - done + done < <(find "${cur_lib_or_libdir}" -type 'f' -print0) else fail="1" break -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 67b9a5056cd3c19d060bdb432180ec6a9d5ecafa Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jul 30 04:42:01 2015 +0200 macbuild.sh: check current file name against regex, not a (now) full path. --- debian/changelog | 2 ++ macbuild.sh | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6f37ddb..7cffd69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -96,6 +96,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium bundled, as something else will bundle them anyway. - macbuild.sh: use while-read-loop and find to actually recurse through directories. + - macbuild.sh: check current file name against regex, not a (now) full + path. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index cbf9909..d0d5f8a 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -213,13 +213,14 @@ for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do # -d '': specifies the delimiter to be used - as '' resolves to an empty string followed # by a NUL character, the delimiter is set to this very NUL (\000) character. while read -r -d '' entry; do + typeset cur_file="$(basename "${entry}")" typeset TMP_REGEX='^.*\.(\.[0-9]+){0,2}(so|dylib|bundle)$' # This is only here should the PA build system ever break and create # "linux-style" library file names. Let's hope it never actually comes to that. typeset TMP_REGEX_LINUX_COMPAT='^.*\.(so|dylib|bundle)(\.[0-9]+){0,2}$' - if [[ "${entry}" =~ ${TMP_REGEX} ]] || [[ "${entry}" =~ ${TMP_REGEX_LINUX_COMPAT} ]]; then + if [[ "${cur_file}" =~ ${TMP_REGEX} ]] || [[ "${cur_file}" =~ ${TMP_REGEX_LINUX_COMPAT} ]]; then # Filename matched the expected template. PULSEAUDIO_LIBRARIES_FULL+=( "$(lazy_canonical_path "${cur_lib_or_libdir}/${entry}")" ) fi -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3964e2e813dd3f0defc9b8a1e94190daa13654e6 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jul 30 04:43:25 2015 +0200 macbuild.sh: add the correct file path to the library bundling array. --- debian/changelog | 1 + macbuild.sh | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7cffd69..5e9c7df 100644 --- a/debian/changelog +++ b/debian/changelog @@ -98,6 +98,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium directories. - macbuild.sh: check current file name against regex, not a (now) full path. + - macbuild.sh: add the correct file path to the library bundling array. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index d0d5f8a..b15d62a 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -222,7 +222,8 @@ for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do if [[ "${cur_file}" =~ ${TMP_REGEX} ]] || [[ "${cur_file}" =~ ${TMP_REGEX_LINUX_COMPAT} ]]; then # Filename matched the expected template. - PULSEAUDIO_LIBRARIES_FULL+=( "$(lazy_canonical_path "${cur_lib_or_libdir}/${entry}")" ) + echo "Adding $(lazy_canonical_path "${entry}") to \${PULSEAUDIO_LIBRARIES_FULL}" + PULSEAUDIO_LIBRARIES_FULL+=( "$(lazy_canonical_path "${entry}")" ) fi done < <(find "${cur_lib_or_libdir}" -type 'f' -print0) else -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c584f1b112cb91b30e12258bba2857bf2b85d90f Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jul 30 04:45:40 2015 +0200 macbuild.sh: when actually bundling libraries, use @executable_path instead of @loader_path. Will need testing. --- debian/changelog | 2 ++ macbuild.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 5e9c7df..2da1085 100644 --- a/debian/changelog +++ b/debian/changelog @@ -99,6 +99,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: check current file name against regex, not a (now) full path. - macbuild.sh: add the correct file path to the library bundling array. + - macbuild.sh: when actually bundling libraries, use @executable_path + instead of @loader_path. Will need testing. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index b15d62a..b3a6203 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -328,7 +328,7 @@ if [ "${BUNDLE}" = "1" ]; then --fix-file "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/${cur_binary_name}" \ --bundle-deps \ --dest-dir "${FRAMEWORKS_DIR}/" \ - --install-path "@loader_path/$(repeat_str "../" "${nesting_level}")Frameworks/" \ + --install-path "@executable_path/$(repeat_str "../" "${nesting_level}")../Frameworks/" \ --create-dir \ --overwrite-files fi -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5e920884c20e8c027b969b75c0b19134b68f655b Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Aug 26 20:55:14 2015 +0200 macbuild.sh: fix echo call to also show the intermediate lib dir, not just the library file name. Helps debugging. --- debian/changelog | 2 ++ macbuild.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 2da1085..0cee6d5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -101,6 +101,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add the correct file path to the library bundling array. - macbuild.sh: when actually bundling libraries, use @executable_path instead of @loader_path. Will need testing. + - macbuild.sh: fix echo call to also show the intermediate lib dir, not + just the library file name. Helps debugging. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index b3a6203..0a974b6 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -320,7 +320,7 @@ if [ "${BUNDLE}" = "1" ]; then if [ ! -L "${cur_binary}" ]; then cur_binary_name="$(basename "${cur_binary}")" - echo "Handling ${cur_binary} => ${cur_binary_name}." + echo "Handling ${cur_binary} => ${intermediate_lib_dir}/${cur_binary_name}." typeset nesting_level="$(get_nesting_level "${intermediate_lib_dir}")" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 96c188cf57562a1c96dec33ca02a27cac461ceb6 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Aug 26 20:56:29 2015 +0200 macbuild.sh: also install libraries into staging area with intermediate library path. Putting everything into a single place is a stupid idea. --- debian/changelog | 2 ++ macbuild.sh | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0cee6d5..eea4bba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -103,6 +103,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium instead of @loader_path. Will need testing. - macbuild.sh: fix echo call to also show the intermediate lib dir, not just the library file name. Helps debugging. + - macbuild.sh: also install libraries into staging area with intermediate + library path. Putting everything into a single place is a stupid idea. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 0a974b6..26f0d7e 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -327,8 +327,8 @@ if [ "${BUNDLE}" = "1" ]; then dylibbundler \ --fix-file "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/${cur_binary_name}" \ --bundle-deps \ - --dest-dir "${FRAMEWORKS_DIR}/" \ - --install-path "@executable_path/$(repeat_str "../" "${nesting_level}")../Frameworks/" \ + --dest-dir "${FRAMEWORKS_DIR}/${intermediate_lib_dir}" \ + --install-path "@executable_path/$(repeat_str "../" "${nesting_level}")../Frameworks/${intermediate_lib_dir}" \ --create-dir \ --overwrite-files fi -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1f4609b124e1b7f773ad2dc52fb5e7f99357f2f8 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Aug 26 20:57:41 2015 +0200 deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. --- debian/changelog | 2 ++ deduplicate.sh | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/debian/changelog b/debian/changelog index eea4bba..37142d3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -105,6 +105,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium just the library file name. Helps debugging. - macbuild.sh: also install libraries into staging area with intermediate library path. Putting everything into a single place is a stupid idea. + - deduplicate.sh: add new, more or less Proof of Concept, and Work in + Progress file deduplication script. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh new file mode 100755 index 0000000..7c4de14 --- /dev/null +++ b/deduplicate.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +typeset base_dir="" +base_dir="${1:?"No base dir given."}" + +typeset -a special_files_regex +special_files_regex+=( "pulseaudio/libpulsecommon-[0-9]\.[0-9]\.dylib" ) + +typeset -a all_files +typeset entry="" +while read -r -d '' entry; do + all_files+=( "${entry}" ) +done < <(find "${base_dir}" -type 'f' -print0) + +typeset -a top_files +for entry in ${all_files[@]}; do + typeset relative_path="${entry##"${base_dir}/"}" + typeset tmp_regex='^[^/]+$' + if [[ "${relative_path}" =~ ${tmp_regex} ]]; then + echo "${relative_path} is top file, adding to array." + top_files+=( "${relative_path}" ) + fi +done + +typeset -a duplicates +for entry in ${all_files[@]}; do + typeset relative_path="${entry##"${base_dir}/"}" + typeset file_name="$(basename "${entry}")" + typeset top_entry="" + for top_entry in ${top_files[@]}; do + if [ "${top_entry}" != "${relative_path}" ]; then + if [ "${file_name}" = "${top_entry}" ]; then + echo "Adding duplicate: ${relative_path}" + duplicates+=( "${relative_path}" ) + fi + fi + done +done + +echo "duplicates array before:" +for entry in ${duplicates[@]}; do + echo "${entry}" +done + +typeset -i i="0" +for ((i = 0; i < ${#duplicates[@]}; ++i)); do + entry="${duplicates[${i}]}" + typeset special_file_regex="" + for special_file_regex in ${special_files_regex[@]}; do + typeset tmp_regex='^'"${special_file_regex}"'$' + if [[ "${entry}" =~ ${tmp_regex} ]]; then + echo "mv \"${base_dir}/$(basename "${entry}")\" \"${base_dir}/$(dirname "${special_file_regex}")/\"" + duplicates[${i}]="$(basename "${entry}")" + echo "Renamed ${entry} in duplicates array to ${duplicates[${i}]}" + fi + done +done + +echo "duplicates array after:" +for entry in ${duplicates[@]}; do + echo "${entry}" +done + +for entry in ${duplicates[@]}; do + echo "rm -v ${base_dir}/${entry}" + typeset -i i="0" + for ((i = 0; i < ${#all_files[@]}; ++i)); do + typeset all_entry="${all_files[${i}]}" + typeset relative_path="${all_entry##"${base_dir}/"}" + if [ "${relative_path}" = "${entry}" ]; then + all_files[${i}]="" + fi + done +done + +echo "New value for all_files:" +for entry in ${all_files[@]}; do + echo "${entry}" +done -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 12a048f27d2ade8dca9b987cc3e80644d87326cb Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Aug 26 21:40:13 2015 +0200 deduplicate.sh: add duplicates-to-real mapping. --- debian/changelog | 1 + deduplicate.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/debian/changelog b/debian/changelog index 37142d3..b4a9bbf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -107,6 +107,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium library path. Putting everything into a single place is a stupid idea. - deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. + - deduplicate.sh: add duplicates-to-real mapping. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 7c4de14..19dc584 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -77,3 +77,31 @@ echo "New value for all_files:" for entry in ${all_files[@]}; do echo "${entry}" done + +echo "Duplicates-to-real map:" +# Build complementary array to duplicates. +typeset -a to_files +for entry in ${duplicates[@]}; do + typeset filename="$(basename "${entry}")" + + for all_entry in ${all_files[@]}; do + typeset all_entry_filename="$(basename "${all_entry}")" + + if [ -n "${filename}" ] && [ -n "${all_entry_filename}" ]; then + if [ "${filename}" = "${all_entry_filename}" ]; then + to_files+=( "${all_entry}" ) + + echo "${entry} => ${all_entry}" + + # There should be only one entry matching, so we can save a bit of time and break out of the loop. + # Even more importantly, we only want one entry for each duplicates entry anyway... + break + fi + else + echo "WARNING: empty file name while matching duplicates with non-duplicates." >&2 + echo "WARNING: duplicate entry: \"${entry}\"" >&2 + echo "WARNING: real entry: \"${all_entry}\"" >&2 + exit 1 + fi + done +done -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 991fb8bd2223530f6f396bd5eccc85e866d9cdb2 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Aug 26 22:26:52 2015 +0200 deduplicate.sh: add missed local variable declaration. --- debian/changelog | 1 + deduplicate.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index b4a9bbf..11b5c9d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -108,6 +108,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. - deduplicate.sh: add duplicates-to-real mapping. + - deduplicate.sh: add missed local variable declaration. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 19dc584..30fd3ad 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -84,6 +84,7 @@ typeset -a to_files for entry in ${duplicates[@]}; do typeset filename="$(basename "${entry}")" + typeset all_entry="" for all_entry in ${all_files[@]}; do typeset all_entry_filename="$(basename "${all_entry}")" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3cde4ad0d9cf730cb69ce14480e4a6ef0e4fa549 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Aug 26 22:28:09 2015 +0200 deduplicate.sh: new function for parsing otool's output and printing library dependencies if no error occurred. --- debian/changelog | 2 ++ deduplicate.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/debian/changelog b/debian/changelog index 11b5c9d..78c09b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -109,6 +109,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium Progress file deduplication script. - deduplicate.sh: add duplicates-to-real mapping. - deduplicate.sh: add missed local variable declaration. + - deduplicate.sh: new function for parsing otool's output and printing + library dependencies if no error occurred. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 30fd3ad..a5b59e9 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -6,6 +6,33 @@ base_dir="${1:?"No base dir given."}" typeset -a special_files_regex special_files_regex+=( "pulseaudio/libpulsecommon-[0-9]\.[0-9]\.dylib" ) +typeset -a otool_fail_str +otool_fail_str=( "is not an object file" + "can't open file" + "Archive : " ) + +parse_otool_output() { + typeset raw_output="${@}" + + typeset fail_str="" + for fail_str in ${otool_fail_str}; do + if ! echo "${raw_output}" | grep -q "${fail_str}"; then + exit 1 + fi + done + + typeset tmp_regex='^[[:space:]]+(.*)[[:space:]]\(compatibility version .*, current version .*\)' + + typeset line="" + while read -r line; do + if [[ "${line}" =~ ${tmp_regex} ]]; then + echo "${BASH_REMATCH[1]}" + fi + done <<< "${raw_output}" + + exit 0 +} + typeset -a all_files typeset entry="" while read -r -d '' entry; do -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4509f9e97de58b8b80888a8be00b4b61e5c6ca8b Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 03:56:21 2015 +0200 deduplicate.sh: non-functional: change WARNING to ERROR in error messages. --- debian/changelog | 2 ++ deduplicate.sh | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 78c09b1..06415e6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -111,6 +111,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: add missed local variable declaration. - deduplicate.sh: new function for parsing otool's output and printing library dependencies if no error occurred. + - deduplicate.sh: non-functional: change WARNING to ERROR in error + messages. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index a5b59e9..41d2cbf 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -126,9 +126,9 @@ for entry in ${duplicates[@]}; do break fi else - echo "WARNING: empty file name while matching duplicates with non-duplicates." >&2 - echo "WARNING: duplicate entry: \"${entry}\"" >&2 - echo "WARNING: real entry: \"${all_entry}\"" >&2 + echo "ERROR: empty file name while matching duplicates with non-duplicates." >&2 + echo "ERROR: duplicate entry: \"${entry}\"" >&2 + echo "ERROR: real entry: \"${all_entry}\"" >&2 exit 1 fi done -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2e678ca4b4e08df1eac26258325bb667487a14e0 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 03:57:10 2015 +0200 deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. --- debian/changelog | 2 ++ deduplicate.sh | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/debian/changelog b/debian/changelog index 06415e6..d641d38 100644 --- a/debian/changelog +++ b/debian/changelog @@ -113,6 +113,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium library dependencies if no error occurred. - deduplicate.sh: non-functional: change WARNING to ERROR in error messages. + - deduplicate.sh: add first skeleton for library dependency rewriting of + deleted duplicates. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 41d2cbf..ddf5984 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -133,3 +133,33 @@ for entry in ${duplicates[@]}; do fi done done + +# Try to fixup files broken by duplicates removal. +for all_entry in ${all_files[@]}; do + typeset otool_out="$(otool -L "${all_entry}")" + + typeset dependencies="$(parse_otool_output "${otool_out}")" + if [ "${?}" -eq 0 ]; then + typeset line="" + while read -r line; do + typeset dependencies_filename="$(basename "${line}")" + + typeset duplicate_entry="" + for duplicate_entry in ${duplicates[@]}; do + typeset duplicate_filename="$(basename "${duplicate_entry}")" + + if [ -n "${dependencies_filename}" ] && [ -n "${duplicate_filename}"]; then + + else + echo "ERROR: empty file name while duplicates with dependencies." >&2 + echo "ERROR: duplicate entry: \"${duplicate_entry}\"" >&2 + echo "ERROR: dependency: \"${line}\"" >&2 + exit 1 + fi + done + done <<< "${dependencies}" + else + echo "ERROR: otool returned error for file: ${all_entry}" >&2 + exit 1 + fi +done -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0beb8f3ce08c72eff132d1dc983e23574aeded13 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 04:46:07 2015 +0200 deduplicate.sh: correctly unset an array element. --- debian/changelog | 1 + deduplicate.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d641d38..3c68f59 100644 --- a/debian/changelog +++ b/debian/changelog @@ -115,6 +115,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium messages. - deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. + - deduplicate.sh: correctly unset an array element. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index ddf5984..b7d066a 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -95,7 +95,7 @@ for entry in ${duplicates[@]}; do typeset all_entry="${all_files[${i}]}" typeset relative_path="${all_entry##"${base_dir}/"}" if [ "${relative_path}" = "${entry}" ]; then - all_files[${i}]="" + unset all_files[${i}] fi done done -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 03a21def3ae94f00894215a67b2edd1ebeb0fcc8 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 04:53:44 2015 +0200 deduplicate.sh: fix parse_otool_output: we want to return failure only iff any of the strings are present in otool's output and actually handle the failure string *ARRAY* correctly as that. --- debian/changelog | 3 +++ deduplicate.sh | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8e24109..d50aacd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -120,6 +120,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium "sparse" arrays correctly. - deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word splitting. + - deduplicate.sh: fix parse_otool_output: we want to return failure only + iff any of the strings are present in otool's output and actually handle + the failure string *ARRAY* correctly as that. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 33c4628..939eb55 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -15,9 +15,9 @@ parse_otool_output() { typeset raw_output="${@}" typeset fail_str="" - for fail_str in ${otool_fail_str}; do - if ! echo "${raw_output}" | grep -q "${fail_str}"; then - exit 1 + for fail_str in "${otool_fail_str[@]}"; do + if echo "${raw_output}" | grep -q "${fail_str}"; then + return 1 fi done -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0bbe20ab980b40a256c69b28b6883c79c966b92e Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 04:48:32 2015 +0200 deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle "sparse" arrays correctly. --- debian/changelog | 2 ++ deduplicate.sh | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3c68f59..9558807 100644 --- a/debian/changelog +++ b/debian/changelog @@ -116,6 +116,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. - deduplicate.sh: correctly unset an array element. + - deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle + "sparse" arrays correctly. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index b7d066a..d932fbb 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -70,7 +70,7 @@ for entry in ${duplicates[@]}; do done typeset -i i="0" -for ((i = 0; i < ${#duplicates[@]}; ++i)); do +for i in "${!duplicates[@]}"; do entry="${duplicates[${i}]}" typeset special_file_regex="" for special_file_regex in ${special_files_regex[@]}; do @@ -91,7 +91,7 @@ done for entry in ${duplicates[@]}; do echo "rm -v ${base_dir}/${entry}" typeset -i i="0" - for ((i = 0; i < ${#all_files[@]}; ++i)); do + for i in "${!all_files[@]}"; do typeset all_entry="${all_files[${i}]}" typeset relative_path="${all_entry##"${base_dir}/"}" if [ "${relative_path}" = "${entry}" ]; then -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b53bbe81cc55e61aeb55cad2e264d8ac0a3fb63c Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 04:51:07 2015 +0200 deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word splitting. --- debian/changelog | 2 ++ deduplicate.sh | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9558807..8e24109 100644 --- a/debian/changelog +++ b/debian/changelog @@ -118,6 +118,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: correctly unset an array element. - deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle "sparse" arrays correctly. + - deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word + splitting. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index d932fbb..33c4628 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -40,7 +40,7 @@ while read -r -d '' entry; do done < <(find "${base_dir}" -type 'f' -print0) typeset -a top_files -for entry in ${all_files[@]}; do +for entry in "${all_files[@]}"; do typeset relative_path="${entry##"${base_dir}/"}" typeset tmp_regex='^[^/]+$' if [[ "${relative_path}" =~ ${tmp_regex} ]]; then @@ -50,11 +50,11 @@ for entry in ${all_files[@]}; do done typeset -a duplicates -for entry in ${all_files[@]}; do +for entry in "${all_files[@]}"; do typeset relative_path="${entry##"${base_dir}/"}" typeset file_name="$(basename "${entry}")" typeset top_entry="" - for top_entry in ${top_files[@]}; do + for top_entry in "${top_files[@]}"; do if [ "${top_entry}" != "${relative_path}" ]; then if [ "${file_name}" = "${top_entry}" ]; then echo "Adding duplicate: ${relative_path}" @@ -65,7 +65,7 @@ for entry in ${all_files[@]}; do done echo "duplicates array before:" -for entry in ${duplicates[@]}; do +for entry in "${duplicates[@]}"; do echo "${entry}" done @@ -73,7 +73,7 @@ typeset -i i="0" for i in "${!duplicates[@]}"; do entry="${duplicates[${i}]}" typeset special_file_regex="" - for special_file_regex in ${special_files_regex[@]}; do + for special_file_regex in "${special_files_regex[@]}"; do typeset tmp_regex='^'"${special_file_regex}"'$' if [[ "${entry}" =~ ${tmp_regex} ]]; then echo "mv \"${base_dir}/$(basename "${entry}")\" \"${base_dir}/$(dirname "${special_file_regex}")/\"" @@ -84,11 +84,11 @@ for i in "${!duplicates[@]}"; do done echo "duplicates array after:" -for entry in ${duplicates[@]}; do +for entry in "${duplicates[@]}"; do echo "${entry}" done -for entry in ${duplicates[@]}; do +for entry in "${duplicates[@]}"; do echo "rm -v ${base_dir}/${entry}" typeset -i i="0" for i in "${!all_files[@]}"; do @@ -101,18 +101,18 @@ for entry in ${duplicates[@]}; do done echo "New value for all_files:" -for entry in ${all_files[@]}; do +for entry in "${all_files[@]}"; do echo "${entry}" done echo "Duplicates-to-real map:" # Build complementary array to duplicates. typeset -a to_files -for entry in ${duplicates[@]}; do +for entry in "${duplicates[@]}"; do typeset filename="$(basename "${entry}")" typeset all_entry="" - for all_entry in ${all_files[@]}; do + for all_entry in "${all_files[@]}"; do typeset all_entry_filename="$(basename "${all_entry}")" if [ -n "${filename}" ] && [ -n "${all_entry_filename}" ]; then @@ -135,7 +135,7 @@ for entry in ${duplicates[@]}; do done # Try to fixup files broken by duplicates removal. -for all_entry in ${all_files[@]}; do +for all_entry in "${all_files[@]}"; do typeset otool_out="$(otool -L "${all_entry}")" typeset dependencies="$(parse_otool_output "${otool_out}")" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4f8ef40e33e42f1086e547c86c3cf633bcb5ee52 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 04:54:58 2015 +0200 deduplicate.sh: change exit to return in parse_otool_output. --- debian/changelog | 1 + deduplicate.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d50aacd..7950684 100644 --- a/debian/changelog +++ b/debian/changelog @@ -123,6 +123,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: fix parse_otool_output: we want to return failure only iff any of the strings are present in otool's output and actually handle the failure string *ARRAY* correctly as that. + - deduplicate.sh: change exit to return in parse_otool_output. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 939eb55..235d4b1 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -30,7 +30,7 @@ parse_otool_output() { fi done <<< "${raw_output}" - exit 0 + return 0 } typeset -a all_files -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 944ecef30a237da1ff736274cd1f5fb72f9818a5 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 04:56:56 2015 +0200 deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. --- debian/changelog | 2 ++ deduplicate.sh | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7950684..1716563 100644 --- a/debian/changelog +++ b/debian/changelog @@ -124,6 +124,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium iff any of the strings are present in otool's output and actually handle the failure string *ARRAY* correctly as that. - deduplicate.sh: change exit to return in parse_otool_output. + - deduplicate.sh: record crafted "library path" values in duplicates + replacement to_files array. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 235d4b1..ab86a0b 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -117,9 +117,10 @@ for entry in "${duplicates[@]}"; do if [ -n "${filename}" ] && [ -n "${all_entry_filename}" ]; then if [ "${filename}" = "${all_entry_filename}" ]; then - to_files+=( "${all_entry}" ) + typeset dependency_format="@executable_path/../Frameworks/${all_entry##${base_dir}}" + to_files+=( "${dependency_format}" ) - echo "${entry} => ${all_entry}" + echo "${entry} => ${dependency_format}" # There should be only one entry matching, so we can save a bit of time and break out of the loop. # Even more importantly, we only want one entry for each duplicates entry anyway... -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8dccd337e20e3387c894d048f957bacb1c864590 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 04:57:54 2015 +0200 deduplicate.sh: debug parse_otool_output fiercely for the time being. --- debian/changelog | 1 + deduplicate.sh | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1716563..e32b4bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -126,6 +126,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: change exit to return in parse_otool_output. - deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. + - deduplicate.sh: debug parse_otool_output fiercely for the time being. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index ab86a0b..5e1000f 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -12,6 +12,7 @@ otool_fail_str=( "is not an object file" "Archive : " ) parse_otool_output() { +set -x typeset raw_output="${@}" typeset fail_str="" @@ -30,6 +31,7 @@ parse_otool_output() { fi done <<< "${raw_output}" +set +x return 0 } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7f9518eb46c05e12e41e4d02a06a345302478fa2 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 04:59:27 2015 +0200 deduplicate.sh: prevent word splitting when parsing otool's output. We want the raw bits. --- debian/changelog | 2 ++ deduplicate.sh | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index e32b4bb..73ad55c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -127,6 +127,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. - deduplicate.sh: debug parse_otool_output fiercely for the time being. + - deduplicate.sh: prevent word splitting when parsing otool's output. We + want the raw bits. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 5e1000f..93a5c8f 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -24,6 +24,11 @@ set -x typeset tmp_regex='^[[:space:]]+(.*)[[:space:]]\(compatibility version .*, current version .*\)' + + # In this special case, we do not want read to perform any word splitting. + typeset oldifs="${IFS}" + IFS='' + typeset line="" while read -r line; do if [[ "${line}" =~ ${tmp_regex} ]]; then @@ -31,6 +36,7 @@ set -x fi done <<< "${raw_output}" + IFS="${oldifs}" set +x return 0 } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 203692f2dee2b0c6770c30189127c061e9936311 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 05:05:07 2015 +0200 deduplicate.sh: switch to range-based for loop in fixup section for duplicate array walking as we need to access the same element index in the replacement array. --- debian/changelog | 3 +++ deduplicate.sh | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 73ad55c..f6f038d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -129,6 +129,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: debug parse_otool_output fiercely for the time being. - deduplicate.sh: prevent word splitting when parsing otool's output. We want the raw bits. + - deduplicate.sh: switch to range-based for loop in fixup section for + duplicate array walking as we need to access the same element index in + the replacement array. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 93a5c8f..d625590 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -154,7 +154,9 @@ for all_entry in "${all_files[@]}"; do typeset dependencies_filename="$(basename "${line}")" typeset duplicate_entry="" - for duplicate_entry in ${duplicates[@]}; do + typeset -i i="0" + for i in "${!duplicates[@]}"; do + typeset duplicate_entry="${duplicates[${i}]}" typeset duplicate_filename="$(basename "${duplicate_entry}")" if [ -n "${dependencies_filename}" ] && [ -n "${duplicate_filename}"]; then -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 397d58056619e4546698aab6307c58153b2fac24 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 05:17:24 2015 +0200 deduplicate.sh: parse_otool_output: jump over first matching entry, which is - hopefully - the id line. --- debian/changelog | 2 ++ deduplicate.sh | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7213b9c..e319a9e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -135,6 +135,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: add more useful information in fixup section's error message. - deduplicate.sh: unstub fixup section. + - deduplicate.sh: parse_otool_output: jump over first matching entry, + which is - hopefully - the id line. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 08f13df..c24705d 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -29,10 +29,19 @@ set -x typeset oldifs="${IFS}" IFS='' + # Used for skipping the first matching entry - which should typically be the ID line... + # That's a very naïve way to do this. Maybe there should be a bit more magic + # to catch this more reliably. + typeset -i first="1" + typeset line="" while read -r line; do if [[ "${line}" =~ ${tmp_regex} ]]; then - echo "${BASH_REMATCH[1]}" + if [ "${first}" -ne "1" ]; then + echo "${BASH_REMATCH[1]}" + else + first="0" + fi fi done <<< "${raw_output}" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit ea47a127b19adaf18ad926f797c037052c259664 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 05:18:15 2015 +0200 deduplicate.sh: actually include file name in install_name_tool pseudo output. --- debian/changelog | 2 ++ deduplicate.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index e319a9e..84f2d7f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -137,6 +137,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: unstub fixup section. - deduplicate.sh: parse_otool_output: jump over first matching entry, which is - hopefully - the id line. + - deduplicate.sh: actually include file name in install_name_tool pseudo + output. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index c24705d..f020b9c 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -170,7 +170,7 @@ for all_entry in "${all_files[@]}"; do if [ -n "${dependencies_filename}" ] && [ -n "${duplicate_filename}" ]; then if [ "${dependencies_filename}" = "${duplicate_filename}" ]; then - echo "install_name_tool -change \"${line}\" \"${to_files[${i}]}\"" + echo "install_name_tool -change \"${line}\" \"${to_files[${i}]}\" \"${all_entry}\"" fi else echo "ERROR: empty file name while replacing duplicate dependencies." >&2 -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c92ad685fbcf09e5d055d8f695c82abd6c534a2f Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 05:06:04 2015 +0200 deduplicate.sh: add more useful information in fixup section's error message. --- debian/changelog | 2 ++ deduplicate.sh | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f6f038d..14153c3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -132,6 +132,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: switch to range-based for loop in fixup section for duplicate array walking as we need to access the same element index in the replacement array. + - deduplicate.sh: add more useful information in fixup section's error + message. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index d625590..7dc6cd0 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -162,7 +162,9 @@ for all_entry in "${all_files[@]}"; do if [ -n "${dependencies_filename}" ] && [ -n "${duplicate_filename}"]; then else - echo "ERROR: empty file name while duplicates with dependencies." >&2 + echo "ERROR: empty file name while replacing duplicate dependencies." >&2 + echo "ERROR: for file ${all_entry}" >&2 + echo "ERROR: at dependency ${line}" >&2 echo "ERROR: duplicate entry: \"${duplicate_entry}\"" >&2 echo "ERROR: dependency: \"${line}\"" >&2 exit 1 -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4eef623ef6e008ad70c5980039a48c56d9185965 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 05:07:35 2015 +0200 deduplicate.sh: unstub fixup section. --- debian/changelog | 1 + deduplicate.sh | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 14153c3..7213b9c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -134,6 +134,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium the replacement array. - deduplicate.sh: add more useful information in fixup section's error message. + - deduplicate.sh: unstub fixup section. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 7dc6cd0..08f13df 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -159,8 +159,10 @@ for all_entry in "${all_files[@]}"; do typeset duplicate_entry="${duplicates[${i}]}" typeset duplicate_filename="$(basename "${duplicate_entry}")" - if [ -n "${dependencies_filename}" ] && [ -n "${duplicate_filename}"]; then - + if [ -n "${dependencies_filename}" ] && [ -n "${duplicate_filename}" ]; then + if [ "${dependencies_filename}" = "${duplicate_filename}" ]; then + echo "install_name_tool -change \"${line}\" \"${to_files[${i}]}\"" + fi else echo "ERROR: empty file name while replacing duplicate dependencies." >&2 echo "ERROR: for file ${all_entry}" >&2 -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a2201e54d20900317641db51835cb44310b43ff9 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 20:36:33 2015 +0200 deduplicate.sh: save dependency format base string as a readonly variable and use that instead of repeating a fixed string. --- debian/changelog | 2 ++ deduplicate.sh | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 84f2d7f..5872fb7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -139,6 +139,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium which is - hopefully - the id line. - deduplicate.sh: actually include file name in install_name_tool pseudo output. + - deduplicate.sh: save dependency format base string as a readonly + variable and use that instead of repeating a fixed string. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index f020b9c..130a04e 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -6,6 +6,8 @@ base_dir="${1:?"No base dir given."}" typeset -a special_files_regex special_files_regex+=( "pulseaudio/libpulsecommon-[0-9]\.[0-9]\.dylib" ) +typeset -r dependency_base_format='@executable_path/../Frameworks/' + typeset -a otool_fail_str otool_fail_str=( "is not an object file" "can't open file" @@ -134,7 +136,7 @@ for entry in "${duplicates[@]}"; do if [ -n "${filename}" ] && [ -n "${all_entry_filename}" ]; then if [ "${filename}" = "${all_entry_filename}" ]; then - typeset dependency_format="@executable_path/../Frameworks/${all_entry##${base_dir}}" + typeset dependency_format="${dependency_base_format}/${all_entry##${base_dir}}" to_files+=( "${dependency_format}" ) echo "${entry} => ${dependency_format}" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0382d7b17a6714308dbab1c22d4654f4805b7634 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 20:39:24 2015 +0200 deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. deduplicate.sh will eventually be merged into macbuild.sh anyway. --- debian/changelog | 2 ++ deduplicate.sh | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5872fb7..fda14c5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -141,6 +141,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium output. - deduplicate.sh: save dependency format base string as a readonly variable and use that instead of repeating a fixed string. + - deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. + deduplicate.sh will eventually be merged into macbuild.sh anyway. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 130a04e..dadf334 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -52,6 +52,18 @@ set +x return 0 } +lazy_canonical_path() { + typeset path="${1}" + + typeset old_path="" + while [ "${old_path}" != "${path}" ]; do + old_path="${path}" + path="${path//\/\///}" + done + + printf "${old_path}" +} + typeset -a all_files typeset entry="" while read -r -d '' entry; do -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit cf33355f911178b754c5e9698adafe697f2adda7 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 20:40:46 2015 +0200 deduplicate.sh: more temporary debugging output in fixup section. --- debian/changelog | 1 + deduplicate.sh | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index fda14c5..cd6da70 100644 --- a/debian/changelog +++ b/debian/changelog @@ -143,6 +143,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium variable and use that instead of repeating a fixed string. - deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. deduplicate.sh will eventually be merged into macbuild.sh anyway. + - deduplicate.sh: more temporary debugging output in fixup section. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index dadf334..12732a4 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -175,12 +175,14 @@ for all_entry in "${all_files[@]}"; do typeset line="" while read -r line; do typeset dependencies_filename="$(basename "${line}")" + echo "dependency of ${all_entry}: ${line}" typeset duplicate_entry="" typeset -i i="0" for i in "${!duplicates[@]}"; do typeset duplicate_entry="${duplicates[${i}]}" typeset duplicate_filename="$(basename "${duplicate_entry}")" + echo "checking for duplicate ${duplicate_entry}" if [ -n "${dependencies_filename}" ] && [ -n "${duplicate_filename}" ]; then if [ "${dependencies_filename}" = "${duplicate_filename}" ]; then -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 6d54016fc47191a671802096f023a2bdae75442b Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 20:43:31 2015 +0200 deduplicate.sh: surprisingly, it turned out that only checking the duplicate's basename against the current dependency's basename is not good enough. Actually construct "the real dependency-format duplicate string" and check it against "the real dependency". Even this is still not good enough as it needs a bit cleanup - coming up next. --- debian/changelog | 5 +++++ deduplicate.sh | 7 +++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index cd6da70..5a6ef3e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -144,6 +144,11 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. deduplicate.sh will eventually be merged into macbuild.sh anyway. - deduplicate.sh: more temporary debugging output in fixup section. + - deduplicate.sh: surprisingly, it turned out that only checking the + duplicate's basename against the current dependency's basename is not + good enough. Actually construct "the real dependency-format duplicate + string" and check it against "the real dependency". Even this is still + not good enough as it needs a bit cleanup - coming up next. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 12732a4..7df0698 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -174,18 +174,17 @@ for all_entry in "${all_files[@]}"; do if [ "${?}" -eq 0 ]; then typeset line="" while read -r line; do - typeset dependencies_filename="$(basename "${line}")" echo "dependency of ${all_entry}: ${line}" typeset duplicate_entry="" typeset -i i="0" for i in "${!duplicates[@]}"; do typeset duplicate_entry="${duplicates[${i}]}" - typeset duplicate_filename="$(basename "${duplicate_entry}")" echo "checking for duplicate ${duplicate_entry}" + typeset duplicate_format="${dependency_base_format}/${duplicate_entry}" - if [ -n "${dependencies_filename}" ] && [ -n "${duplicate_filename}" ]; then - if [ "${dependencies_filename}" = "${duplicate_filename}" ]; then + if [ -n "${line}" ] && [ -n "${duplicate_format}" ]; then + if [ "${line}" = "${duplicate_format}" ]; then echo "install_name_tool -change \"${line}\" \"${to_files[${i}]}\" \"${all_entry}\"" fi else -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f8409ebcdf6321242dc43fec6195f9c7e20a5719 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 24 03:40:35 2015 +0200 deduplicate.sh: add WARNING to status message. --- debian/changelog | 1 + deduplicate.sh | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 35e9a7e..15e7fb4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -155,6 +155,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium parse_otool_output debugging. - deduplicate.sh: fix wrong return value capture. We want to check the return value of the executed function/command, not that of "typeset". + - deduplicate.sh: add WARNING to status message. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 98f0b26..26182d4 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -203,7 +203,7 @@ for all_entry in "${all_files[@]}"; do done done <<< "${dependencies}" else - echo "ERROR: otool returned error for file: ${all_entry}" >&2 - exit 1 + echo "WARNING: otool returned error for file: ${all_entry}" >&2 + echo "WARNING: skipping." >&2 fi done -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e9c24c8ba797d0bcd134c20be2937c549dcef80c Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 20:50:45 2015 +0200 deduplicate.sh: cleanup as announced in the last commit - using lazy_canonical_path. --- debian/changelog | 2 ++ deduplicate.sh | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5a6ef3e..acf573c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -149,6 +149,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium good enough. Actually construct "the real dependency-format duplicate string" and check it against "the real dependency". Even this is still not good enough as it needs a bit cleanup - coming up next. + - deduplicate.sh: cleanup as announced in the last commit - using + lazy_canonical_path. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 7df0698..f8e5668 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -148,7 +148,7 @@ for entry in "${duplicates[@]}"; do if [ -n "${filename}" ] && [ -n "${all_entry_filename}" ]; then if [ "${filename}" = "${all_entry_filename}" ]; then - typeset dependency_format="${dependency_base_format}/${all_entry##${base_dir}}" + typeset dependency_format="$(lazy_canonical_path "${dependency_base_format}/${all_entry##${base_dir}}")" to_files+=( "${dependency_format}" ) echo "${entry} => ${dependency_format}" @@ -181,7 +181,7 @@ for all_entry in "${all_files[@]}"; do for i in "${!duplicates[@]}"; do typeset duplicate_entry="${duplicates[${i}]}" echo "checking for duplicate ${duplicate_entry}" - typeset duplicate_format="${dependency_base_format}/${duplicate_entry}" + typeset duplicate_format="$(lazy_canonical_path "${dependency_base_format}/${duplicate_entry}")" if [ -n "${line}" ] && [ -n "${duplicate_format}" ]; then if [ "${line}" = "${duplicate_format}" ]; then -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e35da597046352eed171190731a2f0a28911b02f Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Aug 27 21:01:45 2015 +0200 deduplicate.sh: remove a bit of noisy debug output, but turn on parse_otool_output debugging. --- debian/changelog | 2 ++ deduplicate.sh | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index acf573c..6694224 100644 --- a/debian/changelog +++ b/debian/changelog @@ -151,6 +151,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium not good enough as it needs a bit cleanup - coming up next. - deduplicate.sh: cleanup as announced in the last commit - using lazy_canonical_path. + - deduplicate.sh: remove a bit of noisy debug output, but turn on + parse_otool_output debugging. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index f8e5668..e357529 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -171,16 +171,17 @@ for all_entry in "${all_files[@]}"; do typeset otool_out="$(otool -L "${all_entry}")" typeset dependencies="$(parse_otool_output "${otool_out}")" - if [ "${?}" -eq 0 ]; then + echo "parse_otool_output return value: ${?}" + if [ "${?}" -eq "0" ]; then typeset line="" while read -r line; do - echo "dependency of ${all_entry}: ${line}" + #echo "dependency of ${all_entry}: ${line}" typeset duplicate_entry="" typeset -i i="0" for i in "${!duplicates[@]}"; do typeset duplicate_entry="${duplicates[${i}]}" - echo "checking for duplicate ${duplicate_entry}" + #echo "checking for duplicate ${duplicate_entry}" typeset duplicate_format="$(lazy_canonical_path "${dependency_base_format}/${duplicate_entry}")" if [ -n "${line}" ] && [ -n "${duplicate_format}" ]; then -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit bf97b01720ba618667896d6cbe19aff183ced3b5 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 24 03:39:26 2015 +0200 deduplicate.sh: fix wrong return value capture. We want to check the return value of the executed function/command, not that of "typeset". --- debian/changelog | 2 ++ deduplicate.sh | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6694224..35e9a7e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -153,6 +153,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium lazy_canonical_path. - deduplicate.sh: remove a bit of noisy debug output, but turn on parse_otool_output debugging. + - deduplicate.sh: fix wrong return value capture. We want to check the + return value of the executed function/command, not that of "typeset". [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index e357529..98f0b26 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -170,8 +170,12 @@ done for all_entry in "${all_files[@]}"; do typeset otool_out="$(otool -L "${all_entry}")" - typeset dependencies="$(parse_otool_output "${otool_out}")" - echo "parse_otool_output return value: ${?}" + # Don't merge the declaration and initialization with the real value assignment. + # We need the return value of parse_otool_output(), but running + # typeset foo="$(bar)" will give us the return value of typeset, not bar(). + typeset dependencies="" + dependencies="$(parse_otool_output "${otool_out}")" + if [ "${?}" -eq "0" ]; then typeset line="" while read -r line; do -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b478c0a25a345529f3e4f5c62bf5e9d8b32eefe8 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 24 03:42:40 2015 +0200 deduplicate.sh: remove some noisy debug output. --- debian/changelog | 1 + deduplicate.sh | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 15e7fb4..0d287ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -156,6 +156,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: fix wrong return value capture. We want to check the return value of the executed function/command, not that of "typeset". - deduplicate.sh: add WARNING to status message. + - deduplicate.sh: remove some noisy debug output. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index 26182d4..c298194 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -14,7 +14,7 @@ otool_fail_str=( "is not an object file" "Archive : " ) parse_otool_output() { -set -x +#set -x typeset raw_output="${@}" typeset fail_str="" @@ -48,7 +48,7 @@ set -x done <<< "${raw_output}" IFS="${oldifs}" -set +x +#set +x return 0 } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7379e5cee773d59367bde09d7182cf047f1ff331 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 24 03:48:48 2015 +0200 macbuild.sh: replace tabs with two spaces. No functional changes. --- debian/changelog | 1 + macbuild.sh | 394 +++++++++++++++++++++++++++--------------------------- 2 files changed, 198 insertions(+), 197 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0d287ed..d3a7fa4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -157,6 +157,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium return value of the executed function/command, not that of "typeset". - deduplicate.sh: add WARNING to status message. - deduplicate.sh: remove some noisy debug output. + - macbuild.sh: replace tabs with two spaces. No functional changes. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 26f0d7e..80999bd 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -1,100 +1,100 @@ #!/bin/bash make_boolean() { - OPTION="${1}" + OPTION="${1}" - case "${OPTION}" in - ("0"|"no"|""|"No"|"nO"|"NO"|"false"|"FALSE") OPTION="0";; - (*) OPTION="1";; - esac + case "${OPTION}" in + ("0"|"no"|""|"No"|"nO"|"NO"|"false"|"FALSE") OPTION="0";; + (*) OPTION="1";; + esac - printf "${OPTION}" + printf "${OPTION}" } phase() { - echo - echo "***" - echo "*** ${1}..." - echo "***" - echo + echo + echo "***" + echo "*** ${1}..." + echo "***" + echo } usage() { - exec >&2 - - NO_VAL="0, no, NO, No, nO, false or FALSE" - printf "$(basename ${0}): usage\n\n" - printf "Accepted environment variables:\n" - printf "\tSDK:\t\t\t\tsets the target SDK [string]\n\t\t\t\t\tdefault: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk\n" - printf "\tMACOSX_DEPLOYMENT_TARGET:\tsets the deployment target (specific OS X version to optimize/build for) [string]\n\t\t\t\t\tdefault: 10.7\n" - printf "\tSTDLIB:\t\t\t\tsets a specific stdlib variant. Must be used with FORCE_STDLIB to have any effect. [string]\n\t\t\t\t\tdefault: autodetect\n" - printf "\tFORCE_STDLIB:\t\t\tforces a specific C++ stdlib version. If you use this, also specify STDLIB. YOU SHOULD NEVER USE THIS, UNLESS YOU KNOW WHAT YOU ARE DOING! [boolean]\n\t\t\t\t\tdefault: disabled\n" - printf "\tDEBUG\t\t\t\tenables or disables debug builds [boolean]\n\t\t\t\t\tdefault: disabled\n" - printf "\tBUNDLE\t\t\t\tenables or disables library bundling and the creation of a .dmg installer [boolean]\n\t\t\t\t\tdefault: enabled\n" - printf "\tUNIVERSAL\t\t\tenables or disables x86 support. x86_64 support is always enabled [boolean]\n\t\t\t\t\tdefault: enabled\n" - printf "\tMACPORTS_PREFIX\t\t\tsets the (MacPorts) prefix used to detect PulseAudio and nxproxy binaries\n\t\t\t\t\tdefault: /opt/local/\n" - printf "\n" - printf "Boolean values help:\n" - printf "\ta value of ${NO_VAL} will be treated as false\n" - printf "\tany other value will be treated as true\n" - - exit 2 + exec >&2 + + NO_VAL="0, no, NO, No, nO, false or FALSE" + printf "$(basename ${0}): usage\n\n" + printf "Accepted environment variables:\n" + printf "\tSDK:\t\t\t\tsets the target SDK [string]\n\t\t\t\t\tdefault: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk\n" + printf "\tMACOSX_DEPLOYMENT_TARGET:\tsets the deployment target (specific OS X version to optimize/build for) [string]\n\t\t\t\t\tdefault: 10.7\n" + printf "\tSTDLIB:\t\t\t\tsets a specific stdlib variant. Must be used with FORCE_STDLIB to have any effect. [string]\n\t\t\t\t\tdefault: autodetect\n" + printf "\tFORCE_STDLIB:\t\t\tforces a specific C++ stdlib version. If you use this, also specify STDLIB. YOU SHOULD NEVER USE THIS, UNLESS YOU KNOW WHAT YOU ARE DOING! [boolean]\n\t\t\t\t\tdefault: disabled\n" + printf "\tDEBUG\t\t\t\tenables or disables debug builds [boolean]\n\t\t\t\t\tdefault: disabled\n" + printf "\tBUNDLE\t\t\t\tenables or disables library bundling and the creation of a .dmg installer [boolean]\n\t\t\t\t\tdefault: enabled\n" + printf "\tUNIVERSAL\t\t\tenables or disables x86 support. x86_64 support is always enabled [boolean]\n\t\t\t\t\tdefault: enabled\n" + printf "\tMACPORTS_PREFIX\t\t\tsets the (MacPorts) prefix used to detect PulseAudio and nxproxy binaries\n\t\t\t\t\tdefault: /opt/local/\n" + printf "\n" + printf "Boolean values help:\n" + printf "\ta value of ${NO_VAL} will be treated as false\n" + printf "\tany other value will be treated as true\n" + + exit 2 } dependency_error() { - exec >&2 + exec >&2 - typeset element="${1}"; shift - typeset component="${1}"; shift - typeset type="${1}"; shift + typeset element="${1}"; shift + typeset component="${1}"; shift + typeset type="${1}"; shift - echo "${element} ${type} not found." - echo "Install ${component} -- e.g., via "port -vt install ${component}" if using MacPorts." - echo "If ${component} is already installed, try passing MACPORTS_PREFIX if the autodetected or default value (${MACPORTS_PREFIX}) does not match your setup." + echo "${element} ${type} not found." + echo "Install ${component} -- e.g., via "port -vt install ${component}" if using MacPorts." + echo "If ${component} is already installed, try passing MACPORTS_PREFIX if the autodetected or default value (${MACPORTS_PREFIX}) does not match your setup." - exit 3 + exit 3 } lazy_canonical_path() { - typeset path="${1}" + typeset path="${1}" - typeset old_path="" - while [ "${old_path}" != "${path}" ]; do - old_path="${path}" - path="${path//\/\///}" - done + typeset old_path="" + while [ "${old_path}" != "${path}" ]; do + old_path="${path}" + path="${path//\/\///}" + done - printf "${old_path}" + printf "${old_path}" } get_nesting_level() { set -x - typeset -i level=0 - typeset path="${1}" + typeset -i level=0 + typeset path="${1}" - while [ -n "${path}" ] && [ "${path}" != "." ] && [ "${path}" != "/" ]; do - i="$((${i} + 1))" - path="$(dirname "${path}")" - done + while [ -n "${path}" ] && [ "${path}" != "." ] && [ "${path}" != "/" ]; do + i="$((${i} + 1))" + path="$(dirname "${path}")" + done - printf "${level}" + printf "${level}" set +x } repeat_str() { # INPUT COUNT - typeset INPUT="${1:?"Error: no input string passed to ${FUNCNAME}()."}" - typeset COUNT="${2:?"Error: no count passed to ${FUNCNAME}()."}" + typeset INPUT="${1:?"Error: no input string passed to ${FUNCNAME}()."}" + typeset COUNT="${2:?"Error: no count passed to ${FUNCNAME}()."}" - typeset ret="" - typeset -i i=0 - while [ "${i}" -lt "${COUNT}" ]; do - ret="${ret}$(printf "${INPUT}")" - i=$((${i} + 1)) - done + typeset ret="" + typeset -i i=0 + while [ "${i}" -lt "${COUNT}" ]; do + ret="${ret}$(printf "${INPUT}")" + i=$((${i} + 1)) + done - printf "${ret}" + printf "${ret}" - return 0 + return 0 } MATCH_HELP='(^((-h)|(--help))([ ]|$))|([ ]+((-h)|(--help))([ ]|$))' @@ -115,12 +115,12 @@ PKG_DMG="${TOP_DIR}/pkg-dmg" # Try to find the MacPorts prefix. typeset MACPORTS_PREFIX_SEARCH="" if type -P port >/dev/null 2>&1; then - MACPORTS_PREFIX_SEARCH="$(type -P port)" - MACPORTS_PREFIX_SEARCH="${MACPORTS_PREFIX_SEARCH%%bin/port}" + MACPORTS_PREFIX_SEARCH="$(type -P port)" + MACPORTS_PREFIX_SEARCH="${MACPORTS_PREFIX_SEARCH%%bin/port}" else - # Port not being part find in ${PATH} doesn't necessarily mean it isn't available. - # Try to guess. - MACPORTS_PREFIX_SEARCH="/opt/local/" + # Port not being part find in ${PATH} doesn't necessarily mean it isn't available. + # Try to guess. + MACPORTS_PREFIX_SEARCH="/opt/local/" fi NXPROXY="nxproxy" @@ -151,25 +151,25 @@ BUILD_ARCH="x86_64" [ "${UNIVERSAL}" -eq "1" ] && BUILD_ARCH="${BUILD_ARCH} x86" if [ "${FORCE_STDLIB}" -eq "1" ]; then - if [[ -z "${STDLIB}" ]]; then - echo "stdlib forcing enabled, but STDLIB not passed." >&2 - exit 1 - fi - - if [[ "${STDLIB}" != "libc++" && "${STDLIB}" != "libstdc++" ]]; then - echo "stdlib forcing enabled, but STDLIB contains illegal value. Legal values: libc++, libstdc++" >&2 - exit 1 - fi + if [[ -z "${STDLIB}" ]]; then + echo "stdlib forcing enabled, but STDLIB not passed." >&2 + exit 1 + fi + + if [[ "${STDLIB}" != "libc++" && "${STDLIB}" != "libstdc++" ]]; then + echo "stdlib forcing enabled, but STDLIB contains illegal value. Legal values: libc++, libstdc++" >&2 + exit 1 + fi else - SDK_MINOR_VERSION="$(/usr/bin/perl -pe 's#.*?10\.(\d+).*?\.sdk$#\1#' <<< "${SDK}")" - MATCH_NUMBERS='^[0-9]+$' - if [[ "${SDK_MINOR_VERSION}" =~ ${MATCH_NUMBERS} ]]; then - [ "${SDK_MINOR_VERSION}" -gt "6" ] && STDLIB="libstdc++" - [ "${SDK_MINOR_VERSION}" -gt "8" ] && STDLIB="libc++" - else - echo "Unable to determine OS X version. Unknown value '${SDK_MINOR_VERSION}'." >&2 - exit 1 - fi + SDK_MINOR_VERSION="$(/usr/bin/perl -pe 's#.*?10\.(\d+).*?\.sdk$#\1#' <<< "${SDK}")" + MATCH_NUMBERS='^[0-9]+$' + if [[ "${SDK_MINOR_VERSION}" =~ ${MATCH_NUMBERS} ]]; then + [ "${SDK_MINOR_VERSION}" -gt "6" ] && STDLIB="libstdc++" + [ "${SDK_MINOR_VERSION}" -gt "8" ] && STDLIB="libc++" + else + echo "Unable to determine OS X version. Unknown value '${SDK_MINOR_VERSION}'." >&2 + exit 1 + fi fi # Gather files. @@ -183,14 +183,14 @@ typeset -a PULSEAUDIO_BINARIES_FULL typeset cur_binary fail="0" for cur_binary in ${PULSEAUDIO_BINARIES[@]}; do - cur_binary="$(lazy_canonical_path "${MACPORTS_PREFIX}/bin/${cur_binary}")" - - if [ -x "${cur_binary}" ]; then - PULSEAUDIO_BINARIES_FULL+=( "${cur_binary}" ) - else - fail="1" - break - fi + cur_binary="$(lazy_canonical_path "${MACPORTS_PREFIX}/bin/${cur_binary}")" + + if [ -x "${cur_binary}" ]; then + PULSEAUDIO_BINARIES_FULL+=( "${cur_binary}" ) + else + fail="1" + break + fi done [ "${fail}" -eq "1" ] && dependency_error "${cur_binary##"$(lazy_canonical_path "${MACPORTS_PREFIX}/bin/")"}" "pulseaudio" "binary" @@ -199,37 +199,37 @@ typeset cur_lib_or_libdir typeset -a PULSEAUDIO_LIBRARIES_FULL fail="0" for cur_lib_or_libdir in ${PULSEAUDIO_LIBRARIES[@]}; do - cur_lib_or_libdir="$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/${cur_lib_or_libdir}")" - - if [ ! -d "${cur_lib_or_libdir}" ] && [ -x "${cur_lib_or_libdir}" ]; then - echo "Adding ${cur_lib_or_libdir} to \${PULSEAUDIO_LIBRARIES_FULL}" - PULSEAUDIO_LIBRARIES_FULL+=( "${cur_lib_or_libdir}" ) - elif [ -d "${cur_lib_or_libdir}" ]; then - # That's a directory... more work needed here. - echo "Scrubbing directory ${cur_lib_or_libdir}" - typeset entry="" - - # -r parameter to read: Backslashes may NOT escape any characters! - # -d '': specifies the delimiter to be used - as '' resolves to an empty string followed - # by a NUL character, the delimiter is set to this very NUL (\000) character. - while read -r -d '' entry; do - typeset cur_file="$(basename "${entry}")" - typeset TMP_REGEX='^.*\.(\.[0-9]+){0,2}(so|dylib|bundle)$' - - # This is only here should the PA build system ever break and create - # "linux-style" library file names. Let's hope it never actually comes to that. - typeset TMP_REGEX_LINUX_COMPAT='^.*\.(so|dylib|bundle)(\.[0-9]+){0,2}$' - - if [[ "${cur_file}" =~ ${TMP_REGEX} ]] || [[ "${cur_file}" =~ ${TMP_REGEX_LINUX_COMPAT} ]]; then - # Filename matched the expected template. - echo "Adding $(lazy_canonical_path "${entry}") to \${PULSEAUDIO_LIBRARIES_FULL}" - PULSEAUDIO_LIBRARIES_FULL+=( "$(lazy_canonical_path "${entry}")" ) - fi - done < <(find "${cur_lib_or_libdir}" -type 'f' -print0) - else - fail="1" - break - fi + cur_lib_or_libdir="$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/${cur_lib_or_libdir}")" + + if [ ! -d "${cur_lib_or_libdir}" ] && [ -x "${cur_lib_or_libdir}" ]; then + echo "Adding ${cur_lib_or_libdir} to \${PULSEAUDIO_LIBRARIES_FULL}" + PULSEAUDIO_LIBRARIES_FULL+=( "${cur_lib_or_libdir}" ) + elif [ -d "${cur_lib_or_libdir}" ]; then + # That's a directory... more work needed here. + echo "Scrubbing directory ${cur_lib_or_libdir}" + typeset entry="" + + # -r parameter to read: Backslashes may NOT escape any characters! + # -d '': specifies the delimiter to be used - as '' resolves to an empty string followed + # by a NUL character, the delimiter is set to this very NUL (\000) character. + while read -r -d '' entry; do + typeset cur_file="$(basename "${entry}")" + typeset TMP_REGEX='^.*\.(\.[0-9]+){0,2}(so|dylib|bundle)$' + + # This is only here should the PA build system ever break and create + # "linux-style" library file names. Let's hope it never actually comes to that. + typeset TMP_REGEX_LINUX_COMPAT='^.*\.(so|dylib|bundle)(\.[0-9]+){0,2}$' + + if [[ "${cur_file}" =~ ${TMP_REGEX} ]] || [[ "${cur_file}" =~ ${TMP_REGEX_LINUX_COMPAT} ]]; then + # Filename matched the expected template. + echo "Adding $(lazy_canonical_path "${entry}") to \${PULSEAUDIO_LIBRARIES_FULL}" + PULSEAUDIO_LIBRARIES_FULL+=( "$(lazy_canonical_path "${entry}")" ) + fi + done < <(find "${cur_lib_or_libdir}" -type 'f' -print0) + else + fail="1" + break + fi done [ "${fail}" -eq "1" ] && dependency_error "${cur_lib_or_libdir}" "pulseaudio" "library or library directory" @@ -256,12 +256,12 @@ lrelease "${PROJECT}" phase "Running qmake" qmake -config "${BUILD_MODE}" -spec macx-g++ "${PROJECT}" \ - CONFIG+="${BUILD_ARCH}" \ - QMAKE_MAC_SDK="${SDK}" \ - QMAKE_MACOSX_DEPLOYMENT_TARGET="${MACOSX_DEPLOYMENT_TARGET}" \ - OSX_STDLIB="${STDLIB}" \ - MACPORTS_INCLUDE_PATH="${MACPORTS_PREFIX}/include" \ - MACPORTS_LIBRARY_PATH="${MACPORTS_PREFIX}/lib" + CONFIG+="${BUILD_ARCH}" \ + QMAKE_MAC_SDK="${SDK}" \ + QMAKE_MACOSX_DEPLOYMENT_TARGET="${MACOSX_DEPLOYMENT_TARGET}" \ + OSX_STDLIB="${STDLIB}" \ + MACPORTS_INCLUDE_PATH="${MACPORTS_PREFIX}/include" \ + MACPORTS_LIBRARY_PATH="${MACPORTS_PREFIX}/lib" phase "Running make" make -j2 @@ -274,84 +274,84 @@ cp -av "${NXPROXY}" "${EXE_DIR}/" phase "Copying PulseAudio" for cur_binary in ${PULSEAUDIO_BINARIES_FULL[@]}; do - cp -av "${cur_binary}" "${EXE_DIR}/" + cp -av "${cur_binary}" "${EXE_DIR}/" done typeset intermediate_lib_dir="" for cur_binary in ${PULSEAUDIO_LIBRARIES_FULL[@]}; do set -x - intermediate_lib_dir="$(lazy_canonical_path "$(dirname "${cur_binary}")/")" - intermediate_lib_dir="${intermediate_lib_dir##"$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/")"}" + intermediate_lib_dir="$(lazy_canonical_path "$(dirname "${cur_binary}")/")" + intermediate_lib_dir="${intermediate_lib_dir##"$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/")"}" - mkdir -p "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/" + mkdir -p "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/" - cp -av "${cur_binary}" "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/" + cp -av "${cur_binary}" "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/" set +x done if [ "${BUNDLE}" = "1" ]; then - phase "Bundling nxproxy" - dylibbundler \ - --fix-file "${EXE_DIR}/nxproxy" \ - --bundle-deps \ - --dest-dir "${FRAMEWORKS_DIR}/" \ - --install-path "@executable_path/../Frameworks/" \ - --create-dir - - phase "Bundling PulseAudio" - typeset cur_binary_name="" - for cur_binary in ${PULSEAUDIO_BINARIES_FULL[@]}; do - if [ ! -L "${cur_binary}" ]; then - cur_binary_name="$(basename "${cur_binary}")" - dylibbundler \ - --fix-file "${EXE_DIR}/${cur_binary_name}" \ - --bundle-deps \ - --dest-dir "${FRAMEWORKS_DIR}/" \ - --install-path "@executable_path/../Frameworks/" \ - --create-dir \ - --overwrite-files - fi - done - - typeset intermediate_lib_dir="" - for cur_binary in ${PULSEAUDIO_LIBRARIES_FULL[@]}; do - intermediate_lib_dir="$(lazy_canonical_path "$(dirname "${cur_binary}")/")" - intermediate_lib_dir="${intermediate_lib_dir##"$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/")"}" - - if [ ! -L "${cur_binary}" ]; then - cur_binary_name="$(basename "${cur_binary}")" - echo "Handling ${cur_binary} => ${intermediate_lib_dir}/${cur_binary_name}." - - typeset nesting_level="$(get_nesting_level "${intermediate_lib_dir}")" - - dylibbundler \ - --fix-file "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/${cur_binary_name}" \ - --bundle-deps \ - --dest-dir "${FRAMEWORKS_DIR}/${intermediate_lib_dir}" \ - --install-path "@executable_path/$(repeat_str "../" "${nesting_level}")../Frameworks/${intermediate_lib_dir}" \ - --create-dir \ - --overwrite-files - fi - done - - phase "Bundling up using macdeployqt" - macdeployqt "${APPBUNDLE}" -verbose=2 - - phase "Creating DMG" - ${PKG_DMG} \ - --source "${APPBUNDLE}" \ - --sourcefile \ - --target "${DMGFILE}" \ - --volname "x2goclient" \ - --verbosity 2 \ - --mkdir "/.background" \ - --copy "${TOP_DIR}/res/img/png/macinstaller_background.png:/.background" \ - --copy "${TOP_DIR}/res/osxbundle/macdmg.DS_Store:/.DS_Store" \ - --copy "${TOP_DIR}/LICENSE" \ - --copy "${TOP_DIR}/COPYING" \ - --symlink "/Applications: " \ - --icon "${TOP_DIR}/res/img/icons/x2go-mac.icns" \ - --format "UDBZ" + phase "Bundling nxproxy" + dylibbundler \ + --fix-file "${EXE_DIR}/nxproxy" \ + --bundle-deps \ + --dest-dir "${FRAMEWORKS_DIR}/" \ + --install-path "@executable_path/../Frameworks/" \ + --create-dir + + phase "Bundling PulseAudio" + typeset cur_binary_name="" + for cur_binary in ${PULSEAUDIO_BINARIES_FULL[@]}; do + if [ ! -L "${cur_binary}" ]; then + cur_binary_name="$(basename "${cur_binary}")" + dylibbundler \ + --fix-file "${EXE_DIR}/${cur_binary_name}" \ + --bundle-deps \ + --dest-dir "${FRAMEWORKS_DIR}/" \ + --install-path "@executable_path/../Frameworks/" \ + --create-dir \ + --overwrite-files + fi + done + + typeset intermediate_lib_dir="" + for cur_binary in ${PULSEAUDIO_LIBRARIES_FULL[@]}; do + intermediate_lib_dir="$(lazy_canonical_path "$(dirname "${cur_binary}")/")" + intermediate_lib_dir="${intermediate_lib_dir##"$(lazy_canonical_path "${MACPORTS_PREFIX}/lib/")"}" + + if [ ! -L "${cur_binary}" ]; then + cur_binary_name="$(basename "${cur_binary}")" + echo "Handling ${cur_binary} => ${intermediate_lib_dir}/${cur_binary_name}." + + typeset nesting_level="$(get_nesting_level "${intermediate_lib_dir}")" + + dylibbundler \ + --fix-file "${FRAMEWORKS_DIR}/${intermediate_lib_dir}/${cur_binary_name}" \ + --bundle-deps \ + --dest-dir "${FRAMEWORKS_DIR}/${intermediate_lib_dir}" \ + --install-path "@executable_path/$(repeat_str "../" "${nesting_level}")../Frameworks/${intermediate_lib_dir}" \ + --create-dir \ + --overwrite-files + fi + done + + phase "Bundling up using macdeployqt" + macdeployqt "${APPBUNDLE}" -verbose=2 + + phase "Creating DMG" + ${PKG_DMG} \ + --source "${APPBUNDLE}" \ + --sourcefile \ + --target "${DMGFILE}" \ + --volname "x2goclient" \ + --verbosity 2 \ + --mkdir "/.background" \ + --copy "${TOP_DIR}/res/img/png/macinstaller_background.png:/.background" \ + --copy "${TOP_DIR}/res/osxbundle/macdmg.DS_Store:/.DS_Store" \ + --copy "${TOP_DIR}/LICENSE" \ + --copy "${TOP_DIR}/COPYING" \ + --symlink "/Applications: " \ + --icon "${TOP_DIR}/res/img/icons/x2go-mac.icns" \ + --format "UDBZ" fi popd -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c90871ea128fb1bfa67249bacbaa46b7cc4da438 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 24 03:50:54 2015 +0200 deduplicate.sh: replace tabs with two spaces. No functional changes. --- debian/changelog | 1 + deduplicate.sh | 290 +++++++++++++++++++++++++++--------------------------- 2 files changed, 146 insertions(+), 145 deletions(-) diff --git a/debian/changelog b/debian/changelog index d3a7fa4..c2e5df8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -158,6 +158,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: add WARNING to status message. - deduplicate.sh: remove some noisy debug output. - macbuild.sh: replace tabs with two spaces. No functional changes. + - deduplicate.sh: replace tabs with two spaces. No functional changes. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/deduplicate.sh b/deduplicate.sh index c298194..636ea5c 100755 --- a/deduplicate.sh +++ b/deduplicate.sh @@ -10,200 +10,200 @@ typeset -r dependency_base_format='@executable_path/../Frameworks/' typeset -a otool_fail_str otool_fail_str=( "is not an object file" - "can't open file" - "Archive : " ) + "can't open file" + "Archive : " ) parse_otool_output() { #set -x - typeset raw_output="${@}" - - typeset fail_str="" - for fail_str in "${otool_fail_str[@]}"; do - if echo "${raw_output}" | grep -q "${fail_str}"; then - return 1 - fi - done - - typeset tmp_regex='^[[:space:]]+(.*)[[:space:]]\(compatibility version .*, current version .*\)' - - - # In this special case, we do not want read to perform any word splitting. - typeset oldifs="${IFS}" - IFS='' - - # Used for skipping the first matching entry - which should typically be the ID line... - # That's a very naïve way to do this. Maybe there should be a bit more magic - # to catch this more reliably. - typeset -i first="1" - - typeset line="" - while read -r line; do - if [[ "${line}" =~ ${tmp_regex} ]]; then - if [ "${first}" -ne "1" ]; then - echo "${BASH_REMATCH[1]}" - else - first="0" - fi - fi - done <<< "${raw_output}" - - IFS="${oldifs}" + typeset raw_output="${@}" + + typeset fail_str="" + for fail_str in "${otool_fail_str[@]}"; do + if echo "${raw_output}" | grep -q "${fail_str}"; then + return 1 + fi + done + + typeset tmp_regex='^[[:space:]]+(.*)[[:space:]]\(compatibility version .*, current version .*\)' + + + # In this special case, we do not want read to perform any word splitting. + typeset oldifs="${IFS}" + IFS='' + + # Used for skipping the first matching entry - which should typically be the ID line... + # That's a very naïve way to do this. Maybe there should be a bit more magic + # to catch this more reliably. + typeset -i first="1" + + typeset line="" + while read -r line; do + if [[ "${line}" =~ ${tmp_regex} ]]; then + if [ "${first}" -ne "1" ]; then + echo "${BASH_REMATCH[1]}" + else + first="0" + fi + fi + done <<< "${raw_output}" + + IFS="${oldifs}" #set +x - return 0 + return 0 } lazy_canonical_path() { - typeset path="${1}" + typeset path="${1}" - typeset old_path="" - while [ "${old_path}" != "${path}" ]; do - old_path="${path}" - path="${path//\/\///}" - done + typeset old_path="" + while [ "${old_path}" != "${path}" ]; do + old_path="${path}" + path="${path//\/\///}" + done - printf "${old_path}" + printf "${old_path}" } typeset -a all_files typeset entry="" while read -r -d '' entry; do - all_files+=( "${entry}" ) + all_files+=( "${entry}" ) done < <(find "${base_dir}" -type 'f' -print0) typeset -a top_files for entry in "${all_files[@]}"; do - typeset relative_path="${entry##"${base_dir}/"}" - typeset tmp_regex='^[^/]+$' - if [[ "${relative_path}" =~ ${tmp_regex} ]]; then - echo "${relative_path} is top file, adding to array." - top_files+=( "${relative_path}" ) - fi + typeset relative_path="${entry##"${base_dir}/"}" + typeset tmp_regex='^[^/]+$' + if [[ "${relative_path}" =~ ${tmp_regex} ]]; then + echo "${relative_path} is top file, adding to array." + top_files+=( "${relative_path}" ) + fi done typeset -a duplicates for entry in "${all_files[@]}"; do - typeset relative_path="${entry##"${base_dir}/"}" - typeset file_name="$(basename "${entry}")" - typeset top_entry="" - for top_entry in "${top_files[@]}"; do - if [ "${top_entry}" != "${relative_path}" ]; then - if [ "${file_name}" = "${top_entry}" ]; then - echo "Adding duplicate: ${relative_path}" - duplicates+=( "${relative_path}" ) - fi - fi - done + typeset relative_path="${entry##"${base_dir}/"}" + typeset file_name="$(basename "${entry}")" + typeset top_entry="" + for top_entry in "${top_files[@]}"; do + if [ "${top_entry}" != "${relative_path}" ]; then + if [ "${file_name}" = "${top_entry}" ]; then + echo "Adding duplicate: ${relative_path}" + duplicates+=( "${relative_path}" ) + fi + fi + done done echo "duplicates array before:" for entry in "${duplicates[@]}"; do - echo "${entry}" + echo "${entry}" done typeset -i i="0" for i in "${!duplicates[@]}"; do - entry="${duplicates[${i}]}" - typeset special_file_regex="" - for special_file_regex in "${special_files_regex[@]}"; do - typeset tmp_regex='^'"${special_file_regex}"'$' - if [[ "${entry}" =~ ${tmp_regex} ]]; then - echo "mv \"${base_dir}/$(basename "${entry}")\" \"${base_dir}/$(dirname "${special_file_regex}")/\"" - duplicates[${i}]="$(basename "${entry}")" - echo "Renamed ${entry} in duplicates array to ${duplicates[${i}]}" - fi - done + entry="${duplicates[${i}]}" + typeset special_file_regex="" + for special_file_regex in "${special_files_regex[@]}"; do + typeset tmp_regex='^'"${special_file_regex}"'$' + if [[ "${entry}" =~ ${tmp_regex} ]]; then + echo "mv \"${base_dir}/$(basename "${entry}")\" \"${base_dir}/$(dirname "${special_file_regex}")/\"" + duplicates[${i}]="$(basename "${entry}")" + echo "Renamed ${entry} in duplicates array to ${duplicates[${i}]}" + fi + done done echo "duplicates array after:" for entry in "${duplicates[@]}"; do - echo "${entry}" + echo "${entry}" done for entry in "${duplicates[@]}"; do - echo "rm -v ${base_dir}/${entry}" - typeset -i i="0" - for i in "${!all_files[@]}"; do - typeset all_entry="${all_files[${i}]}" - typeset relative_path="${all_entry##"${base_dir}/"}" - if [ "${relative_path}" = "${entry}" ]; then - unset all_files[${i}] - fi - done + echo "rm -v ${base_dir}/${entry}" + typeset -i i="0" + for i in "${!all_files[@]}"; do + typeset all_entry="${all_files[${i}]}" + typeset relative_path="${all_entry##"${base_dir}/"}" + if [ "${relative_path}" = "${entry}" ]; then + unset all_files[${i}] + fi + done done echo "New value for all_files:" for entry in "${all_files[@]}"; do - echo "${entry}" + echo "${entry}" done echo "Duplicates-to-real map:" # Build complementary array to duplicates. typeset -a to_files for entry in "${duplicates[@]}"; do - typeset filename="$(basename "${entry}")" - - typeset all_entry="" - for all_entry in "${all_files[@]}"; do - typeset all_entry_filename="$(basename "${all_entry}")" - - if [ -n "${filename}" ] && [ -n "${all_entry_filename}" ]; then - if [ "${filename}" = "${all_entry_filename}" ]; then - typeset dependency_format="$(lazy_canonical_path "${dependency_base_format}/${all_entry##${base_dir}}")" - to_files+=( "${dependency_format}" ) - - echo "${entry} => ${dependency_format}" - - # There should be only one entry matching, so we can save a bit of time and break out of the loop. - # Even more importantly, we only want one entry for each duplicates entry anyway... - break - fi - else - echo "ERROR: empty file name while matching duplicates with non-duplicates." >&2 - echo "ERROR: duplicate entry: \"${entry}\"" >&2 - echo "ERROR: real entry: \"${all_entry}\"" >&2 - exit 1 - fi - done + typeset filename="$(basename "${entry}")" + + typeset all_entry="" + for all_entry in "${all_files[@]}"; do + typeset all_entry_filename="$(basename "${all_entry}")" + + if [ -n "${filename}" ] && [ -n "${all_entry_filename}" ]; then + if [ "${filename}" = "${all_entry_filename}" ]; then + typeset dependency_format="$(lazy_canonical_path "${dependency_base_format}/${all_entry##${base_dir}}")" + to_files+=( "${dependency_format}" ) + + echo "${entry} => ${dependency_format}" + + # There should be only one entry matching, so we can save a bit of time and break out of the loop. + # Even more importantly, we only want one entry for each duplicates entry anyway... + break + fi + else + echo "ERROR: empty file name while matching duplicates with non-duplicates." >&2 + echo "ERROR: duplicate entry: \"${entry}\"" >&2 + echo "ERROR: real entry: \"${all_entry}\"" >&2 + exit 1 + fi + done done # Try to fixup files broken by duplicates removal. for all_entry in "${all_files[@]}"; do - typeset otool_out="$(otool -L "${all_entry}")" - - # Don't merge the declaration and initialization with the real value assignment. - # We need the return value of parse_otool_output(), but running - # typeset foo="$(bar)" will give us the return value of typeset, not bar(). - typeset dependencies="" - dependencies="$(parse_otool_output "${otool_out}")" - - if [ "${?}" -eq "0" ]; then - typeset line="" - while read -r line; do - #echo "dependency of ${all_entry}: ${line}" - - typeset duplicate_entry="" - typeset -i i="0" - for i in "${!duplicates[@]}"; do - typeset duplicate_entry="${duplicates[${i}]}" - #echo "checking for duplicate ${duplicate_entry}" - typeset duplicate_format="$(lazy_canonical_path "${dependency_base_format}/${duplicate_entry}")" - - if [ -n "${line}" ] && [ -n "${duplicate_format}" ]; then - if [ "${line}" = "${duplicate_format}" ]; then - echo "install_name_tool -change \"${line}\" \"${to_files[${i}]}\" \"${all_entry}\"" - fi - else - echo "ERROR: empty file name while replacing duplicate dependencies." >&2 - echo "ERROR: for file ${all_entry}" >&2 - echo "ERROR: at dependency ${line}" >&2 - echo "ERROR: duplicate entry: \"${duplicate_entry}\"" >&2 - echo "ERROR: dependency: \"${line}\"" >&2 - exit 1 - fi - done - done <<< "${dependencies}" - else - echo "WARNING: otool returned error for file: ${all_entry}" >&2 - echo "WARNING: skipping." >&2 - fi + typeset otool_out="$(otool -L "${all_entry}")" + + # Don't merge the declaration and initialization with the real value assignment. + # We need the return value of parse_otool_output(), but running + # typeset foo="$(bar)" will give us the return value of typeset, not bar(). + typeset dependencies="" + dependencies="$(parse_otool_output "${otool_out}")" + + if [ "${?}" -eq "0" ]; then + typeset line="" + while read -r line; do + #echo "dependency of ${all_entry}: ${line}" + + typeset duplicate_entry="" + typeset -i i="0" + for i in "${!duplicates[@]}"; do + typeset duplicate_entry="${duplicates[${i}]}" + #echo "checking for duplicate ${duplicate_entry}" + typeset duplicate_format="$(lazy_canonical_path "${dependency_base_format}/${duplicate_entry}")" + + if [ -n "${line}" ] && [ -n "${duplicate_format}" ]; then + if [ "${line}" = "${duplicate_format}" ]; then + echo "install_name_tool -change \"${line}\" \"${to_files[${i}]}\" \"${all_entry}\"" + fi + else + echo "ERROR: empty file name while replacing duplicate dependencies." >&2 + echo "ERROR: for file ${all_entry}" >&2 + echo "ERROR: at dependency ${line}" >&2 + echo "ERROR: duplicate entry: \"${duplicate_entry}\"" >&2 + echo "ERROR: dependency: \"${line}\"" >&2 + exit 1 + fi + done + done <<< "${dependencies}" + else + echo "WARNING: otool returned error for file: ${all_entry}" >&2 + echo "WARNING: skipping." >&2 + fi done -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2e9018f7d61638240a29f755adad24e59178652e Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 24 04:18:25 2015 +0200 macbuild.sh: merge deduplicate.sh content in. Also enable the functionality "for real", not just as a dry-run. --- debian/changelog | 2 + macbuild.sh | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 198 insertions(+) diff --git a/debian/changelog b/debian/changelog index c2e5df8..fb8b383 100644 --- a/debian/changelog +++ b/debian/changelog @@ -159,6 +159,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: remove some noisy debug output. - macbuild.sh: replace tabs with two spaces. No functional changes. - deduplicate.sh: replace tabs with two spaces. No functional changes. + - macbuild.sh: merge deduplicate.sh content in. Also enable the + functionality "for real", not just as a dry-run. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 80999bd..3fe7447 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -97,6 +97,50 @@ repeat_str() { # INPUT COUNT return 0 } +typeset -a otool_fail_str +otool_fail_str=( "is not an object file" + "can't open file" + "Archive : " ) + +parse_otool_output() { +#set -x + typeset raw_output="${@}" + + typeset fail_str="" + for fail_str in "${otool_fail_str[@]}"; do + if echo "${raw_output}" | grep -q "${fail_str}"; then + return 1 + fi + done + + typeset tmp_regex='^[[:space:]]+(.*)[[:space:]]\(compatibility version .*, current version .*\)' + + + # In this special case, we do not want read to perform any word splitting. + typeset oldifs="${IFS}" + IFS='' + + # Used for skipping the first matching entry - which should typically be the ID line... + # That's a very naïve way to do this. Maybe there should be a bit more magic + # to catch this more reliably. + typeset -i first="1" + + typeset line="" + while read -r line; do + if [[ "${line}" =~ ${tmp_regex} ]]; then + if [ "${first}" -ne "1" ]; then + echo "${BASH_REMATCH[1]}" + else + first="0" + fi + fi + done <<< "${raw_output}" + + IFS="${oldifs}" +#set +x + return 0 +} + MATCH_HELP='(^((-h)|(--help))([ ]|$))|([ ]+((-h)|(--help))([ ]|$))' [ -n "${*}" ] && [[ "${*}" =~ ${MATCH_HELP} ]] && usage @@ -130,6 +174,11 @@ PULSEAUDIO_LIBRARIES=( "libpulse-simple.0.dylib" "pulse-6.0" "pulseaudio" ) +typeset -a special_files_regex +special_files_regex+=( "pulseaudio/libpulsecommon-[0-9]\.[0-9]\.dylib" ) + +typeset -r dependency_base_format='@executable_path/../Frameworks/' + : ${SDK:="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk"} : ${MACOSX_DEPLOYMENT_TARGET:="10.7"} : ${FORCE_STDLIB:="0"} @@ -334,6 +383,153 @@ if [ "${BUNDLE}" = "1" ]; then fi done + phase "Deduplicating PulseAudio libraries and dependencies" + typeset -r base_dir="$(lazy_canonical_path "${FRAMEWORKS_DIR}")" + + typeset -a all_files + typeset entry="" + while read -r -d '' entry; do + all_files+=( "${entry}" ) + done < <(find "${base_dir}" -type 'f' -print0) + + typeset -a top_files + for entry in "${all_files[@]}"; do + typeset relative_path="${entry##"${base_dir}/"}" + typeset tmp_regex='^[^/]+$' + if [[ "${relative_path}" =~ ${tmp_regex} ]]; then + echo "${relative_path} is top file, adding to array." + top_files+=( "${relative_path}" ) + fi + done + + typeset -a duplicates + for entry in "${all_files[@]}"; do + typeset relative_path="${entry##"${base_dir}/"}" + typeset file_name="$(basename "${entry}")" + typeset top_entry="" + for top_entry in "${top_files[@]}"; do + if [ "${top_entry}" != "${relative_path}" ]; then + if [ "${file_name}" = "${top_entry}" ]; then + echo "Adding duplicate: ${relative_path}" + duplicates+=( "${relative_path}" ) + fi + fi + done + done + + echo "duplicates array before:" + for entry in "${duplicates[@]}"; do + echo "${entry}" + done + + typeset -i i="0" + for i in "${!duplicates[@]}"; do + entry="${duplicates[${i}]}" + typeset special_file_regex="" + for special_file_regex in "${special_files_regex[@]}"; do + typeset tmp_regex='^'"${special_file_regex}"'$' + if [[ "${entry}" =~ ${tmp_regex} ]]; then + mv -v "${base_dir}/$(basename "${entry}")" "${base_dir}/$(dirname "${special_file_regex}")/" + duplicates[${i}]="$(basename "${entry}")" + echo "Renamed ${entry} in duplicates array to ${duplicates[${i}]}" + fi + done + done + + echo "duplicates array after:" + for entry in "${duplicates[@]}"; do + echo "${entry}" + done + + for entry in "${duplicates[@]}"; do + rm -v "${base_dir}/${entry}" + typeset -i i="0" + for i in "${!all_files[@]}"; do + typeset all_entry="${all_files[${i}]}" + typeset relative_path="${all_entry##"${base_dir}/"}" + if [ "${relative_path}" = "${entry}" ]; then + unset all_files[${i}] + fi + done + done + + echo "New value for all_files:" + for entry in "${all_files[@]}"; do + echo "${entry}" + done + + echo "Duplicates-to-real map:" + # Build complementary array to duplicates. + typeset -a to_files + for entry in "${duplicates[@]}"; do + typeset filename="$(basename "${entry}")" + + typeset all_entry="" + for all_entry in "${all_files[@]}"; do + typeset all_entry_filename="$(basename "${all_entry}")" + + if [ -n "${filename}" ] && [ -n "${all_entry_filename}" ]; then + if [ "${filename}" = "${all_entry_filename}" ]; then + typeset dependency_format="$(lazy_canonical_path "${dependency_base_format}/${all_entry##${base_dir}}")" + to_files+=( "${dependency_format}" ) + + echo "${entry} => ${dependency_format}" + + # There should be only one entry matching, so we can save a bit of time and break out of the loop. + # Even more importantly, we only want one entry for each duplicates entry anyway... + break + fi + else + echo "ERROR: empty file name while matching duplicates with non-duplicates." >&2 + echo "ERROR: duplicate entry: \"${entry}\"" >&2 + echo "ERROR: real entry: \"${all_entry}\"" >&2 + exit 1 + fi + done + done + + # Try to fixup files broken by duplicates removal. + for all_entry in "${all_files[@]}"; do + typeset otool_out="$(otool -L "${all_entry}")" + + # Don't merge the declaration and initialization with the real value assignment. + # We need the return value of parse_otool_output(), but running + # typeset foo="$(bar)" will give us the return value of typeset, not bar(). + typeset dependencies="" + dependencies="$(parse_otool_output "${otool_out}")" + + if [ "${?}" -eq "0" ]; then + typeset line="" + while read -r line; do + #echo "dependency of ${all_entry}: ${line}" + + typeset duplicate_entry="" + typeset -i i="0" + for i in "${!duplicates[@]}"; do + typeset duplicate_entry="${duplicates[${i}]}" + #echo "checking for duplicate ${duplicate_entry}" + typeset duplicate_format="$(lazy_canonical_path "${dependency_base_format}/${duplicate_entry}")" + + if [ -n "${line}" ] && [ -n "${duplicate_format}" ]; then + if [ "${line}" = "${duplicate_format}" ]; then + install_name_tool -change "${line}" "${to_files[${i}]}" "${all_entry}" + fi + else + echo "ERROR: empty file name while replacing duplicate dependencies." >&2 + echo "ERROR: for file ${all_entry}" >&2 + echo "ERROR: at dependency ${line}" >&2 + echo "ERROR: duplicate entry: \"${duplicate_entry}\"" >&2 + echo "ERROR: dependency: \"${line}\"" >&2 + exit 1 + fi + done + done <<< "${dependencies}" + else + echo "WARNING: otool returned error for file: ${all_entry}" >&2 + echo "WARNING: skipping." >&2 + fi + done + phase "Bundling up using macdeployqt" macdeployqt "${APPBUNDLE}" -verbose=2 -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a66475df02e69c34a3d612ffc6aa4593e960e93c Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 24 04:28:15 2015 +0200 macbuild.sh: spelling fix. --- debian/changelog | 1 + macbuild.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index fb8b383..c3b8b89 100644 --- a/debian/changelog +++ b/debian/changelog @@ -161,6 +161,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - deduplicate.sh: replace tabs with two spaces. No functional changes. - macbuild.sh: merge deduplicate.sh content in. Also enable the functionality "for real", not just as a dry-run. + - macbuild.sh: spelling fix. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 3fe7447..8a2eba3 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -162,7 +162,7 @@ if type -P port >/dev/null 2>&1; then MACPORTS_PREFIX_SEARCH="$(type -P port)" MACPORTS_PREFIX_SEARCH="${MACPORTS_PREFIX_SEARCH%%bin/port}" else - # Port not being part find in ${PATH} doesn't necessarily mean it isn't available. + # Port not being found in ${PATH} doesn't necessarily mean it isn't available. # Try to guess. MACPORTS_PREFIX_SEARCH="/opt/local/" fi -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 34f28b2b72ae95b8d87e8a8302c544572eb8cbec Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Sep 30 23:22:57 2015 +0200 macbuild.sh: more debug messages and a whitespace change. --- debian/changelog | 1 + macbuild.sh | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index c3b8b89..018c2c2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -162,6 +162,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: merge deduplicate.sh content in. Also enable the functionality "for real", not just as a dry-run. - macbuild.sh: spelling fix. + - macbuild.sh: more more debug messages and a whitespace change. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 8a2eba3..9e44f15 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -115,7 +115,6 @@ parse_otool_output() { typeset tmp_regex='^[[:space:]]+(.*)[[:space:]]\(compatibility version .*, current version .*\)' - # In this special case, we do not want read to perform any word splitting. typeset oldifs="${IFS}" IFS='' @@ -389,6 +388,7 @@ if [ "${BUNDLE}" = "1" ]; then typeset -a all_files typeset entry="" while read -r -d '' entry; do + echo "Adding ${entry} to all files" all_files+=( "${entry}" ) done < <(find "${base_dir}" -type 'f' -print0) @@ -396,6 +396,7 @@ if [ "${BUNDLE}" = "1" ]; then for entry in "${all_files[@]}"; do typeset relative_path="${entry##"${base_dir}/"}" typeset tmp_regex='^[^/]+$' + echo "Checking ${relative_path} against regex '${tmp_regex}'" if [[ "${relative_path}" =~ ${tmp_regex} ]]; then echo "${relative_path} is top file, adding to array." top_files+=( "${relative_path}" ) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b786ac5400342fd533a709ac00fcdd45c4aa8b36 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Sep 30 23:30:48 2015 +0200 macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. --- debian/changelog | 2 ++ macbuild.sh | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 018c2c2..f94b627 100644 --- a/debian/changelog +++ b/debian/changelog @@ -163,6 +163,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium functionality "for real", not just as a dry-run. - macbuild.sh: spelling fix. - macbuild.sh: more more debug messages and a whitespace change. + - macbuild.sh: fix removal of base prefix in deduplication if base prefix + ends in a slash. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 9e44f15..25de145 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -394,7 +394,7 @@ if [ "${BUNDLE}" = "1" ]; then typeset -a top_files for entry in "${all_files[@]}"; do - typeset relative_path="${entry##"${base_dir}/"}" + typeset relative_path="${entry##"$(lazy_canonical_path "${base_dir}/")"}" typeset tmp_regex='^[^/]+$' echo "Checking ${relative_path} against regex '${tmp_regex}'" if [[ "${relative_path}" =~ ${tmp_regex} ]]; then @@ -405,7 +405,7 @@ if [ "${BUNDLE}" = "1" ]; then typeset -a duplicates for entry in "${all_files[@]}"; do - typeset relative_path="${entry##"${base_dir}/"}" + typeset relative_path="${entry##"$(lazy_canonical_path "${base_dir}/")"}" typeset file_name="$(basename "${entry}")" typeset top_entry="" for top_entry in "${top_files[@]}"; do @@ -447,7 +447,7 @@ if [ "${BUNDLE}" = "1" ]; then typeset -i i="0" for i in "${!all_files[@]}"; do typeset all_entry="${all_files[${i}]}" - typeset relative_path="${all_entry##"${base_dir}/"}" + typeset relative_path="${all_entry##"$(lazy_canonical_path "${base_dir}/")"}" if [ "${relative_path}" = "${entry}" ]; then unset all_files[${i}] fi -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c4e2264c8c4061cab6200b605790c98489f022b3 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Sep 30 23:42:01 2015 +0200 macbuild.sh: copy "special" files, so that they can be removed later on. --- debian/changelog | 1 + macbuild.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f94b627..37a7648 100644 --- a/debian/changelog +++ b/debian/changelog @@ -165,6 +165,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: more more debug messages and a whitespace change. - macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. + - macbuild.sh: copy "special" files, so that they can be removed later on. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 25de145..9bba392 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -430,7 +430,7 @@ if [ "${BUNDLE}" = "1" ]; then for special_file_regex in "${special_files_regex[@]}"; do typeset tmp_regex='^'"${special_file_regex}"'$' if [[ "${entry}" =~ ${tmp_regex} ]]; then - mv -v "${base_dir}/$(basename "${entry}")" "${base_dir}/$(dirname "${special_file_regex}")/" + cp -v "${base_dir}/$(basename "${entry}")" "${base_dir}/$(dirname "${special_file_regex}")/" duplicates[${i}]="$(basename "${entry}")" echo "Renamed ${entry} in duplicates array to ${duplicates[${i}]}" fi -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c9abccde205638ad2c8211696bfcf59fbe7300d6 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Sep 30 23:44:30 2015 +0200 macbuild.sh: rewrite ID line detection algorithm. Modules don't seem to be needing one, so skipping the first dependency line incidentally skips a "real" dependency for modules. --- debian/changelog | 3 +++ macbuild.sh | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 37a7648..3df66e9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -166,6 +166,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. - macbuild.sh: copy "special" files, so that they can be removed later on. + - macbuild.sh: rewrite ID line detection algorithm. Modules don't seem to + be needing one, so skipping the first dependency line incidentally skips + a "real" dependency for modules. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 9bba392..c95955e 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -119,19 +119,26 @@ parse_otool_output() { typeset oldifs="${IFS}" IFS='' - # Used for skipping the first matching entry - which should typically be the ID line... - # That's a very naïve way to do this. Maybe there should be a bit more magic - # to catch this more reliably. - typeset -i first="1" + # Used for skipping the ID entry. + # Initialized to the empty string, but the first matching line will set it once. + # The ID filename is required for subsequent dependency discovery. + typeset id="" typeset line="" while read -r line; do if [[ "${line}" =~ ${tmp_regex} ]]; then - if [ "${first}" -ne "1" ]; then + typeset file="${BASH_REMATCH[1]}" + + if [ -z "${id}" ]; then + echo "ID unset, something is wrong" >&2 + return 1 + elif [ "$(basename "${file}")" != "${id}" ]; then echo "${BASH_REMATCH[1]}" else first="0" fi + elif [ -z "${id}" ]; then + id="$(basename "${line%":"}")" fi done <<< "${raw_output}" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e66e439c3608cabbd5c11e0f48b7af0717871a47 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 1 01:57:48 2015 +0200 pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 94 +++++++++++++++++++++++++------------------------- src/pulsemanager.h | 14 ++++---- 3 files changed, 56 insertions(+), 54 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3df66e9..dd7c352 100644 --- a/debian/changelog +++ b/debian/changelog @@ -169,6 +169,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: rewrite ID line detection algorithm. Modules don't seem to be needing one, so skipping the first dependency line incidentally skips a "real" dependency for modules. + - pulsemanager.{cpp,h}: use name and underscore for member variables, not + underscore and name. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index af1ba2b..5c38dd6 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -25,39 +25,39 @@ #endif PulseManager::PulseManager () { - _pulse_X2Go = "/.x2go/pulse"; + pulse_X2Go_ = "/.x2go/pulse"; - _pulse_dir = QDir (QDir::homePath ()); - _pulse_dir.mkpath (_pulse_dir.absolutePath () + _pulse_X2Go + "/tmp"); - _pulse_dir.cd (_pulse_X2Go.mid (1)); + pulse_dir_ = QDir (QDir::homePath ()); + pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); + pulse_dir_.cd (pulse_X2Go_.mid (1)); - _env = QProcessEnvironment::systemEnvironment (); - _env.insert ("HOME", _pulse_dir.absolutePath ()); - _env.insert ("TEMP", _pulse_dir.absolutePath () + "/tmp"); + env_ = QProcessEnvironment::systemEnvironment (); + env_.insert ("HOME", pulse_dir_.absolutePath ()); + env_.insert ("TEMP", pulse_dir_.absolutePath () + "/tmp"); - _pulse_port = 4713; + pulse_port_ = 4713; - _state = QProcess::NotRunning; + state_ = QProcess::NotRunning; - _pulse_server = 0; + pulse_server_ = 0; - _app_dir = QApplication::applicationDirPath (); + app_dir_ = QApplication::applicationDirPath (); } PulseManager::~PulseManager () { - if (_pulse_server && is_server_running ()) + if (pulse_server_ && is_server_running ()) shutdown (); - delete (_pulse_server); + delete (pulse_server_); } void PulseManager::start () { assert (!is_server_running ()); - delete (_pulse_server); + delete (pulse_server_); - _pulse_server = new QProcess (0); - _state = QProcess::Starting; + pulse_server_ = new QProcess (0); + state_ = QProcess::Starting; #ifdef Q_OS_DARWIN start_osx (); @@ -74,27 +74,27 @@ void PulseManager::start_osx () { if (generate_server_config () && generate_client_config ()) { cleanup_client_dir (); - _pulse_server->setProcessEnvironment (_env); + pulse_server_->setProcessEnvironment (env_); QStringList args; args << "--exit-idle-time=-1" << "-n" - << "-F" << _pulse_dir.absolutePath () + "/config.pa" + << "-F" << pulse_dir_.absolutePath () + "/config.pa" << "-p" - << QDir (_app_dir + << QDir (app_dir_ + "/../Frameworks/pulse-2.0/modules").absolutePath () << "--high-priority"; #ifdef DEBUG args << "--log-level=debug"; #endif - _pulse_server->setWorkingDirectory (_app_dir + "/../exe/"); - _pulse_server->start (_app_dir + "/../exe/pulseaudio", args); + pulse_server_->setWorkingDirectory (app_dir_ + "/../exe/"); + pulse_server_->start (app_dir_ + "/../exe/pulseaudio", args); - if (_pulse_server->waitForStarted ()) { + if (pulse_server_->waitForStarted ()) { x2goDebug << "pulse started with" << args << "waiting for finish..."; - _state = QProcess::Running; + state_ = QProcess::Running; - connect (_pulse_server, SIGNAL (finished (int)), + connect (pulse_server_, SIGNAL (finished (int)), this, SLOT (on_pulse_finished (int))); #ifdef DEBUG @@ -110,12 +110,12 @@ void PulseManager::find_port () { bool free = false; do { - tcpSocket.connectToHost ("127.0.0.1", _pulse_port); + tcpSocket.connectToHost ("127.0.0.1", pulse_port_); if (tcpSocket.waitForConnected (1000)) { tcpSocket.close (); free = false; - _pulse_port++; + pulse_port_++; } else free = true; @@ -123,8 +123,8 @@ void PulseManager::find_port () { } bool PulseManager::generate_server_config () { - QString config_file_name = _pulse_dir.absolutePath () + "/config.pa"; - QTemporaryFile config_tmp_file (_pulse_dir.absolutePath () + "/tmp/tmpconfig"); + QString config_file_name = pulse_dir_.absolutePath () + "/config.pa"; + QTemporaryFile config_tmp_file (pulse_dir_.absolutePath () + "/tmp/tmpconfig"); X2goSettings settings ("settings"); bool disable_input = false; bool ret = false; @@ -136,7 +136,7 @@ bool PulseManager::generate_server_config () { QTextStream config_tmp_file_stream (&config_tmp_file); config_tmp_file_stream << "load-module module-native-protocol-tcp port=" + - QString::number (_pulse_port) << endl; + QString::number (pulse_port_) << endl; config_tmp_file_stream << "load-module module-native-protocol-unix" << endl; config_tmp_file_stream << "load-module module-coreaudio-detect"; @@ -159,9 +159,9 @@ bool PulseManager::generate_server_config () { } bool PulseManager::generate_client_config () { - QTemporaryFile client_config_tmp_file (_pulse_dir.absolutePath () + QTemporaryFile client_config_tmp_file (pulse_dir_.absolutePath () + "/tmp/tmpconfig"); - QString client_config_file_name (_pulse_dir.absolutePath () + "/.pulse/client.conf"); + QString client_config_file_name (pulse_dir_.absolutePath () + "/.pulse/client.conf"); bool ret = false; if (client_config_tmp_file.open ()) { @@ -169,7 +169,7 @@ bool PulseManager::generate_client_config () { config_tmp_file_stream << "autospawn=no" << endl; config_tmp_file_stream << "daemon-binary=" - << QDir (_app_dir + << QDir (app_dir_ + "/../exe/pulseaudio").absolutePath () << endl; @@ -189,7 +189,7 @@ void PulseManager::cleanup_client_dir () { // PA expects $HOME/.pulse/$HOST-runtime to be a symbolic link // and will fail, if it's just a plain directory on Mac OS X. // Delete it first. - QDir machine_dir (_pulse_dir.absolutePath () + "/.pulse/" + QDir machine_dir (pulse_dir_.absolutePath () + "/.pulse/" + QHostInfo::localHostName () + "-runtime"); if (QFile::exists (machine_dir.absolutePath () + "/pid")) @@ -202,10 +202,10 @@ void PulseManager::cleanup_client_dir () { void PulseManager::slot_play_startup_sound () { QProcess play_file (0); - play_file.setWorkingDirectory (_pulse_server->workingDirectory ()); - play_file.setProcessEnvironment (_env); - play_file.start (_app_dir + "/../exe/paplay " - + _app_dir + "/../Resources/startup.wav"); + play_file.setWorkingDirectory (pulse_server_->workingDirectory ()); + play_file.setProcessEnvironment (env_); + play_file.start (app_dir_ + "/../exe/paplay " + + app_dir_ + "/../Resources/startup.wav"); if (play_file.waitForStarted ()) play_file.waitForFinished (); @@ -215,20 +215,20 @@ void PulseManager::on_pulse_finished (int exit_code) { if (!exit_code) x2goDebug << "Warning! Pulseaudio's exit code is non-zero."; - QByteArray ba = _pulse_server->readAllStandardOutput (); + QByteArray ba = pulse_server_->readAllStandardOutput (); char *data = ba.data (); std::cout << data; - ba = _pulse_server->readAllStandardError (); + ba = pulse_server_->readAllStandardError (); data = ba.data (); std::cout << data; - _state = QProcess::NotRunning; + state_ = QProcess::NotRunning; emit (sig_pulse_server_terminated ()); } bool PulseManager::is_server_running () { - if (_pulse_server) - return (_pulse_server->state () == QProcess::Running); + if (pulse_server_) + return (pulse_server_->state () == QProcess::Running); else return (false); } @@ -239,21 +239,21 @@ void PulseManager::shutdown () { connect (this, SIGNAL (sig_pulse_server_terminated ()), &loop, SLOT (quit ())); - _pulse_server->terminate (); + pulse_server_->terminate (); loop.exec (); } int PulseManager::get_pulse_port () { - return (_pulse_port); + return (pulse_port_); } void PulseManager::set_pulse_port (int pulse_port) { - _pulse_port = pulse_port; + pulse_port_ = pulse_port; } void PulseManager::relaunch () { - if (_pulse_server && is_server_running ()) + if (pulse_server_ && is_server_running ()) shutdown (); x2goDebug << "restarting pulse"; @@ -261,7 +261,7 @@ void PulseManager::relaunch () { } QProcess::ProcessState PulseManager::state () { - return (_state); + return (state_); } #ifdef DEBUG_UNDEF diff --git a/src/pulsemanager.h b/src/pulsemanager.h index fc0a989..939dc56 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -75,13 +75,13 @@ signals: void sig_pulse_server_terminated (); private: - QString _pulse_X2Go; - QDir _pulse_dir; - QProcessEnvironment _env; - QProcess *_pulse_server; - int _pulse_port; - QProcess::ProcessState _state; - QString _app_dir; + QString pulse_X2Go_; + QDir pulse_dir_; + QProcessEnvironment env_; + QProcess *pulse_server_; + int pulse_port_; + QProcess::ProcessState state_; + QString app_dir_; }; #ifdef NDEBUG_DEFINE -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d84b7175e4205ddf201b8476b8c326e2c3359637 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 1 01:58:54 2015 +0200 pulsemanager.cpp: minor non-behavior changing fixes. --- debian/changelog | 1 + src/pulsemanager.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index dd7c352..b54e72b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -171,6 +171,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium a "real" dependency for modules. - pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. + - pulsemanager.cpp: minor non-behavior changing fixes. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 5c38dd6..ecf442e 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -39,7 +39,7 @@ PulseManager::PulseManager () { state_ = QProcess::NotRunning; - pulse_server_ = 0; + pulse_server_ = NULL; app_dir_ = QApplication::applicationDirPath (); } @@ -115,7 +115,7 @@ void PulseManager::find_port () { if (tcpSocket.waitForConnected (1000)) { tcpSocket.close (); free = false; - pulse_port_++; + ++pulse_port_; } else free = true; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 51bf43afe55aeb0f6c27c84084e92b87c537b50a Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 1 01:46:47 2015 +0200 pulsemanager.{cpp,h}: reformat only. --- debian/changelog | 1 + src/pulsemanager.cpp | 286 +++++++++++++++++++++++++------------------------- src/pulsemanager.h | 17 ++- 3 files changed, 152 insertions(+), 152 deletions(-) diff --git a/debian/changelog b/debian/changelog index b54e72b..bd8ba31 100644 --- a/debian/changelog +++ b/debian/changelog @@ -172,6 +172,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. - pulsemanager.cpp: minor non-behavior changing fixes. + - pulsemanager.{cpp,h}: reformat only. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ecf442e..9e70ce6 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -25,243 +25,243 @@ #endif PulseManager::PulseManager () { - pulse_X2Go_ = "/.x2go/pulse"; + pulse_X2Go_ = "/.x2go/pulse"; - pulse_dir_ = QDir (QDir::homePath ()); - pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); - pulse_dir_.cd (pulse_X2Go_.mid (1)); + pulse_dir_ = QDir (QDir::homePath ()); + pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); + pulse_dir_.cd (pulse_X2Go_.mid (1)); - env_ = QProcessEnvironment::systemEnvironment (); - env_.insert ("HOME", pulse_dir_.absolutePath ()); - env_.insert ("TEMP", pulse_dir_.absolutePath () + "/tmp"); + env_ = QProcessEnvironment::systemEnvironment (); + env_.insert ("HOME", pulse_dir_.absolutePath ()); + env_.insert ("TEMP", pulse_dir_.absolutePath () + "/tmp"); - pulse_port_ = 4713; + pulse_port_ = 4713; - state_ = QProcess::NotRunning; + state_ = QProcess::NotRunning; - pulse_server_ = NULL; + pulse_server_ = NULL; - app_dir_ = QApplication::applicationDirPath (); + app_dir_ = QApplication::applicationDirPath (); } PulseManager::~PulseManager () { - if (pulse_server_ && is_server_running ()) - shutdown (); + if (pulse_server_ && is_server_running ()) + shutdown (); - delete (pulse_server_); + delete (pulse_server_); } void PulseManager::start () { - assert (!is_server_running ()); + assert (!is_server_running ()); - delete (pulse_server_); + delete (pulse_server_); - pulse_server_ = new QProcess (0); - state_ = QProcess::Starting; + pulse_server_ = new QProcess (0); + state_ = QProcess::Starting; #ifdef Q_OS_DARWIN - start_osx (); + start_osx (); #elif defined (Q_OS_WIN) - start_win (); + start_win (); #elif defined (Q_OS_LINUX) - start_linux (); + start_linux (); #endif } void PulseManager::start_osx () { - find_port (); + find_port (); - if (generate_server_config () && generate_client_config ()) { - cleanup_client_dir (); + if (generate_server_config () && generate_client_config ()) { + cleanup_client_dir (); - pulse_server_->setProcessEnvironment (env_); + pulse_server_->setProcessEnvironment (env_); - QStringList args; - args << "--exit-idle-time=-1" << "-n" - << "-F" << pulse_dir_.absolutePath () + "/config.pa" - << "-p" - << QDir (app_dir_ - + "/../Frameworks/pulse-2.0/modules").absolutePath () - << "--high-priority"; + QStringList args; + args << "--exit-idle-time=-1" << "-n" + << "-F" << pulse_dir_.absolutePath () + "/config.pa" + << "-p" + << QDir (app_dir_ + + "/../Frameworks/pulse-2.0/modules").absolutePath () + << "--high-priority"; #ifdef DEBUG - args << "--log-level=debug"; + args << "--log-level=debug"; #endif - pulse_server_->setWorkingDirectory (app_dir_ + "/../exe/"); - pulse_server_->start (app_dir_ + "/../exe/pulseaudio", args); + pulse_server_->setWorkingDirectory (app_dir_ + "/../exe/"); + pulse_server_->start (app_dir_ + "/../exe/pulseaudio", args); - if (pulse_server_->waitForStarted ()) { - x2goDebug << "pulse started with" << args << "waiting for finish..."; - state_ = QProcess::Running; + if (pulse_server_->waitForStarted ()) { + x2goDebug << "pulse started with" << args << "waiting for finish..."; + state_ = QProcess::Running; - connect (pulse_server_, SIGNAL (finished (int)), - this, SLOT (on_pulse_finished (int))); + connect (pulse_server_, SIGNAL (finished (int)), + this, SLOT (on_pulse_finished (int))); #ifdef DEBUG - // Give PA a little time to come up. - QTimer::singleShot (5000, this, SLOT (slot_play_startup_sound ())); + // Give PA a little time to come up. + QTimer::singleShot (5000, this, SLOT (slot_play_startup_sound ())); #endif - } } + } } void PulseManager::find_port () { - QTcpSocket tcpSocket (0); - bool free = false; - - do { - tcpSocket.connectToHost ("127.0.0.1", pulse_port_); - - if (tcpSocket.waitForConnected (1000)) { - tcpSocket.close (); - free = false; - ++pulse_port_; - } - else - free = true; - } while (!free); + QTcpSocket tcpSocket (0); + bool free = false; + + do { + tcpSocket.connectToHost ("127.0.0.1", pulse_port_); + + if (tcpSocket.waitForConnected (1000)) { + tcpSocket.close (); + free = false; + ++pulse_port_; + } + else + free = true; + } while (!free); } bool PulseManager::generate_server_config () { - QString config_file_name = pulse_dir_.absolutePath () + "/config.pa"; - QTemporaryFile config_tmp_file (pulse_dir_.absolutePath () + "/tmp/tmpconfig"); - X2goSettings settings ("settings"); - bool disable_input = false; - bool ret = false; + QString config_file_name = pulse_dir_.absolutePath () + "/config.pa"; + QTemporaryFile config_tmp_file (pulse_dir_.absolutePath () + "/tmp/tmpconfig"); + X2goSettings settings ("settings"); + bool disable_input = false; + bool ret = false; - disable_input = settings.setting ()->value ("soundnoinput", - (QVariant) false).toBool (); + disable_input = settings.setting ()->value ("soundnoinput", + (QVariant) false).toBool (); - if (config_tmp_file.open ()) { - QTextStream config_tmp_file_stream (&config_tmp_file); + if (config_tmp_file.open ()) { + QTextStream config_tmp_file_stream (&config_tmp_file); - config_tmp_file_stream << "load-module module-native-protocol-tcp port=" + - QString::number (pulse_port_) << endl; - config_tmp_file_stream << "load-module module-native-protocol-unix" << endl; - config_tmp_file_stream << "load-module module-coreaudio-detect"; + config_tmp_file_stream << "load-module module-native-protocol-tcp port=" + + QString::number (pulse_port_) << endl; + config_tmp_file_stream << "load-module module-native-protocol-unix" << endl; + config_tmp_file_stream << "load-module module-coreaudio-detect"; - if (disable_input) - config_tmp_file_stream << " record=0"; + if (disable_input) + config_tmp_file_stream << " record=0"; - config_tmp_file_stream << endl; + config_tmp_file_stream << endl; - QFile config_file (config_file_name); - if (QFile::exists (config_file_name)) - QFile::remove (config_file_name); + QFile config_file (config_file_name); + if (QFile::exists (config_file_name)) + QFile::remove (config_file_name); - config_tmp_file.copy (config_file_name); - config_tmp_file.remove (); + config_tmp_file.copy (config_file_name); + config_tmp_file.remove (); - ret = true; - } + ret = true; + } - return (ret); + return (ret); } bool PulseManager::generate_client_config () { - QTemporaryFile client_config_tmp_file (pulse_dir_.absolutePath () - + "/tmp/tmpconfig"); - QString client_config_file_name (pulse_dir_.absolutePath () + "/.pulse/client.conf"); - bool ret = false; + QTemporaryFile client_config_tmp_file (pulse_dir_.absolutePath () + + "/tmp/tmpconfig"); + QString client_config_file_name (pulse_dir_.absolutePath () + "/.pulse/client.conf"); + bool ret = false; - if (client_config_tmp_file.open ()) { - QTextStream config_tmp_file_stream (&client_config_tmp_file); + if (client_config_tmp_file.open ()) { + QTextStream config_tmp_file_stream (&client_config_tmp_file); - config_tmp_file_stream << "autospawn=no" << endl; - config_tmp_file_stream << "daemon-binary=" - << QDir (app_dir_ - + "/../exe/pulseaudio").absolutePath () - << endl; + config_tmp_file_stream << "autospawn=no" << endl; + config_tmp_file_stream << "daemon-binary=" + << QDir (app_dir_ + + "/../exe/pulseaudio").absolutePath () + << endl; - if (QFile::exists (client_config_file_name)) - QFile::remove (client_config_file_name); + if (QFile::exists (client_config_file_name)) + QFile::remove (client_config_file_name); - client_config_tmp_file.copy (client_config_file_name); - client_config_tmp_file.remove (); + client_config_tmp_file.copy (client_config_file_name); + client_config_tmp_file.remove (); - ret = true; - } + ret = true; + } - return (ret); + return (ret); } void PulseManager::cleanup_client_dir () { - // PA expects $HOME/.pulse/$HOST-runtime to be a symbolic link - // and will fail, if it's just a plain directory on Mac OS X. - // Delete it first. - QDir machine_dir (pulse_dir_.absolutePath () + "/.pulse/" - + QHostInfo::localHostName () + "-runtime"); + // PA expects $HOME/.pulse/$HOST-runtime to be a symbolic link + // and will fail, if it's just a plain directory on Mac OS X. + // Delete it first. + QDir machine_dir (pulse_dir_.absolutePath () + "/.pulse/" + + QHostInfo::localHostName () + "-runtime"); - if (QFile::exists (machine_dir.absolutePath () + "/pid")) - QFile::remove (machine_dir.absolutePath () + "/pid"); + if (QFile::exists (machine_dir.absolutePath () + "/pid")) + QFile::remove (machine_dir.absolutePath () + "/pid"); - if (machine_dir.exists ()) - machine_dir.remove (machine_dir.absolutePath ()); + if (machine_dir.exists ()) + machine_dir.remove (machine_dir.absolutePath ()); } void PulseManager::slot_play_startup_sound () { - QProcess play_file (0); + QProcess play_file (0); - play_file.setWorkingDirectory (pulse_server_->workingDirectory ()); - play_file.setProcessEnvironment (env_); - play_file.start (app_dir_ + "/../exe/paplay " - + app_dir_ + "/../Resources/startup.wav"); + play_file.setWorkingDirectory (pulse_server_->workingDirectory ()); + play_file.setProcessEnvironment (env_); + play_file.start (app_dir_ + "/../exe/paplay " + + app_dir_ + "/../Resources/startup.wav"); - if (play_file.waitForStarted ()) - play_file.waitForFinished (); + if (play_file.waitForStarted ()) + play_file.waitForFinished (); } void PulseManager::on_pulse_finished (int exit_code) { - if (!exit_code) - x2goDebug << "Warning! Pulseaudio's exit code is non-zero."; - - QByteArray ba = pulse_server_->readAllStandardOutput (); - char *data = ba.data (); - std::cout << data; - ba = pulse_server_->readAllStandardError (); - data = ba.data (); - std::cout << data; - - state_ = QProcess::NotRunning; - emit (sig_pulse_server_terminated ()); + if (!exit_code) + x2goDebug << "Warning! Pulseaudio's exit code is non-zero."; + + QByteArray ba = pulse_server_->readAllStandardOutput (); + char *data = ba.data (); + std::cout << data; + ba = pulse_server_->readAllStandardError (); + data = ba.data (); + std::cout << data; + + state_ = QProcess::NotRunning; + emit (sig_pulse_server_terminated ()); } bool PulseManager::is_server_running () { - if (pulse_server_) - return (pulse_server_->state () == QProcess::Running); - else - return (false); + if (pulse_server_) + return (pulse_server_->state () == QProcess::Running); + else + return (false); } void PulseManager::shutdown () { - QEventLoop loop; + QEventLoop loop; - connect (this, SIGNAL (sig_pulse_server_terminated ()), - &loop, SLOT (quit ())); + connect (this, SIGNAL (sig_pulse_server_terminated ()), + &loop, SLOT (quit ())); - pulse_server_->terminate (); + pulse_server_->terminate (); - loop.exec (); + loop.exec (); } int PulseManager::get_pulse_port () { - return (pulse_port_); + return (pulse_port_); } void PulseManager::set_pulse_port (int pulse_port) { - pulse_port_ = pulse_port; + pulse_port_ = pulse_port; } void PulseManager::relaunch () { - if (pulse_server_ && is_server_running ()) - shutdown (); + if (pulse_server_ && is_server_running ()) + shutdown (); - x2goDebug << "restarting pulse"; - start (); + x2goDebug << "restarting pulse"; + start (); } QProcess::ProcessState PulseManager::state () { - return (state_); + return (state_); } #ifdef DEBUG_UNDEF diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 939dc56..e391af8 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -38,22 +38,21 @@ #include "x2gologdebug.h" #include "x2gosettings.h" -class PulseManager: public QObject -{ - Q_OBJECT; +class PulseManager: public QObject { + Q_OBJECT; -public: + public: PulseManager (); ~PulseManager (); int get_pulse_port (); void set_pulse_port (int pulse_port); QProcess::ProcessState state (); -public slots: + public slots: void start (); void relaunch (); -private: + private: PulseManager (const PulseManager &other); void start_osx (); // FIXME @@ -67,14 +66,14 @@ private: void shutdown (); bool is_server_running (); -private slots: + private slots: void on_pulse_finished (int exit_code); void slot_play_startup_sound (); -signals: + signals: void sig_pulse_server_terminated (); -private: + private: QString pulse_X2Go_; QDir pulse_dir_; QProcessEnvironment env_; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c7ece0b1b7ecdab72cda744ab8f90cc84d44f67f Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 1 01:49:47 2015 +0200 pulsemanager.cpp: use initializer list for constructor. --- debian/changelog | 1 + src/pulsemanager.cpp | 14 +++----------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/debian/changelog b/debian/changelog index bd8ba31..df5c0b6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -173,6 +173,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium underscore and name. - pulsemanager.cpp: minor non-behavior changing fixes. - pulsemanager.{cpp,h}: reformat only. + - pulsemanager.cpp: use initializer list for constructor. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 9e70ce6..002c9f8 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -24,9 +24,9 @@ #define DEBUG #endif -PulseManager::PulseManager () { - pulse_X2Go_ = "/.x2go/pulse"; - +PulseManager::PulseManager () : pulse_X2Go_("/.x2go/pulse"), pulse_port_(4713), + state_(QProcess::NotRunning), pulse_server_(NULL), + app_dir_(QApplication::applicationDirPath ()) { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); pulse_dir_.cd (pulse_X2Go_.mid (1)); @@ -34,14 +34,6 @@ PulseManager::PulseManager () { env_ = QProcessEnvironment::systemEnvironment (); env_.insert ("HOME", pulse_dir_.absolutePath ()); env_.insert ("TEMP", pulse_dir_.absolutePath () + "/tmp"); - - pulse_port_ = 4713; - - state_ = QProcess::NotRunning; - - pulse_server_ = NULL; - - app_dir_ = QApplication::applicationDirPath (); } PulseManager::~PulseManager () { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 60f6177602d531ad7785d15995862a15641dceeb Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 29 04:21:17 2015 +0100 pulsemanager.h: add std:: namespace selector for uint32_t version variables. --- debian/changelog | 2 ++ src/pulsemanager.h | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index c3ffc55..f60c61c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -177,6 +177,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. - pulsemanager.cpp: reformat only. - pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. + - pulsemanager.h: add std:: namespace selector for uint32_t version + variables. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 9252739..dbafa3f 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -82,8 +82,8 @@ class PulseManager: public QObject { std::uint16_t pulse_port_; QProcess::ProcessState state_; QString app_dir_; - uint32_t pulse_version_major_; - uint32_t pulse_version_minor_; + std::uint32_t pulse_version_major_; + std::uint32_t pulse_version_minor_; }; #ifdef NDEBUG_DEFINE -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 35e239bce12cd6170f411a4e9cc46f6fbd5f9c7e Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 1 01:28:05 2015 +0200 pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. --- debian/changelog | 1 + src/pulsemanager.cpp | 3 ++- src/pulsemanager.h | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index df5c0b6..83e9fc5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -174,6 +174,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: minor non-behavior changing fixes. - pulsemanager.{cpp,h}: reformat only. - pulsemanager.cpp: use initializer list for constructor. + - pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 002c9f8..c1d8d8f 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -26,7 +26,8 @@ PulseManager::PulseManager () : pulse_X2Go_("/.x2go/pulse"), pulse_port_(4713), state_(QProcess::NotRunning), pulse_server_(NULL), - app_dir_(QApplication::applicationDirPath ()) { + app_dir_(QApplication::applicationDirPath ()), + pulse_version_major_(0), pulse_version_minor_(0) { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); pulse_dir_.cd (pulse_X2Go_.mid (1)); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index e391af8..5b1fe37 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -81,6 +81,8 @@ class PulseManager: public QObject { int pulse_port_; QProcess::ProcessState state_; QString app_dir_; + uint32_t pulse_version_major_; + uint32_t pulse_version_minor_; }; #ifdef NDEBUG_DEFINE -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 84182dd00c149553df06494db85bc33268bcd7ef Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 29 04:17:47 2015 +0100 pulsemanager.cpp: reformat only. --- debian/changelog | 1 + src/pulsemanager.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 83e9fc5..d120067 100644 --- a/debian/changelog +++ b/debian/changelog @@ -175,6 +175,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: reformat only. - pulsemanager.cpp: use initializer list for constructor. - pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. + - pulsemanager.cpp: reformat only. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index c1d8d8f..cd390bf 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -24,10 +24,10 @@ #define DEBUG #endif -PulseManager::PulseManager () : pulse_X2Go_("/.x2go/pulse"), pulse_port_(4713), - state_(QProcess::NotRunning), pulse_server_(NULL), - app_dir_(QApplication::applicationDirPath ()), - pulse_version_major_(0), pulse_version_minor_(0) { +PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), pulse_port_ (4713), + state_ (QProcess::NotRunning), pulse_server_ (NULL), + app_dir_ (QApplication::applicationDirPath ()), + pulse_version_major_ (0), pulse_version_minor_ (0) { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); pulse_dir_.cd (pulse_X2Go_.mid (1)); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7b5de3d505a7e7faa2fae602fa82833e651196d7 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 29 04:20:15 2015 +0100 pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. --- debian/changelog | 1 + src/pulsemanager.cpp | 4 ++-- src/pulsemanager.h | 7 ++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index d120067..c3ffc55 100644 --- a/debian/changelog +++ b/debian/changelog @@ -176,6 +176,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: use initializer list for constructor. - pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. - pulsemanager.cpp: reformat only. + - pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index cd390bf..33d77d6 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -237,11 +237,11 @@ void PulseManager::shutdown () { loop.exec (); } -int PulseManager::get_pulse_port () { +std::uint16_t PulseManager::get_pulse_port () { return (pulse_port_); } -void PulseManager::set_pulse_port (int pulse_port) { +void PulseManager::set_pulse_port (std::uint16_t pulse_port) { pulse_port_ = pulse_port; } diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 5b1fe37..9252739 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -35,6 +35,7 @@ #include <QApplication> #include <QTimer> #include <assert.h> +#include <cstdint> #include "x2gologdebug.h" #include "x2gosettings.h" @@ -44,8 +45,8 @@ class PulseManager: public QObject { public: PulseManager (); ~PulseManager (); - int get_pulse_port (); - void set_pulse_port (int pulse_port); + std::uint16_t get_pulse_port (); + void set_pulse_port (std::uint16_t pulse_port); QProcess::ProcessState state (); public slots: @@ -78,7 +79,7 @@ class PulseManager: public QObject { QDir pulse_dir_; QProcessEnvironment env_; QProcess *pulse_server_; - int pulse_port_; + std::uint16_t pulse_port_; QProcess::ProcessState state_; QString app_dir_; uint32_t pulse_version_major_; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit ab7b8dfc1fa40e459b560d5bfa46b1017dbcbcf6 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Oct 29 04:56:33 2015 +0100 pulsemanager.{cpp,h}: add ESD support. --- debian/changelog | 1 + src/pulsemanager.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++------- src/pulsemanager.h | 5 ++++- 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index f60c61c..a559ab4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -179,6 +179,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. - pulsemanager.h: add std:: namespace selector for uint32_t version variables. + - pulsemanager.{cpp,h}: add ESD support. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 33d77d6..c92d64f 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -25,8 +25,8 @@ #endif PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), pulse_port_ (4713), - state_ (QProcess::NotRunning), pulse_server_ (NULL), - app_dir_ (QApplication::applicationDirPath ()), + esd_port_ (4714), state_ (QProcess::NotRunning), + pulse_server_ (NULL), app_dir_ (QApplication::applicationDirPath ()), pulse_version_major_ (0), pulse_version_minor_ (0) { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); @@ -62,7 +62,15 @@ void PulseManager::start () { } void PulseManager::start_osx () { - find_port (); + // Search for a free Pulse and EsounD port. + // Note that there is no way we could find + // an esd port, if the pulse port detection + // failed. Better trust your compiler to + // optimize this statement and save some + // cycles. + if ((findPort (false)) && (findPort (true))) { + find_port (); + } if (generate_server_config () && generate_client_config ()) { cleanup_client_dir (); @@ -98,21 +106,45 @@ void PulseManager::start_osx () { } } -void PulseManager::find_port () { +void PulseManager::find_port (bool search_esd) { QTcpSocket tcpSocket (0); bool free = false; + std::uint16_t ret = pulse_port_; + std::uint16_t other_port = esd_port_; + + // If the search_esd parameter is true, find a free port + // for the PulseAudio emulation. + if (search_esd) { + ret = esd_port_; + other_port = pulse_port_; + } do { - tcpSocket.connectToHost ("127.0.0.1", pulse_port_); + // Skip this port, if it's reserved for the counterpart. + if (ret == other_port) { + ++ret; + continue; + } + + tcpSocket.connectToHost ("127.0.0.1", ret); if (tcpSocket.waitForConnected (1000)) { tcpSocket.close (); free = false; - ++pulse_port_; + ++ret; } else free = true; - } while (!free); + } while ((!free) && (port > 1023)); + + if (!search_esd) { + pulse_port_ = ret; + } + else { + esd_port_ = ret; + } + + return (free); } bool PulseManager::generate_server_config () { @@ -131,6 +163,7 @@ bool PulseManager::generate_server_config () { config_tmp_file_stream << "load-module module-native-protocol-tcp port=" + QString::number (pulse_port_) << endl; config_tmp_file_stream << "load-module module-native-protocol-unix" << endl; + config_tmp_file_stream << "load-module module-esound-protocol-unix" << endl; config_tmp_file_stream << "load-module module-coreaudio-detect"; if (disable_input) @@ -241,10 +274,18 @@ std::uint16_t PulseManager::get_pulse_port () { return (pulse_port_); } +std::uint16_t PulseManager::get_esd_port () { + return (esd_port_); +} + void PulseManager::set_pulse_port (std::uint16_t pulse_port) { pulse_port_ = pulse_port; } +void PulseManager::set_esd_port (std::uint16_t esd_port) { + esd_port_ = esd_port; +} + void PulseManager::relaunch () { if (pulse_server_ && is_server_running ()) shutdown (); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index dbafa3f..22ab771 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -46,7 +46,9 @@ class PulseManager: public QObject { PulseManager (); ~PulseManager (); std::uint16_t get_pulse_port (); + std::uint16_t get_esd_port (); void set_pulse_port (std::uint16_t pulse_port); + void set_esd_port (std::uint16_t esd_port); QProcess::ProcessState state (); public slots: @@ -60,7 +62,7 @@ class PulseManager: public QObject { void start_win (); // FIXME void start_linux (); - void find_port (); + void find_port (bool search_esd = false); bool generate_server_config (); bool generate_client_config (); void cleanup_client_dir (); @@ -80,6 +82,7 @@ class PulseManager: public QObject { QProcessEnvironment env_; QProcess *pulse_server_; std::uint16_t pulse_port_; + std::uint16_t esd_port_; QProcess::ProcessState state_; QString app_dir_; std::uint32_t pulse_version_major_; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 03ae3ef34053c7a4128b2ff2889a893b682019e3 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 02:32:34 2015 +0100 pulsemanager.{cpp,h}: rename relaunch () to restart (). --- debian/changelog | 1 + src/pulsemanager.cpp | 2 +- src/pulsemanager.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a559ab4..dd570a0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -180,6 +180,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.h: add std:: namespace selector for uint32_t version variables. - pulsemanager.{cpp,h}: add ESD support. + - pulsemanager.{cpp,h}: rename relaunch () to restart (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index c92d64f..6999c18 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -286,7 +286,7 @@ void PulseManager::set_esd_port (std::uint16_t esd_port) { esd_port_ = esd_port; } -void PulseManager::relaunch () { +void PulseManager::restart () { if (pulse_server_ && is_server_running ()) shutdown (); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 22ab771..aae71e3 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -53,7 +53,7 @@ class PulseManager: public QObject { public slots: void start (); - void relaunch (); + void restart (); private: PulseManager (const PulseManager &other); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 85ba63c10d4e10701cb98f3b595502c46bb620a6 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 02:35:35 2015 +0100 pulsemanager.cpp: reformat only. --- debian/changelog | 1 + src/pulsemanager.cpp | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index dd570a0..b9ba089 100644 --- a/debian/changelog +++ b/debian/changelog @@ -181,6 +181,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium variables. - pulsemanager.{cpp,h}: add ESD support. - pulsemanager.{cpp,h}: rename relaunch () to restart (). + - pulsemanager.cpp: reformat only. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 6999c18..d9d5710 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -24,10 +24,14 @@ #define DEBUG #endif -PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), pulse_port_ (4713), - esd_port_ (4714), state_ (QProcess::NotRunning), - pulse_server_ (NULL), app_dir_ (QApplication::applicationDirPath ()), - pulse_version_major_ (0), pulse_version_minor_ (0) { +PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), + pulse_port_ (4713), + esd_port_ (4714), + state_ (QProcess::NotRunning), + pulse_server_ (NULL), + app_dir_ (QApplication::applicationDirPath ()), + pulse_version_major_ (0), + pulse_version_minor_ (0) { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); pulse_dir_.cd (pulse_X2Go_.mid (1)); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 616d25c5711e99c8ad830960555510c448e8a617 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 02:40:58 2015 +0100 pulsemanager.{cpp,h}: fixup preprocessor usage. --- debian/changelog | 1 + src/pulsemanager.cpp | 8 ++++---- src/pulsemanager.h | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index b9ba089..f661e6d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -182,6 +182,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: add ESD support. - pulsemanager.{cpp,h}: rename relaunch () to restart (). - pulsemanager.cpp: reformat only. + - pulsemanager.{cpp,h}: fixup preprocessor usage. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index d9d5710..9c31cca 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -22,7 +22,7 @@ #ifndef DEBUG #define DEBUG_UNDEF #define DEBUG -#endif +#endif // defined (NDEBUG) PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), pulse_port_ (4713), @@ -62,7 +62,7 @@ void PulseManager::start () { start_win (); #elif defined (Q_OS_LINUX) start_linux (); -#endif +#endif // defined (Q_OS_DARWIN) } void PulseManager::start_osx () { @@ -105,7 +105,7 @@ void PulseManager::start_osx () { #ifdef DEBUG // Give PA a little time to come up. QTimer::singleShot (5000, this, SLOT (slot_play_startup_sound ())); -#endif +#endif // defined (DEBUG) } } } @@ -305,4 +305,4 @@ QProcess::ProcessState PulseManager::state () { #ifdef DEBUG_UNDEF #undef DEBUG #undef DEBUG_UNDEF -#endif +#endif // defined (DEBUG_UNDEF) diff --git a/src/pulsemanager.h b/src/pulsemanager.h index aae71e3..020556a 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -23,7 +23,7 @@ #ifdef NDEBUG #define NDEBUG_DEFINE #undef NDEBUG -#endif +#endif // defined (NDEBUG) #include <iostream> #include <QDir> @@ -92,6 +92,6 @@ class PulseManager: public QObject { #ifdef NDEBUG_DEFINE #define NDEBUG #undef NDEBUG_DEFINE -#endif +#endif // defined (NDEBUG_DEFINE) #endif // PULSEMANAGER_H -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a83c5fac0f1163b3f91d1cad1dbb61d158cc7688 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 02:56:30 2015 +0100 pulsemanager.{cpp,h}: add server_args_, server_binary_ and server_working_dir_ class variables. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 3 +++ src/pulsemanager.h | 3 +++ 3 files changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index f661e6d..d6c1e4a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -183,6 +183,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: rename relaunch () to restart (). - pulsemanager.cpp: reformat only. - pulsemanager.{cpp,h}: fixup preprocessor usage. + - pulsemanager.{cpp,h}: add server_args_, server_binary_ and + server_working_dir_ class variables. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 9c31cca..a46ab11 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -30,6 +30,9 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), state_ (QProcess::NotRunning), pulse_server_ (NULL), app_dir_ (QApplication::applicationDirPath ()), + server_args_ (QStringList ()), + server_binary_ (QString ("")), + server_working_dir (QString ("")), pulse_version_major_ (0), pulse_version_minor_ (0) { pulse_dir_ = QDir (QDir::homePath ()); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 020556a..99b3d4a 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -85,6 +85,9 @@ class PulseManager: public QObject { std::uint16_t esd_port_; QProcess::ProcessState state_; QString app_dir_; + QStringList server_args_; + QString server_binary_; + QString server_working_dir_; std::uint32_t pulse_version_major_; std::uint32_t pulse_version_minor_; }; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5baed0bce71181dca23799bf314025c1a6c6f8be Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:03:44 2015 +0100 pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 20 +++++++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/debian/changelog b/debian/changelog index d6c1e4a..2641bae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -185,6 +185,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: fixup preprocessor usage. - pulsemanager.{cpp,h}: add server_args_, server_binary_ and server_working_dir_ class variables. + - pulsemanager.cpp: make start () wrap the "real" OS-specific start + functions. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index a46ab11..f094019 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -59,16 +59,6 @@ void PulseManager::start () { pulse_server_ = new QProcess (0); state_ = QProcess::Starting; -#ifdef Q_OS_DARWIN - start_osx (); -#elif defined (Q_OS_WIN) - start_win (); -#elif defined (Q_OS_LINUX) - start_linux (); -#endif // defined (Q_OS_DARWIN) -} - -void PulseManager::start_osx () { // Search for a free Pulse and EsounD port. // Note that there is no way we could find // an esd port, if the pulse port detection @@ -76,9 +66,17 @@ void PulseManager::start_osx () { // optimize this statement and save some // cycles. if ((findPort (false)) && (findPort (true))) { - find_port (); +#ifdef Q_OS_DARWIN + start_osx (); +#elif defined (Q_OS_WIN) + start_win (); +#elif defined (Q_OS_LINUX) + start_linux (); +#endif // defined (Q_OS_DARWIN) } +} +void PulseManager::start_osx () { if (generate_server_config () && generate_client_config ()) { cleanup_client_dir (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 6e3ef4fd173cf21984e7f1be6bebade1a198ef90 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:05:53 2015 +0100 pulsemanager.{cpp,h}: new function create_client_dir (). --- debian/changelog | 1 + src/pulsemanager.cpp | 11 +++++++++++ src/pulsemanager.h | 1 + 3 files changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2641bae..f80ff81 100644 --- a/debian/changelog +++ b/debian/changelog @@ -187,6 +187,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium server_working_dir_ class variables. - pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. + - pulsemanager.{cpp,h}: new function create_client_dir (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index f094019..f686dce 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -230,6 +230,17 @@ void PulseManager::cleanup_client_dir () { machine_dir.remove (machine_dir.absolutePath ()); } +void PulseManager::create_client_dir () { + QDir machine_dir (pulse_dir_.absolutePath () + "/.pulse/" + + QHostInfo::localHostName () + "-runtime"); + + if (!machine_dir.exists ()) + machine_dir.mkpath (machine_dir.absolutePath ()); + + if (QFile::exists (machine_dir.absolutePath () + "/pid")) + QFile::remove (machine_dir.absolutePath () + "/pid"); +} + void PulseManager::slot_play_startup_sound () { QProcess play_file (0); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 99b3d4a..e5f4b87 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -66,6 +66,7 @@ class PulseManager: public QObject { bool generate_server_config (); bool generate_client_config (); void cleanup_client_dir (); + void create_client_dir (); void shutdown (); bool is_server_running (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f9595cad96b89ca1d6588cb5a5e61a9bd5581dd5 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:14:47 2015 +0100 pulsemanager.cpp: add Windows support to shutdown (). --- debian/changelog | 1 + src/pulsemanager.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index f80ff81..348f7da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -188,6 +188,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. - pulsemanager.{cpp,h}: new function create_client_dir (). + - pulsemanager.cpp: add Windows support to shutdown (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index f686dce..44b52f3 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -281,7 +281,14 @@ void PulseManager::shutdown () { connect (this, SIGNAL (sig_pulse_server_terminated ()), &loop, SLOT (quit ())); + // Console applications without an event loop can only be terminated + // by QProcess::kill() on Windows (unless they handle WM_CLOSE, which + // PA obviously doesn't.) +#ifdef Q_OS_WIN + pulse_server_->kill (); +#else // defined (Q_OS_WIN) pulse_server_->terminate (); +#endif // defined (Q_OS_WIN) loop.exec (); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0d489c96b5bc858f31e60717d9dfd1eab9adce80 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:16:52 2015 +0100 pulsemanager.cpp: add cleanup support to on_pulse_finished (). --- debian/changelog | 1 + src/pulsemanager.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 348f7da..4a4f70a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -189,6 +189,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium functions. - pulsemanager.{cpp,h}: new function create_client_dir (). - pulsemanager.cpp: add Windows support to shutdown (). + - pulsemanager.cpp: add cleanup support to on_pulse_finished (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 44b52f3..de73156 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -264,6 +264,18 @@ void PulseManager::on_pulse_finished (int exit_code) { data = ba.data (); std::cout << data; + // Clean up + QDir work_dir (app_dir_); + +#ifdef Q_OS_WIN + work_dir.remove (pulse_dir_.absolutePath () + + "/pulse-pulseuser/pid"); + work_dir.rmdir (pulse_dir_.absolutePath () + + "/pulse-pulseuser"); +#endif // defined (Q_OS_WIN) + + work_dir.rmdir (pulse_dir_.absolutePath ()); + state_ = QProcess::NotRunning; emit (sig_pulse_server_terminated ()); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 300c0d80f9a5cb3243e975b72a1b11bc7882266f Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:20:22 2015 +0100 pulsemanager.cpp: add Windows stuff to initial env in constructor. --- debian/changelog | 1 + src/pulsemanager.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4a4f70a..cf7b153 100644 --- a/debian/changelog +++ b/debian/changelog @@ -190,6 +190,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: new function create_client_dir (). - pulsemanager.cpp: add Windows support to shutdown (). - pulsemanager.cpp: add cleanup support to on_pulse_finished (). + - pulsemanager.cpp: add Windows stuff to initial env in constructor. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index de73156..8bb901e 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -42,6 +42,10 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), env_ = QProcessEnvironment::systemEnvironment (); env_.insert ("HOME", pulse_dir_.absolutePath ()); env_.insert ("TEMP", pulse_dir_.absolutePath () + "/tmp"); +#ifdef Q_OS_WIN + env_.insert ("USERPROFILE", pulse_dir_.absolutePath ()); + env_.insert ("USERNAME", "pulseuser"); +#endif // defined (Q_OS_WIN) } PulseManager::~PulseManager () { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 95605efc8afaccd116f45feabbc1be89f81b108b Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:31:00 2015 +0100 pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 19 +++++++++++++++++++ src/pulsemanager.h | 1 + 3 files changed, 22 insertions(+) diff --git a/debian/changelog b/debian/changelog index cf7b153..b6bf5a1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -191,6 +191,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: add Windows support to shutdown (). - pulsemanager.cpp: add cleanup support to on_pulse_finished (). - pulsemanager.cpp: add Windows stuff to initial env in constructor. + - pulsemanager.{cpp,h}: add new function start_generic () to split off + common functionality. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 8bb901e..6a3e9d8 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -80,6 +80,25 @@ void PulseManager::start () { } } +void PulseManager::start_generic () { + pulse_server_->setProcessEnvironment (env_); + pulse_server_->setWorkingDirectory (server_working_dir_); + + pulse_server_->start (server_binary_, server_args_); + if (pulse_server_->waitForStarted ()) { + x2goDebug << "pulse started with arguments" << server_args_ << "; waiting for finish..."; + state_ = QProcess::Running; + + connect (pulse_server_, SIGNAL (finished (int)), + this, SLOT (slot_on_pulse_finished (int))); + +#ifdef DEBUG + // Give PA a little time to come up. + QTimer::singleShot (3000, this, SLOT (slot_play_startup_sound ())); +#endif // defined (DEBUG) + } +} + void PulseManager::start_osx () { if (generate_server_config () && generate_client_config ()) { cleanup_client_dir (); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index e5f4b87..be94414 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -62,6 +62,7 @@ class PulseManager: public QObject { void start_win (); // FIXME void start_linux (); + void start_generic (); void find_port (bool search_esd = false); bool generate_server_config (); bool generate_client_config (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c6ba017be9eb56c50de262b10aff9e73a3a87faf Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:37:09 2015 +0100 pulsemanager.cpp: let start_osx () use start_generic (). --- debian/changelog | 1 + src/pulsemanager.cpp | 41 ++++++++++++++--------------------------- 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/debian/changelog b/debian/changelog index b6bf5a1..f0dc187 100644 --- a/debian/changelog +++ b/debian/changelog @@ -193,6 +193,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: add Windows stuff to initial env in constructor. - pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. + - pulsemanager.cpp: let start_osx () use start_generic (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 6a3e9d8..1041797 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -100,37 +100,24 @@ void PulseManager::start_generic () { } void PulseManager::start_osx () { - if (generate_server_config () && generate_client_config ()) { - cleanup_client_dir (); - - pulse_server_->setProcessEnvironment (env_); - - QStringList args; - args << "--exit-idle-time=-1" << "-n" - << "-F" << pulse_dir_.absolutePath () + "/config.pa" - << "-p" - << QDir (app_dir_ - + "/../Frameworks/pulse-2.0/modules").absolutePath () - << "--high-priority"; + server_args_ = QStringList (); + server_args_ << "--exit-idle-time=-1" << "-n" + << "-F" << pulse_dir_.absolutePath () + "/config.pa" + << "-p" + << QDir (app_dir_ + + "/../Frameworks/pulse-2.0/modules").absolutePath () + << "--high-priority"; #ifdef DEBUG - args << "--log-level=debug"; -#endif - - pulse_server_->setWorkingDirectory (app_dir_ + "/../exe/"); - pulse_server_->start (app_dir_ + "/../exe/pulseaudio", args); + server_args_ << "--log-level=debug"; +#endif // defined (DEBUG) - if (pulse_server_->waitForStarted ()) { - x2goDebug << "pulse started with" << args << "waiting for finish..."; - state_ = QProcess::Running; + server_working_dir_ = QString (app_dir_ + "/../exe/"); + server_binary_ = QString (server_working_dir_ + "/pulseaudio"); - connect (pulse_server_, SIGNAL (finished (int)), - this, SLOT (on_pulse_finished (int))); + if (generate_server_config () && generate_client_config ()) { + cleanup_client_dir (); -#ifdef DEBUG - // Give PA a little time to come up. - QTimer::singleShot (5000, this, SLOT (slot_play_startup_sound ())); -#endif // defined (DEBUG) - } + start_generic (); } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 392c62618faf9883a51dc67c5acb2dab6b85ac0c Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:39:43 2015 +0100 pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 21 +++++++++++++++++++++ src/pulsemanager.h | 1 - 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f0dc187..b433da4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -194,6 +194,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. - pulsemanager.cpp: let start_osx () use start_generic (). + - pulsemanager.{cpp,h}: implement start_win () as part of Windows + functionality. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 1041797..a4419db 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -121,6 +121,27 @@ void PulseManager::start_osx () { } } +void PulseManager::start_win () { + server_args_ = QStringList (); + server_args_ << "--exit-idle-time=-1" << "-n" + << "-F" << QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () + + "/config.pa").absolutePath ()) + << "-p" << QDir::toNativeSeparators (QDir (app_dir_ + "/pulse/lib/pulse-1.1/" + + "modules/").absolutePath ()); +#ifdef DEBUG + server_args_ << "--log-level=debug"; +#endif // defined (DEBUG) + + server_working_dir_ = QString (app_dir_ + "/pulse/"); + server_binary_ = QString (app_dir_ + "/pulse/pulseaudio.exe"); + + if (generateServerConfig () && generateClientConfig ()) { + create_client_dir (); + + start_generic (); + } +} + void PulseManager::find_port (bool search_esd) { QTcpSocket tcpSocket (0); bool free = false; diff --git a/src/pulsemanager.h b/src/pulsemanager.h index be94414..8463fb5 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -58,7 +58,6 @@ class PulseManager: public QObject { private: PulseManager (const PulseManager &other); void start_osx (); - // FIXME void start_win (); // FIXME void start_linux (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0501d80c6b9578b8cdddac0d00095aad324178ae Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:42:36 2015 +0100 pulsemanager.cpp: also load module-esound-protocol-tcp module. --- debian/changelog | 1 + src/pulsemanager.cpp | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index b433da4..accf4ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -196,6 +196,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: let start_osx () use start_generic (). - pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. + - pulsemanager.cpp: also load module-esound-protocol-tcp module. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index a4419db..d705486 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -200,6 +200,11 @@ bool PulseManager::generate_server_config () { + QString::number (pulse_port_) << endl; config_tmp_file_stream << "load-module module-native-protocol-unix" << endl; config_tmp_file_stream << "load-module module-esound-protocol-unix" << endl; + + config_tmp_file_stream << "load-module module-esound-protocol-tcp port=" + << QString::number (esd_port_) + << endl; + config_tmp_file_stream << "load-module module-coreaudio-detect"; if (disable_input) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 562a5265d4188863979f305d8cc0af62bd2b0163 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:44:07 2015 +0100 pulsemanager.cpp: make generate_server_config () Windows-compatible. --- debian/changelog | 1 + src/pulsemanager.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index accf4ca..d63294f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -197,6 +197,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. - pulsemanager.cpp: also load module-esound-protocol-tcp module. + - pulsemanager.cpp: make generate_server_config () Windows-compatible. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index d705486..3704000 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -198,14 +198,22 @@ bool PulseManager::generate_server_config () { config_tmp_file_stream << "load-module module-native-protocol-tcp port=" + QString::number (pulse_port_) << endl; + +#ifdef Q_OS_UNIX config_tmp_file_stream << "load-module module-native-protocol-unix" << endl; config_tmp_file_stream << "load-module module-esound-protocol-unix" << endl; +#endif // defined(Q_OS_UNIX) config_tmp_file_stream << "load-module module-esound-protocol-tcp port=" << QString::number (esd_port_) << endl; +#ifdef Q_OS_DARWIN config_tmp_file_stream << "load-module module-coreaudio-detect"; +#elif defined (Q_OS_WIN) + config_tmp_file_stream << "load-module module-waveout"; +// FIXME Linux +#endif // defined (Q_OS_DARWIN) if (disable_input) config_tmp_file_stream << " record=0"; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 00fc298accf1892b59f03f7c90ce2d52da498351 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:45:49 2015 +0100 pulsemanager.cpp: only play startup sound if DEBUG macro is defined. --- debian/changelog | 1 + src/pulsemanager.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index cf025ad..de99bda 100644 --- a/debian/changelog +++ b/debian/changelog @@ -199,6 +199,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: also load module-esound-protocol-tcp module. - pulsemanager.cpp: make generate_server_config () Windows-compatible. - pulsemanager.cpp: make generate_client_config () Windows-compatible. + - pulsemanager.cpp: only play startup sound if DEBUG macro is defined. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 5e66e44..421e54b 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -292,6 +292,7 @@ void PulseManager::create_client_dir () { } void PulseManager::slot_play_startup_sound () { +#ifdef DEBUG QProcess play_file (0); play_file.setWorkingDirectory (pulse_server_->workingDirectory ()); @@ -301,6 +302,7 @@ void PulseManager::slot_play_startup_sound () { if (play_file.waitForStarted ()) play_file.waitForFinished (); +#endif // defined (DEBUG) } void PulseManager::on_pulse_finished (int exit_code) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d055caddfeec1f699b6fca9767190d7b140395fb Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:44:53 2015 +0100 pulsemanager.cpp: make generate_client_config () Windows-compatible. --- debian/changelog | 1 + src/pulsemanager.cpp | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index d63294f..cf025ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -198,6 +198,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium functionality. - pulsemanager.cpp: also load module-esound-protocol-tcp module. - pulsemanager.cpp: make generate_server_config () Windows-compatible. + - pulsemanager.cpp: make generate_client_config () Windows-compatible. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 3704000..5e66e44 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -236,21 +236,27 @@ bool PulseManager::generate_server_config () { bool PulseManager::generate_client_config () { QTemporaryFile client_config_tmp_file (pulse_dir_.absolutePath () + "/tmp/tmpconfig"); - QString client_config_file_name (pulse_dir_.absolutePath () + "/.pulse/client.conf"); + QString client_config_file_name (pulse_dir_.absolutePath () + + "/.pulse/client.conf"); bool ret = false; if (client_config_tmp_file.open ()) { QTextStream config_tmp_file_stream (&client_config_tmp_file); config_tmp_file_stream << "autospawn=no" << endl; +#ifdef Q_OS_WIN + config_tmp_file_stream << "default-server=localhost:" << pulse_port_ << endl; +#endif // defined (Q_OS_WIN) config_tmp_file_stream << "daemon-binary=" - << QDir (app_dir_ - + "/../exe/pulseaudio").absolutePath () + << QDir::toNativeSeparators (QDir (server_binary_).absolutePath ()) << endl; if (QFile::exists (client_config_file_name)) QFile::remove (client_config_file_name); + QDir client_config_dir (pulse_dir_.absolutePath () + "/.pulse/"); + client_config_dir.mkpath (client_config_dir.absolutePath ()); + client_config_tmp_file.copy (client_config_file_name); client_config_tmp_file.remove (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c37e419dda591cfa05a0449bfc37cec4d444bd15 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Oct 30 03:47:37 2015 +0100 pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index de99bda..506060f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -200,6 +200,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: make generate_server_config () Windows-compatible. - pulsemanager.cpp: make generate_client_config () Windows-compatible. - pulsemanager.cpp: only play startup sound if DEBUG macro is defined. + - pulsemanager.cpp: make startup sound playing via + slot_play_startup_sound () Windows-compatible. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 421e54b..512b027 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -294,11 +294,22 @@ void PulseManager::create_client_dir () { void PulseManager::slot_play_startup_sound () { #ifdef DEBUG QProcess play_file (0); + QString play_file_binary = QString (app_dir_); + QString play_file_file = play_file_binary; - play_file.setWorkingDirectory (pulse_server_->workingDirectory ()); +#ifdef Q_OS_DARWIN + play_file_binary += "/../exe/paplay"; + play_file_file += "/../Resources/startup.wav"; +#elif defined (Q_OS_WIN) + playFileBinary += "/pulse/paplay.exe"; + playFileFile += "/startup.wav"; +#endif // defined (Q_OS_DARWIN) + + QStringList args; + args << play_file_file; + play_file.setWorkingDirectory (server_working_dir_); play_file.setProcessEnvironment (env_); - play_file.start (app_dir_ + "/../exe/paplay " - + app_dir_ + "/../Resources/startup.wav"); + play_file.start (play_file_binary, args); if (play_file.waitForStarted ()) play_file.waitForFinished (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a2c30c6bb74dfa8c4902cfe1db98dc3b74de4d93 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:35:23 2015 +0100 pulsemanager.h: whitespace only. --- src/pulsemanager.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 8463fb5..a42f1ca 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -36,6 +36,7 @@ #include <QTimer> #include <assert.h> #include <cstdint> + #include "x2gologdebug.h" #include "x2gosettings.h" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 311d3b1965330f5f474cab42ccdd57b7196d47d3 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:35:57 2015 +0100 pulsemanager.cpp: typo fix in member variable name server_working_dir_. --- debian/changelog | 1 + src/pulsemanager.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 506060f..4dcb5e4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -202,6 +202,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: only play startup sound if DEBUG macro is defined. - pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. + - pulsemanager.cpp: typo fix in variable name server_working_dir_. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 512b027..7dda3d2 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -32,7 +32,7 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), app_dir_ (QApplication::applicationDirPath ()), server_args_ (QStringList ()), server_binary_ (QString ("")), - server_working_dir (QString ("")), + server_working_dir_ (QString ("")), pulse_version_major_ (0), pulse_version_minor_ (0) { pulse_dir_ = QDir (QDir::homePath ()); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit abaee6de53e823ef8eed34564fc0bf3aad153fa5 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:49:35 2015 +0100 pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). --- debian/changelog | 2 ++ src/pulsemanager.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9fb3268..4d7b093 100644 --- a/debian/changelog +++ b/debian/changelog @@ -207,6 +207,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium declaration accordingly. - pulsemanager.cpp: fix compile errors in find_port () by renaming the ret or port variable to search_port. + - pulsemanager.cpp: fix another compile error due to typo'd versions of + generate_server_config () and generate_client_config (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 7b0fa65..ecf47a3 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -135,7 +135,7 @@ void PulseManager::start_win () { server_working_dir_ = QString (app_dir_ + "/pulse/"); server_binary_ = QString (app_dir_ + "/pulse/pulseaudio.exe"); - if (generateServerConfig () && generateClientConfig ()) { + if (generate_server_config () && generate_client_config ()) { create_client_dir (); start_generic (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4e542e7f33884a7e6a55b9ebd6673572903d99a7 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:39:33 2015 +0100 pulsemanager.{cpp,h}: find_port () actually returns a value, fix declaration accordingly. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 2 +- src/pulsemanager.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4dcb5e4..ed9351e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -203,6 +203,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. - pulsemanager.cpp: typo fix in variable name server_working_dir_. + - pulsemanager.{cpp,h}: find_port () actually returns a value, fix + declaration accordingly. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 7dda3d2..ae8ece9 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -142,7 +142,7 @@ void PulseManager::start_win () { } } -void PulseManager::find_port (bool search_esd) { +bool PulseManager::find_port (bool search_esd) { QTcpSocket tcpSocket (0); bool free = false; std::uint16_t ret = pulse_port_; diff --git a/src/pulsemanager.h b/src/pulsemanager.h index a42f1ca..e1a088a 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -63,7 +63,7 @@ class PulseManager: public QObject { // FIXME void start_linux (); void start_generic (); - void find_port (bool search_esd = false); + bool find_port (bool search_esd = false); bool generate_server_config (); bool generate_client_config (); void cleanup_client_dir (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9670689e713e30410fecb5331806664d385b132e Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:48:11 2015 +0100 pulsemanager.cpp: fix compile errors in find_port () by renaming the ret or port variable to search_port. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 21 +++++++++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/debian/changelog b/debian/changelog index ed9351e..9fb3268 100644 --- a/debian/changelog +++ b/debian/changelog @@ -205,6 +205,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: typo fix in variable name server_working_dir_. - pulsemanager.{cpp,h}: find_port () actually returns a value, fix declaration accordingly. + - pulsemanager.cpp: fix compile errors in find_port () by renaming the ret + or port variable to search_port. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ae8ece9..7b0fa65 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -145,39 +145,40 @@ void PulseManager::start_win () { bool PulseManager::find_port (bool search_esd) { QTcpSocket tcpSocket (0); bool free = false; - std::uint16_t ret = pulse_port_; + std::uint16_t search_port = pulse_port_; std::uint16_t other_port = esd_port_; // If the search_esd parameter is true, find a free port // for the PulseAudio emulation. if (search_esd) { - ret = esd_port_; + search_port = esd_port_; other_port = pulse_port_; } do { // Skip this port, if it's reserved for the counterpart. - if (ret == other_port) { - ++ret; + if (search_port == other_port) { + ++search_port; continue; } - tcpSocket.connectToHost ("127.0.0.1", ret); + tcpSocket.connectToHost ("127.0.0.1", search_port); if (tcpSocket.waitForConnected (1000)) { tcpSocket.close (); free = false; - ++ret; + ++search_port; } - else + else { free = true; - } while ((!free) && (port > 1023)); + } + } while ((!free) && (search_port > 1023)); if (!search_esd) { - pulse_port_ = ret; + pulse_port_ = search_port; } else { - esd_port_ = ret; + esd_port_ = search_port; } return (free); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit efe3919cc9cbe22bf5f3d293977974950e9f08dd Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:51:12 2015 +0100 pulsemanager.cpp: another typo fix: findPort -> find_port. --- debian/changelog | 1 + src/pulsemanager.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4d7b093..1157578 100644 --- a/debian/changelog +++ b/debian/changelog @@ -209,6 +209,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium or port variable to search_port. - pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). + - pulsemanager.cpp: another typo fix: findPort -> find_port. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ecf47a3..b4f8481 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -69,7 +69,7 @@ void PulseManager::start () { // failed. Better trust your compiler to // optimize this statement and save some // cycles. - if ((findPort (false)) && (findPort (true))) { + if ((find_port (false)) && (find_port (true))) { #ifdef Q_OS_DARWIN start_osx (); #elif defined (Q_OS_WIN) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b9f77817675e82ef96820b55f964a92373006ad4 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:52:25 2015 +0100 pulsemanager.cpp: reorder member variables in initialization list. Compile warning fix. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1157578..c544486 100644 --- a/debian/changelog +++ b/debian/changelog @@ -210,6 +210,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). - pulsemanager.cpp: another typo fix: findPort -> find_port. + - pulsemanager.cpp: reorder member varibles in initialization list. + Compile warning fix. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index b4f8481..3d01cde 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -25,10 +25,10 @@ #endif // defined (NDEBUG) PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), + pulse_server_ (NULL), pulse_port_ (4713), esd_port_ (4714), state_ (QProcess::NotRunning), - pulse_server_ (NULL), app_dir_ (QApplication::applicationDirPath ()), server_args_ (QStringList ()), server_binary_ (QString ("")), -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 38c1962f0418b12baba918e0ebb4a7233bfbb73b Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:53:38 2015 +0100 pulsemanager.cpp: add "dummy" start_linux () function. --- debian/changelog | 3 ++- src/pulsemanager.cpp | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index c544486..5a82445 100644 --- a/debian/changelog +++ b/debian/changelog @@ -210,8 +210,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). - pulsemanager.cpp: another typo fix: findPort -> find_port. - - pulsemanager.cpp: reorder member varibles in initialization list. + - pulsemanager.cpp: reorder member variables in initialization list. Compile warning fix. + - pulsemanager.cpp: add "dummy" start_linux () function. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 3d01cde..9c6de0d 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -142,6 +142,10 @@ void PulseManager::start_win () { } } +void PulseManager::start_linux () { + /* Do nothing - assumed to be already running. */ +} + bool PulseManager::find_port (bool search_esd) { QTcpSocket tcpSocket (0); bool free = false; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2ca506354aa27d8c138eba2bd51b64f3bce59484 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Dec 30 21:37:22 2015 +0100 pulsemanager.cpp: re-initialize buffer string on each run while getting CWD on Linux. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index d58a047..d1f113e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -218,6 +218,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium them right away. - pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () with first skeleton. Call it in the constructor. + - pulsemanager.cpp: re-initialize buffer string on each run while getting + CWD on Linux. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ade1ec6..06ef766 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -72,6 +72,7 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), abort (); } + memset (buf, 0, path_len); ptr = getcwd (buf, path_len); if ((NULL == ptr) && (ERANGE != erange)) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 91cebd4541abacae82b3d81ddafb7e83417e043b Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:55:25 2015 +0100 pulsemanager.cpp: generate platform-dependent values for member variables server_working_dir_ and server_binary_ in constructor. We need them right away. --- debian/changelog | 3 +++ src/pulsemanager.cpp | 46 ++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5a82445..e3016b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -213,6 +213,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: reorder member variables in initialization list. Compile warning fix. - pulsemanager.cpp: add "dummy" start_linux () function. + - pulsemanager.cpp: generate platform-dependent values for member + variables server_working_dir_ and server_binary_ in constructor. We need + them right away. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 9c6de0d..bb0bf73 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -17,6 +17,9 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include <unistd.h> +#include <stdlib.h> + #include "pulsemanager.h" #ifndef DEBUG @@ -46,6 +49,43 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), env_.insert ("USERPROFILE", pulse_dir_.absolutePath ()); env_.insert ("USERNAME", "pulseuser"); #endif // defined (Q_OS_WIN) + + /* Set server binary and working dir paths. */ +#ifdef Q_OS_DARWIN + server_working_dir_ = QString (app_dir_ + "/../exe/"); + server_binary_ = QString (server_working_dir_ + "/pulseaudio"); +#elif defined (Q_OS_WIN) + server_working_dir_ = QString (app_dir_ + "/pulse/"); + server_binary_ = QString (app_dir_ + "/pulse/pulseaudio.exe"); +#elif defined (Q_OS_LINUX) + std::size_t path_len = pathconf (".", _PC_PATH_MAX); + + if (-1 == path_len) { + path_len = 1024; + } + + char *buf, *ptr; + + for (buf = ptr = NULL; ptr == NULL; path_len += 20) { + if (NULL == (buf = realloc (buf, path_len))) { + x2goErrorf (16) << "Could not allocate buffer for getting current working directory!" << std::endl; + abort (); + } + + ptr = getcwd (buf, path_len); + + if ((NULL == ptr) && (ERANGE != erange)) { + x2goErrorf (17) << "getcwd() failed: " << QString (strerror (errno)) << std::endl; + abort (); + } + } + + server_working_dir_ = QString (buf); + server_binary_ = QString ("pulseaudio"); + + free (buf); + buf = ptr = NULL; +#endif // defined (Q_OS_DARWIN) } PulseManager::~PulseManager () { @@ -111,9 +151,6 @@ void PulseManager::start_osx () { server_args_ << "--log-level=debug"; #endif // defined (DEBUG) - server_working_dir_ = QString (app_dir_ + "/../exe/"); - server_binary_ = QString (server_working_dir_ + "/pulseaudio"); - if (generate_server_config () && generate_client_config ()) { cleanup_client_dir (); @@ -132,9 +169,6 @@ void PulseManager::start_win () { server_args_ << "--log-level=debug"; #endif // defined (DEBUG) - server_working_dir_ = QString (app_dir_ + "/pulse/"); - server_binary_ = QString (app_dir_ + "/pulse/pulseaudio.exe"); - if (generate_server_config () && generate_client_config ()) { create_client_dir (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit da58773221882da3438a08e1e6fda4108badb51b Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 30 04:58:52 2015 +0100 pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () with first skeleton. Call it in the constructor. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 9 +++++++++ src/pulsemanager.h | 1 + 3 files changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index e3016b9..d58a047 100644 --- a/debian/changelog +++ b/debian/changelog @@ -216,6 +216,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: generate platform-dependent values for member variables server_working_dir_ and server_binary_ in constructor. We need them right away. + - pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () + with first skeleton. Call it in the constructor. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index bb0bf73..ade1ec6 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -86,6 +86,8 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), free (buf); buf = ptr = NULL; #endif // defined (Q_OS_DARWIN) + + fetch_pulseaudio_version (); } PulseManager::~PulseManager () { @@ -180,6 +182,13 @@ void PulseManager::start_linux () { /* Do nothing - assumed to be already running. */ } +void PulseManager::fetch_pulseaudio_version () { + QStringList args = "--version"; + QProcess tmp_server (this); + + tmp_server->setWorkingDirectory (server_working_dir_); +} + bool PulseManager::find_port (bool search_esd) { QTcpSocket tcpSocket (0); bool free = false; diff --git a/src/pulsemanager.h b/src/pulsemanager.h index e1a088a..fb21992 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -58,6 +58,7 @@ class PulseManager: public QObject { private: PulseManager (const PulseManager &other); + void fetch_pulseaudio_version (); void start_osx (); void start_win (); // FIXME -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1734146575c7bd14eb9e4a04f5720affa537cbcb Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Dec 30 21:39:19 2015 +0100 pulsemanager.cpp: fix some error messages by removing redundant newlines. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d1f113e..dfe62fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -220,6 +220,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium with first skeleton. Call it in the constructor. - pulsemanager.cpp: re-initialize buffer string on each run while getting CWD on Linux. + - pulsemanager.cpp: fix some error messages by removing redundant + newlines. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 06ef766..3f7256a 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -68,7 +68,7 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), for (buf = ptr = NULL; ptr == NULL; path_len += 20) { if (NULL == (buf = realloc (buf, path_len))) { - x2goErrorf (16) << "Could not allocate buffer for getting current working directory!" << std::endl; + x2goErrorf (16) << "Could not allocate buffer for getting current working directory!"; abort (); } @@ -76,7 +76,7 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), ptr = getcwd (buf, path_len); if ((NULL == ptr) && (ERANGE != erange)) { - x2goErrorf (17) << "getcwd() failed: " << QString (strerror (errno)) << std::endl; + x2goErrorf (17) << "getcwd() failed: " << QString (strerror (errno)); abort (); } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit bf1d6b3e14757c3ec237a4f56a43bdcfc9d14395 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Dec 30 23:11:44 2015 +0100 pulsemanager.{cpp,h}: some older PA versions used the major, minor and micro numbering scheme together with a descriptive string. Add new member variables for this and initialize them correctly. --- debian/changelog | 3 +++ src/pulsemanager.cpp | 4 +++- src/pulsemanager.h | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index dfe62fb..b460543 100644 --- a/debian/changelog +++ b/debian/changelog @@ -222,6 +222,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium CWD on Linux. - pulsemanager.cpp: fix some error messages by removing redundant newlines. + - pulsemanager.{cpp,h}: some older PA versions used the major, minor and + micro numbering scheme together with a descriptive string. Add new + member variables for this and initialize them correctly. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 3f7256a..bdf7f62 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -37,7 +37,9 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), server_binary_ (QString ("")), server_working_dir_ (QString ("")), pulse_version_major_ (0), - pulse_version_minor_ (0) { + pulse_version_minor_ (0), + pulse_version_micro_ (0), + pulse_version_misc_ ("") { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); pulse_dir_.cd (pulse_X2Go_.mid (1)); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index fb21992..52c4dfa 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -93,6 +93,8 @@ class PulseManager: public QObject { QString server_working_dir_; std::uint32_t pulse_version_major_; std::uint32_t pulse_version_minor_; + std::uint32_t pulse_version_micro_; + QString pulse_version_misc_; }; #ifdef NDEBUG_DEFINE -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b3fd942ca88ecd0688c1439f870bcec133852fa6 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 00:39:34 2015 +0100 pulsemanager.cpp: add algorithm for actually extracting PA version number. --- debian/changelog | 2 + src/pulsemanager.cpp | 129 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 130 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 71133bf..7b33edc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -227,6 +227,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium member variables for this and initialize them correctly. - pulsemanager.h: reformat a bit by adding newlines and moving lines in a (hopefully) logical fashion. + - pulsemanager.cpp: add algorithm for actually extracting PA version + number. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index bdf7f62..09fb791 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -189,7 +189,134 @@ void PulseManager::fetch_pulseaudio_version () { QStringList args = "--version"; QProcess tmp_server (this); - tmp_server->setWorkingDirectory (server_working_dir_); + /* Start PA with --version argument. */ + tmp_server.setWorkingDirectory (server_working_dir_); + tmp_server.start (server_binary_, args); + + /* Wait until the process exited again. */ + if (tmp_server->waitForFinished ()) { + /* Read stdout and split it up on newlines. */ + QByteArray ba = pulse_server_->readAllStandardOutput (); + QString stdout_data (ba.data ()); + QStringList stdout_list (stdout_data.split ("\n")); + + bool found = false; + for (QStringList::const_iterator cit = stdout_list.begin (); cit != stdout_list.end (); ++cit) { + /* Remove trailing whitespace, mostly carriage returns on Windows. */ + QString tmp_str (*cit); + tmp_str = tmp_str.trimmed (); + + QString needle ("pulseaudio "); + + if (tmp_str.startsWith (needle)) { + /* Drop first part. */ + tmp_str = tmp_str.mid (needle.size ()); + + /* We should be at a digit now. */ + bool numbers_found[3] = { false, false, false }; + QString tmp_str = QString (""); + for (QString::const_iterator cit = tmp_str.begin (); cit != tmp_str.end (); ++cit) { + if (!(numbers_found[0])) { + if (((*cit) >= '0') && ((*cit) <= '9')) { + tmp_str.append (*cit); + } + else if ((*cit) == '.') { + /* First number part complete, let's convert the string and skip the period. */ + numbers_found[0] = true; + bool convert_success = false; + pulse_version_major_ = tmp_str.toUInt (&convert_success, 10); + + if (!convert_success) { + x2goErrorf (20) << "Unable to convert major version number string to integer."; + abort (); + } + + tmp_str = QString (""); + } + else { + x2goErrorf (21) << "Unexpected character found when parsing version string for major version number: '" << QString (*cit) << "'."; + abort (); + } + } + else if (!(numbers_found[1])) { + if (((*cit) >= '0') && ((*cit) <= '9')) { + tmp_str.append (*cit); + } + else if (((*cit) == '.') || ((*cit) == '-')) { + /* + * Second number part complete, let's convert the string and then check whether + * we stopped at a period or a dash character. + */ + numbers_found[1] = true; + bool convert_success = false; + pulse_version_minor_ = tmp_str.toUInt (&convert_success, 10); + + if (!convert_success) { + x2goErrorf (22) << "Unable to convert minor version number string to integer."; + abort (); + } + + tmp_str = QString (""); + + if ((*cit) == '-') { + /* + * There will be no micro version, skip it entirely and assume the default + * value of zero. + */ + numbers_found[2] = true; + } + } + else { + x2goErrorf (23) << "Unexpected character found when parsing version string for minor version number: '" << QString (*cit) << "'."; + abort (); + } + } + else if (!(numbers_found[2])) { + if (((*cit) >= '0') && ((*cit) <= '9')) { + tmp_str.append (*cit); + } + else if ((*cit) == '-') { + /* Third number part complete, let's convert the string and skip the period. */ + numbers_found[2] = true; + bool convert_success = false; + pulse_version_micro_ = tmp_str.toUInt (&convert_success, 10); + + if (!convert_success) { + x2goErrorf (24) << "Unable to convert micro version number string to integer."; + abort (); + } + + tmp_str = QString (""); + } + else { + x2goErrorf (25) << "Unexpected character found when parsing version string for micro version number: '" << QString (*cit) << "'."; + abort (); + } + } + else { + /* Numbers should be good by now, let's fetch everything else. */ + tmp_str.append (*cit); + } + } + + /* Misc version part will be set to the trailing string. */ + pulse_version_misc_ = tmp_str; + } + else { + /* No need to look any further. */ + continue; + } + } + + if (!found) { + x2goErrorf (19) << "Unable to fetch PulseAudio version - unexpected format. Exiting."; + abort (); + } + } + else { + x2goErrorf (18) << "Unable to start PulseAudio to fetch its version number. Exiting."; + abort (); + } } bool PulseManager::find_port (bool search_esd) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9c3cfc531e30748b328dcc33a0ccbdda445aeeac Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 00:38:16 2015 +0100 pulsemanager.h: reformat a bit by adding newlines and moving lines in a (hopefully) logical fashion. --- debian/changelog | 2 ++ src/pulsemanager.h | 34 ++++++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index b460543..71133bf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -225,6 +225,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: some older PA versions used the major, minor and micro numbering scheme together with a descriptive string. Add new member variables for this and initialize them correctly. + - pulsemanager.h: reformat a bit by adding newlines and moving lines in a + (hopefully) logical fashion. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 52c4dfa..ec5e27c 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -46,51 +46,69 @@ class PulseManager: public QObject { public: PulseManager (); ~PulseManager (); + + QProcess::ProcessState state (); + std::uint16_t get_pulse_port (); std::uint16_t get_esd_port (); + void set_pulse_port (std::uint16_t pulse_port); void set_esd_port (std::uint16_t esd_port); - QProcess::ProcessState state (); + public slots: void start (); void restart (); + private: PulseManager (const PulseManager &other); - void fetch_pulseaudio_version (); + void start_osx (); void start_win (); // FIXME void start_linux (); void start_generic (); + + void fetch_pulseaudio_version (); + bool find_port (bool search_esd = false); + bool generate_server_config (); bool generate_client_config (); - void cleanup_client_dir (); + void create_client_dir (); + void cleanup_client_dir (); + void shutdown (); + bool is_server_running (); + private slots: void on_pulse_finished (int exit_code); void slot_play_startup_sound (); + signals: void sig_pulse_server_terminated (); + private: + QString app_dir_; QString pulse_X2Go_; QDir pulse_dir_; + QStringList server_args_; + QString server_binary_; + QString server_working_dir_; + QProcessEnvironment env_; QProcess *pulse_server_; + QProcess::ProcessState state_; + std::uint16_t pulse_port_; std::uint16_t esd_port_; - QProcess::ProcessState state_; - QString app_dir_; - QStringList server_args_; - QString server_binary_; - QString server_working_dir_; + std::uint32_t pulse_version_major_; std::uint32_t pulse_version_minor_; std::uint32_t pulse_version_micro_; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 24a2e270d59bee9daaeb46a00c81f56ebec88268 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 00:55:17 2015 +0100 pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is not currently running. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 22 ++++++++++++++++++---- src/pulsemanager.h | 4 ++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7b33edc..8794f47 100644 --- a/debian/changelog +++ b/debian/changelog @@ -229,6 +229,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium (hopefully) logical fashion. - pulsemanager.cpp: add algorithm for actually extracting PA version number. + - pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is + not currently running. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 09fb791..7ffdfcf 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -554,12 +554,26 @@ std::uint16_t PulseManager::get_esd_port () { return (esd_port_); } -void PulseManager::set_pulse_port (std::uint16_t pulse_port) { - pulse_port_ = pulse_port; +bool PulseManager::set_pulse_port (std::uint16_t pulse_port) { + bool ret = false; + + if (!(is_server_running ())) { + pulse_port_ = pulse_port; + ret = true; + } + + return (ret); } -void PulseManager::set_esd_port (std::uint16_t esd_port) { - esd_port_ = esd_port; +bool PulseManager::set_esd_port (std::uint16_t esd_port) { + bool ret = false; + + if (!(is_server_running ())) { + esd_port_ = esd_port; + ret = true; + } + + return (ret); } void PulseManager::restart () { diff --git a/src/pulsemanager.h b/src/pulsemanager.h index ec5e27c..3dbd94f 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -52,8 +52,8 @@ class PulseManager: public QObject { std::uint16_t get_pulse_port (); std::uint16_t get_esd_port (); - void set_pulse_port (std::uint16_t pulse_port); - void set_esd_port (std::uint16_t esd_port); + bool set_pulse_port (std::uint16_t pulse_port); + bool set_esd_port (std::uint16_t esd_port); public slots: -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 18aec60f7f0d5623fb827843a477679f5cfd2800 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 01:03:00 2015 +0100 pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 34 +++++++++++++++++++++++++++++++++- src/pulsemanager.h | 7 +++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 8794f47..5adaa6d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -231,6 +231,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium number. - pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is not currently running. + - pulsemanager.{cpp,h}: add record and playback private members, as well + as getters and setters. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 7ffdfcf..ea8124e 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -39,7 +39,9 @@ PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), pulse_version_major_ (0), pulse_version_minor_ (0), pulse_version_micro_ (0), - pulse_version_misc_ ("") { + pulse_version_misc_ (""), + record_ (true), + playback_ (true) { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); pulse_dir_.cd (pulse_X2Go_.mid (1)); @@ -554,6 +556,14 @@ std::uint16_t PulseManager::get_esd_port () { return (esd_port_); } +bool PulseManager::get_record () { + return (record_); +} + +bool PulseManager::get_playback () { + return (playback_); +} + bool PulseManager::set_pulse_port (std::uint16_t pulse_port) { bool ret = false; @@ -576,6 +586,28 @@ bool PulseManager::set_esd_port (std::uint16_t esd_port) { return (ret); } +bool PulseManager::set_record (bool record) { + bool ret = false; + + if (!(is_server_running ())) { + record_ = record; + ret = true; + } + + return (ret); +} + +bool PulseManager::set_playback (bool playback) { + bool ret = false; + + if (!(is_server_running ())) { + playback_ = playback; + ret = true; + } + + return (ret); +} + void PulseManager::restart () { if (pulse_server_ && is_server_running ()) shutdown (); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 3dbd94f..57b80bd 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -51,9 +51,13 @@ class PulseManager: public QObject { std::uint16_t get_pulse_port (); std::uint16_t get_esd_port (); + bool get_record (); + bool get_playback (); bool set_pulse_port (std::uint16_t pulse_port); bool set_esd_port (std::uint16_t esd_port); + bool set_record (bool record); + bool set_playback (bool playback); public slots: @@ -113,6 +117,9 @@ class PulseManager: public QObject { std::uint32_t pulse_version_minor_; std::uint32_t pulse_version_micro_; QString pulse_version_misc_; + + bool record_; + bool playback_; }; #ifdef NDEBUG_DEFINE -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 520ba30438f529b6078e88dc093276ab4d05dec2 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 01:41:54 2015 +0100 pulsemanager.cpp: reorder member variables in initializer list. --- debian/changelog | 1 + src/pulsemanager.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5adaa6d..cd8820a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -233,6 +233,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium not currently running. - pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. + - pulsemanager.cpp: reorder member variables in initializer list. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ea8124e..b3235a0 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -27,15 +27,15 @@ #define DEBUG #endif // defined (NDEBUG) -PulseManager::PulseManager () : pulse_X2Go_ ("/.x2go/pulse"), +PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), + pulse_X2Go_ ("/.x2go/pulse"), + server_binary_ (QString ("")), + server_working_dir_ (QString ("")), + server_args_ (QStringList ()), pulse_server_ (NULL), + state_ (QProcess::NotRunning), pulse_port_ (4713), esd_port_ (4714), - state_ (QProcess::NotRunning), - app_dir_ (QApplication::applicationDirPath ()), - server_args_ (QStringList ()), - server_binary_ (QString ("")), - server_working_dir_ (QString ("")), pulse_version_major_ (0), pulse_version_minor_ (0), pulse_version_micro_ (0), -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5f8adceead10cecae06cd1b830f4948abba887c6 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 02:11:16 2015 +0100 pulsemanager.h: more moving around. --- debian/changelog | 1 + src/pulsemanager.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a78308f..1579f56 100644 --- a/debian/changelog +++ b/debian/changelog @@ -235,6 +235,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium as getters and setters. - pulsemanager.cpp: reorder member variables in initializer list. - pulsemanager.cpp: fix compile error in startup sound function. + - pulsemanager.h: more moving around. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 57b80bd..6d94e34 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -102,11 +102,11 @@ class PulseManager: public QObject { QString app_dir_; QString pulse_X2Go_; QDir pulse_dir_; - QStringList server_args_; QString server_binary_; QString server_working_dir_; QProcessEnvironment env_; + QStringList server_args_; QProcess *pulse_server_; QProcess::ProcessState state_; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b4908ab936d85b68410825352c2fe5a50bdfd3c7 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 01:46:04 2015 +0100 pulsemanager.cpp: fix compile error in startup sound function. --- debian/changelog | 1 + src/pulsemanager.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index cd8820a..a78308f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -234,6 +234,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. - pulsemanager.cpp: reorder member variables in initializer list. + - pulsemanager.cpp: fix compile error in startup sound function. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index b3235a0..63ebf11 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -196,7 +196,7 @@ void PulseManager::fetch_pulseaudio_version () { tmp_server.start (server_binary_, args); /* Wait until the process exited again. */ - if (tmp_server->waitForFinished ()) { + if (tmp_server.waitForFinished ()) { /* Read stdout and split it up on newlines. */ QByteArray ba = pulse_server_->readAllStandardOutput (); QString stdout_data (ba.data ()); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f6791d276e3e112b6643f3ab3d913c441660c5b9 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 02:12:59 2015 +0100 pulsemanager.cpp: use record and playback member variables. --- debian/changelog | 1 + src/pulsemanager.cpp | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1579f56..60719c6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -236,6 +236,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: reorder member variables in initializer list. - pulsemanager.cpp: fix compile error in startup sound function. - pulsemanager.h: more moving around. + - pulsemanager.cpp: use record and playback member variables. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 63ebf11..25f8f50 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -366,13 +366,8 @@ bool PulseManager::find_port (bool search_esd) { bool PulseManager::generate_server_config () { QString config_file_name = pulse_dir_.absolutePath () + "/config.pa"; QTemporaryFile config_tmp_file (pulse_dir_.absolutePath () + "/tmp/tmpconfig"); - X2goSettings settings ("settings"); - bool disable_input = false; bool ret = false; - disable_input = settings.setting ()->value ("soundnoinput", - (QVariant) false).toBool (); - if (config_tmp_file.open ()) { QTextStream config_tmp_file_stream (&config_tmp_file); @@ -395,9 +390,22 @@ bool PulseManager::generate_server_config () { // FIXME Linux #endif // defined (Q_OS_DARWIN) - if (disable_input) - config_tmp_file_stream << " record=0"; + config_tmp_file_stream << " record="; + if (!record_) { + config_tmp_file_stream << "0"; + } + else { + config_tmp_file_stream << "1"; + } + config_tmp_file_stream << endl; + config_tmp_file_stream << " playback="; + if (!playback_) { + config_tmp_file_stream << "0"; + } + else { + config_tmp_file_stream << "1"; + } config_tmp_file_stream << endl; QFile config_file (config_file_name); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 718a34eb562c72785e65097314bd824d9f8600ff Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 31 02:14:10 2015 +0100 pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 15 +++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index 60719c6..3cda3a1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -237,6 +237,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: fix compile error in startup sound function. - pulsemanager.h: more moving around. - pulsemanager.cpp: use record and playback member variables. + - pulsemanager.cpp: cleanup, don't use copy assignment operator when we + just need to construct a new object. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 25f8f50..9a70e5d 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -188,7 +188,7 @@ void PulseManager::start_linux () { } void PulseManager::fetch_pulseaudio_version () { - QStringList args = "--version"; + QStringList args (QString ("--version")); QProcess tmp_server (this); /* Start PA with --version argument. */ @@ -198,7 +198,7 @@ void PulseManager::fetch_pulseaudio_version () { /* Wait until the process exited again. */ if (tmp_server.waitForFinished ()) { /* Read stdout and split it up on newlines. */ - QByteArray ba = pulse_server_->readAllStandardOutput (); + QByteArray ba (pulse_server_->readAllStandardOutput ()); QString stdout_data (ba.data ()); QStringList stdout_list (stdout_data.split ("\n")); @@ -364,7 +364,7 @@ bool PulseManager::find_port (bool search_esd) { } bool PulseManager::generate_server_config () { - QString config_file_name = pulse_dir_.absolutePath () + "/config.pa"; + QString config_file_name (pulse_dir_.absolutePath () + "/config.pa"); QTemporaryFile config_tmp_file (pulse_dir_.absolutePath () + "/tmp/tmpconfig"); bool ret = false; @@ -482,8 +482,8 @@ void PulseManager::create_client_dir () { void PulseManager::slot_play_startup_sound () { #ifdef DEBUG QProcess play_file (0); - QString play_file_binary = QString (app_dir_); - QString play_file_file = play_file_binary; + QString play_file_binary (app_dir_); + QString play_file_file (play_file_binary); #ifdef Q_OS_DARWIN play_file_binary += "/../exe/paplay"; @@ -493,8 +493,7 @@ void PulseManager::slot_play_startup_sound () { playFileFile += "/startup.wav"; #endif // defined (Q_OS_DARWIN) - QStringList args; - args << play_file_file; + QStringList args (play_file_file); play_file.setWorkingDirectory (server_working_dir_); play_file.setProcessEnvironment (env_); play_file.start (play_file_binary, args); @@ -508,7 +507,7 @@ void PulseManager::on_pulse_finished (int exit_code) { if (!exit_code) x2goDebug << "Warning! Pulseaudio's exit code is non-zero."; - QByteArray ba = pulse_server_->readAllStandardOutput (); + QByteArray ba (pulse_server_->readAllStandardOutput ()); char *data = ba.data (); std::cout << data; ba = pulse_server_->readAllStandardError (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2d83ce949dfd8f099e2e2154daf1145ec6eeac0f Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Mar 31 21:11:46 2016 +0200 macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. --- debian/changelog | 1 + macbuild.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3cda3a1..6f99696 100644 --- a/debian/changelog +++ b/debian/changelog @@ -239,6 +239,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: use record and playback member variables. - pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. + - macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index c95955e..eb128c0 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -177,7 +177,7 @@ NXPROXY="nxproxy" PULSEAUDIO_BINARIES=( "pulseaudio" "esdcompat" "pacat" "pacmd" "pactl" "pamon" "paplay" "parec" "parecord" "pasuspender" ) PULSEAUDIO_LIBRARIES=( "libpulse-simple.0.dylib" - "pulse-6.0" + "pulse-8.0" "pulseaudio" ) typeset -a special_files_regex -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 061fc0781f2f4c29b3469482bb79453e223402f0 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Mar 31 22:21:37 2016 +0200 macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". --- debian/changelog | 2 ++ macbuild.sh | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6f99696..eece461 100644 --- a/debian/changelog +++ b/debian/changelog @@ -240,6 +240,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. - macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. + - macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio + subdirectory now, adding it to "special files workaround". [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index eb128c0..d5aadfe 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -181,7 +181,8 @@ PULSEAUDIO_LIBRARIES=( "libpulse-simple.0.dylib" "pulseaudio" ) typeset -a special_files_regex -special_files_regex+=( "pulseaudio/libpulsecommon-[0-9]\.[0-9]\.dylib" ) +special_files_regex+=( "pulseaudio/libpulsecommon-[0-9]\.[0-9]\.dylib" + "pulseaudio/libpulsecore-[0-9]\.[0-9]\.dylib" ) typeset -r dependency_base_format='@executable_path/../Frameworks/' -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1ad19cf82c3931014900e44e1194ab84e150dd79 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 27 00:55:28 2016 +0200 src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the (OS-dependent) PulseAudio config and cookie directory. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 4 ++++ src/pulsemanager.h | 1 + 3 files changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 175a051..a0d6180 100644 --- a/debian/changelog +++ b/debian/changelog @@ -243,6 +243,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". - pulsemanager.cpp: remove config.pa while doing post-exit cleanups. + - src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the + (OS-dependent) PulseAudio config and cookie directory. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 0d20ed1..4ac7ba5 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -579,6 +579,10 @@ bool PulseManager::get_playback () { return (playback_); } +QDir PulseManager::get_pulse_dir () { + return (pulse_dir_); +} + bool PulseManager::set_pulse_port (std::uint16_t pulse_port) { bool ret = false; diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 6d94e34..af7ae77 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -53,6 +53,7 @@ class PulseManager: public QObject { std::uint16_t get_esd_port (); bool get_record (); bool get_playback (); + QDir get_pulse_dir (); bool set_pulse_port (std::uint16_t pulse_port); bool set_esd_port (std::uint16_t esd_port); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit ecd4d313b071298322bd16a7e8b2136eb805a7f7 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Mar 31 22:54:47 2016 +0200 pulsemanager.cpp: remove config.pa while doing post-exit cleanups. --- debian/changelog | 1 + src/pulsemanager.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index eece461..175a051 100644 --- a/debian/changelog +++ b/debian/changelog @@ -242,6 +242,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. - macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". + - pulsemanager.cpp: remove config.pa while doing post-exit cleanups. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 9a70e5d..0d20ed1 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -524,6 +524,14 @@ void PulseManager::on_pulse_finished (int exit_code) { + "/pulse-pulseuser"); #endif // defined (Q_OS_WIN) +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) + // Remove server config file, otherwise the directory won't be empty. + work_dir.remove (QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () + + "/config.pa").absolutePath ())); +#else // Linux + // FIXME. +#endif + work_dir.rmdir (pulse_dir_.absolutePath ()); state_ = QProcess::NotRunning; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4fe9215e4f03b596587c046dc470c1948b0caaca Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 27 01:17:09 2016 +0200 src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index a0d6180..c390355 100644 --- a/debian/changelog +++ b/debian/changelog @@ -245,6 +245,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - pulsemanager.cpp: remove config.pa while doing post-exit cleanups. - src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the (OS-dependent) PulseAudio config and cookie directory. + - src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones + depending on the detected PA version. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 4ac7ba5..9f57525 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -152,7 +152,11 @@ void PulseManager::start_osx () { << "-F" << pulse_dir_.absolutePath () + "/config.pa" << "-p" << QDir (app_dir_ - + "/../Frameworks/pulse-2.0/modules").absolutePath () + + "/../Frameworks/pulse-" + + QString::number (pulse_version_major_) + + "." + + QString::number (pulse_version_minor_) + + "/modules").absolutePath () << "--high-priority"; #ifdef DEBUG server_args_ << "--log-level=debug"; @@ -170,8 +174,11 @@ void PulseManager::start_win () { server_args_ << "--exit-idle-time=-1" << "-n" << "-F" << QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () + "/config.pa").absolutePath ()) - << "-p" << QDir::toNativeSeparators (QDir (app_dir_ + "/pulse/lib/pulse-1.1/" - + "modules/").absolutePath ()); + << "-p" << QDir::toNativeSeparators (QDir (app_dir_ + "/pulse/lib/pulse-" + + QString::number (pulse_version_major_) + + "." + + QString::number (pulse_version_minor_) + + "/modules/").absolutePath ()); #ifdef DEBUG server_args_ << "--log-level=debug"; #endif // defined (DEBUG) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1f7a7e5f7ccf81ce5e28d6985a8eda2de7677655 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 27 01:39:02 2016 +0200 src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) --- debian/changelog | 1 + src/pulsemanager.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index c390355..b456952 100644 --- a/debian/changelog +++ b/debian/changelog @@ -247,6 +247,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium (OS-dependent) PulseAudio config and cookie directory. - src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. + - src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 9f57525..03e321f 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -159,7 +159,9 @@ void PulseManager::start_osx () { + "/modules").absolutePath () << "--high-priority"; #ifdef DEBUG - server_args_ << "--log-level=debug"; + server_args_ << "--log-level=debug" + << "--verbose" + << "--log-target=file:" pulse_dir_.absolutePath () + "/pulse.log"; #endif // defined (DEBUG) if (generate_server_config () && generate_client_config ()) { @@ -180,7 +182,10 @@ void PulseManager::start_win () { + QString::number (pulse_version_minor_) + "/modules/").absolutePath ()); #ifdef DEBUG - server_args_ << "--log-level=debug"; + /* FIXME: need a way to request debugging. */ + server_args_ << "--log-level=debug" + << "--verbose" + << "--log-target=file:" + pulse_dir_.absolutePath () + "\\pulse.log"; #endif // defined (DEBUG) if (generate_server_config () && generate_client_config ()) { @@ -535,6 +540,8 @@ void PulseManager::on_pulse_finished (int exit_code) { // Remove server config file, otherwise the directory won't be empty. work_dir.remove (QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () + "/config.pa").absolutePath ())); + work_dir.remove (QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () + + "/pulse.log").absolutePath ())); #else // Linux // FIXME. #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d475eab3cb97d49d19940acea941174217af56d4 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 27 01:47:43 2016 +0200 src/pulsemanager.cpp: backport fix for 526. --- debian/changelog | 1 + src/pulsemanager.cpp | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/debian/changelog b/debian/changelog index b456952..ea4a079 100644 --- a/debian/changelog +++ b/debian/changelog @@ -248,6 +248,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. - src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) + - src/pulsemanager.cpp: backport fix for 526. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 03e321f..c8fc7cd 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -19,6 +19,7 @@ #include <unistd.h> #include <stdlib.h> +#include <QSysInfo> #include "pulsemanager.h" @@ -188,6 +189,24 @@ void PulseManager::start_win () { << "--log-target=file:" + pulse_dir_.absolutePath () + "\\pulse.log"; #endif // defined (DEBUG) + /* + * Fix for x2goclient bug #526. + * Works around PulseAudio bug #80772. + * Tested with PulseAudio 5.0. + * This argument will not cause PulseAudio 0.9.6 or 1.1 (the legacy versions) + * to fail to launch. + * However, 0.9.6 defaults to normal priority anyway, + * and 1.1 ignores it for some reason. + * So yes, the fact that 1.1 ignores it would be a bug in x2goclient if we + * ever ship 1.1 again. + */ + if ((QSysInfo::WindowsVersion == QSysInfo::WV_XP) || (QSysInfo::WindowsVersion == QSysInfo::WV_2003)) { + x2goDebug << "Windows XP or Server 2003 (R2) detected." + << "Setting PulseAudio to \"normal\" CPU priority."; + + server_args_ << "--high-priority=no"; + } + if (generate_server_config () && generate_client_config ()) { create_client_dir (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 90f999b60f5b4276f84b56f2ff2ebc19eaa7bf5e Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Apr 29 02:08:03 2016 +0200 src/configdialog.cpp: whitespace only. --- debian/changelog | 1 + src/configdialog.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index 43000af..191db83 100644 --- a/debian/changelog +++ b/debian/changelog @@ -252,6 +252,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: backport fix for 422. - src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) + - src/configdialog.cpp: whitespace only. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/configdialog.cpp b/src/configdialog.cpp index 93c0225..2dfcf397 100644 --- a/src/configdialog.cpp +++ b/src/configdialog.cpp @@ -263,6 +263,7 @@ ConfigDialog::ConfigDialog ( QWidget * parent, Qt::WindowFlags f ) sshLay->addStretch(); frLay->addLayout ( sshLay ); #endif + if ( embedMode ) { cbStartEmbed=new QCheckBox ( @@ -415,6 +416,7 @@ void ConfigDialog::slot_accepted() st.setting()->setValue ( "clientport", ( QVariant ) clientSshPort->value() ); #endif + pwid->saveSettings(); if ( embedMode ) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9e6405db5c65550cf357fff9fe9e974c94741e78 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 27 02:16:49 2016 +0200 src/pulsemanager.cpp: backport fix for 422. --- debian/changelog | 1 + src/pulsemanager.cpp | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index ea4a079..ff2bd8f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -249,6 +249,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium depending on the detected PA version. - src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) - src/pulsemanager.cpp: backport fix for 526. + - src/pulsemanager.cpp: backport fix for 422. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index c8fc7cd..fb0d5eb 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -403,7 +403,29 @@ bool PulseManager::generate_server_config () { QTextStream config_tmp_file_stream (&config_tmp_file); config_tmp_file_stream << "load-module module-native-protocol-tcp port=" - + QString::number (pulse_port_) << endl; + + QString::number (pulse_port_); + + /* + * Reference: + * http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modul... + * + * Setting auth-cookie fixes bug #422. + * + * PulseAudio 6.0 changed the path that auth-cookie is relative to, so + * Tanu Kaskinen recommended we specify the absolute path instead. + * The absolute path works with at least 5.0 and 6.0. + */ + if (pulse_version_major_ > 2) { + QString tmp_auth_cookie = QDir::toNativeSeparators (wapiShortFileName (pulse_dir_.absolutePath ())) + + "\\.pulse-cookie"; + + /* Double backslashes are required in config.pa. */ + tmp_auth_cookie.replace ("\\", "\\\\"); + + config_tmp_file_stream << " auth-cookie=" + tmp_auth_cookie; + } + + config_tmp_file_stream << endl; #ifdef Q_OS_UNIX config_tmp_file_stream << "load-module module-native-protocol-unix" << endl; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit dd9a04f73bd0438590433555699fca81c23bf027 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Apr 29 02:00:42 2016 +0200 src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) --- debian/changelog | 2 ++ src/configdialog.cpp | 31 ++++++++++++++++--------------- src/configdialog.h | 4 ++-- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/debian/changelog b/debian/changelog index ff2bd8f..43000af 100644 --- a/debian/changelog +++ b/debian/changelog @@ -250,6 +250,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) - src/pulsemanager.cpp: backport fix for 526. - src/pulsemanager.cpp: backport fix for 422. + - src/configdialog.{cpp,h}: add "no record" support for OS X (through + PulseManager.) [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/configdialog.cpp b/src/configdialog.cpp index 2f70a13..93c0225 100644 --- a/src/configdialog.cpp +++ b/src/configdialog.cpp @@ -352,18 +352,16 @@ ConfigDialog::ConfigDialog ( QWidget * parent, Qt::WindowFlags f ) tabWidg->addTab(xsetWidg, tr("X.Org Server settings")); #endif -#ifdef Q_OS_WIN - QFrame* frp=new QFrame(this); - tabWidg->addTab(frp, tr("Pulseaudio settings")); - QVBoxLayout* l=new QVBoxLayout(frp); - cbNoRecord=new QCheckBox(tr("Disable audio input"),frp); - QLabel* lw=new QLabel(tr("<font size=\"5\">You must restart the X2Go Client for the changes to take effect</font><br><br>"),frp); - lw->setWordWrap(true); - l->addWidget(lw); - l->addWidget(cbNoRecord); - l->addStretch(1); - cbNoRecord->setChecked ( st.setting()->value ( "pulse/norecord", false ).toBool() ); -#endif +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) + QFrame* frp = new QFrame (this); + tabWidg->addTab (frp, tr ("PulseAudio settings")); + QVBoxLayout* l = new QVBoxLayout (frp); + cbNoRecord = new QCheckBox (tr ("Disable sound input"), frp); + lw->setWordWrap (true); + l->addWidget (cbNoRecord); + l->addStretch (1); + cbNoRecord->setChecked (st.setting ()->value ("pulse/norecord", false).toBool ()); +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ } @@ -381,9 +379,9 @@ void ConfigDialog::slot_accepted() st.setting()->setValue ( "trayicon/mincon", cbMinimizeTray->isChecked() ); st.setting()->setValue ( "trayicon/maxdiscon", cbMaxmizeTray->isChecked() ); #endif -#ifdef Q_OS_WIN +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) st.setting()->setValue ( "pulse/norecord", cbNoRecord->isChecked() ); -#endif +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ #ifdef USELDAP if ( !embedMode ) { @@ -661,12 +659,15 @@ void ConfigDialog::slotDefaults() cbNoRecord->setChecked(false); } break; -#endif +#endif /* defined (Q_OS_WIN) */ case 0: { if ( embedMode ) cbStartEmbed->setChecked ( true ); clientSshPort->setValue ( 22 ); +#ifdef Q_OS_DARWIN + cbNoRecord->setChecked (false); +#endif /* defined (Q_OS_DARWIN) */ #ifndef CFGPLUGIN gbTrayIcon->setChecked (false); cbMinimizeTray->setChecked (false); diff --git a/src/configdialog.h b/src/configdialog.h index e9b6582..5b55454 100644 --- a/src/configdialog.h +++ b/src/configdialog.h @@ -93,9 +93,9 @@ private: XSettingsWidget* xsetWidg; #endif -#ifdef Q_OS_WIN +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) QCheckBox *cbNoRecord; -#endif +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ QGroupBox *gbTrayIcon; QCheckBox *cbMinimizeTray; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0b0f3dd5d93cc98f77e2838fcb3c2338b8899432 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed May 4 23:24:43 2016 +0200 src/mediawidget.cpp: reflect new capabilities through PulseManager. --- debian/changelog | 1 + src/mediawidget.cpp | 35 ++++++++++++++++++++--------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/debian/changelog b/debian/changelog index b66a4d0..50a8ead 100644 --- a/debian/changelog +++ b/debian/changelog @@ -255,6 +255,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/configdialog.cpp: whitespace only. - src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. + - src/mediawidget.cpp: reflect new capabilities through PulseManager. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/mediawidget.cpp b/src/mediawidget.cpp index 03b952f..c937ba4 100644 --- a/src/mediawidget.cpp +++ b/src/mediawidget.cpp @@ -71,7 +71,7 @@ MediaWidget::MediaWidget ( QString id, ONMainWindow * mw, cbDefSndPort=new QCheckBox ( tr ( "Use default sound port" ),sbgr ); sbSndPort=new QSpinBox ( sbgr ); sbSndPort->setMinimum ( 1 ); - sbSndPort->setMaximum ( 99999999 ); + sbSndPort->setMaximum ( 65535 ); QHBoxLayout *sndPortLay = new QHBoxLayout(); @@ -93,22 +93,17 @@ MediaWidget::MediaWidget ( QString id, ONMainWindow * mw, sLay_opt->addLayout ( sndPortLay ); sndLay->addWidget ( sound ); sndLay->addLayout ( sLay ); -#ifdef Q_OS_WIN +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) arts->hide(); hl->hide(); cbDefSndPort->hide(); lSndPort->hide(); sbSndPort->hide(); -#endif +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ cbClientPrint=new QCheckBox ( tr ( "Client side printing support" ), this ); -#ifdef Q_OS_DARWIN - arts->hide(); - pulse->hide(); - esd->setChecked ( true ); -#endif setLay->addWidget(sbgr); setLay->addWidget ( cbClientPrint ); setLay->addStretch(); @@ -166,7 +161,12 @@ void MediaWidget::slot_sndSysSelected ( int system ) cbSndSshTun->show(); cbSndSshTun->setEnabled ( false ); cbSndSshTun->setChecked ( true ); -#endif +#elif defined (Q_OS_DARWIN) + rbStartSnd->hide (); + rbNotStartSnd->hide (); + cbSndSshTun->show (); + cbSndSshTun->setEnabled (true); +#endif /* defined (Q_OS_WIN) */ sbSndPort->setValue ( 16001 ); break; } @@ -184,8 +184,16 @@ void MediaWidget::slot_sndToggled ( bool val ) rbNotStartSnd->setEnabled ( val ); cbSndSshTun->setEnabled ( false ); - if ( pulse->isChecked() ) + /* ESD is also handled by PA on Windows and OS X. */ +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) + if ((pulse->isChecked ()) || (esd->isChecked ())) { + cbSndSshTun->setEnabled (val); + } +#else + if (pulse->isChecked ()) { cbSndSshTun->setEnabled ( val ); + } +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ lSndPort->setEnabled ( val ); if ( !arts->isChecked() ) cbDefSndPort->setEnabled ( val ); @@ -261,20 +269,17 @@ void MediaWidget::readConfig() pulse->setChecked ( true ); slot_sndSysSelected ( PULSE ); -#ifdef Q_OS_WIN +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) if ( sndsys=="arts" ) { sndsys="pulse"; } -#endif +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ if ( sndsys=="arts" ) { arts->setChecked ( true ); slot_sndSysSelected ( ARTS ); } -#ifdef Q_OS_DARWIN - sndsys="esd"; -#endif if ( sndsys=="esd" ) { esd->setChecked ( true ); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a32068d32882b122ac09510185e90a73c891ac16 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed May 4 23:23:07 2016 +0200 src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. --- debian/changelog | 2 + src/onmainwindow.cpp | 349 ++++++++++++++------------------------------------ src/onmainwindow.h | 38 +++--- 3 files changed, 117 insertions(+), 272 deletions(-) diff --git a/debian/changelog b/debian/changelog index 191db83..b66a4d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -253,6 +253,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) - src/configdialog.cpp: whitespace only. + - src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and + Windows. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 20140f3..ed8335b 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -148,10 +148,7 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) #ifdef Q_OS_WIN clientSshPort="7022"; - pulsePort=4713; - pulseStarted=false; X2goSettings st ( "settings" ); - pulseNoRecord=st.setting()->value ( "pulse/norecord", false ).toBool(); winSshdStarted=false; #else userSshd=false; @@ -174,7 +171,6 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) #ifdef Q_OS_WIN pulseVersionTest=0l; - pulseServer=0l; xorg=0l; xDisplay=0; #endif @@ -462,6 +458,10 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) QTimer::singleShot ( 500, this, SLOT ( startWinServers() ) ); #endif + /* FIXME: add Linux. */ +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) + QTimer::singleShot (500, this, SLOT (pulseManagerWrapper ())); +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ mainL->setSpacing ( 0 ); mainL->setMargin ( 0 ); @@ -1488,24 +1488,6 @@ void ONMainWindow::closeClient() } #endif #ifdef Q_OS_WIN - if ( pulseServer && pulseStarted ) - { - x2goDebug<<"Deleting the pulse timer ..."; - delete pulseTimer; - x2goDebug<<"Deleted the pulse timer."; - x2goDebug<<"Killing the PulseAudio sound server ..."; - pulseServer->kill(); - x2goDebug<<"Killed the PulseAudio sound server."; - x2goDebug<<"Deleting the PulseAudio process ..."; - delete pulseServer; - x2goDebug<<"Deleted the PulseAudio process."; - - QDir dr ( homeDir ); - dr.remove ( pulseDir+"/config.pa" ); - dr.remove ( pulseDir+"/pulse-pulseuser/pid" ); - dr.rmdir ( pulseDir+"/pulse-pulseuser" ); - dr.rmdir ( pulseDir ); - } if ( xorg ) { x2goDebug<<"Terminating the X.Org Server ..."; @@ -1522,7 +1504,20 @@ void ONMainWindow::closeClient() CloseHandle ( sshd.hProcess ); CloseHandle ( sshd.hThread ); } -#else +#endif /* defined (Q_OS_WIN) */ + +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) + if (pulseManager) { + delete (pulseManager); + + pulseManagerThread->quit (); + pulseManagerThread->wait (); + + delete (pulseManagerThread); + } +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ + +#ifndef (Q_OS_WIN) if ( userSshd && sshd ) { x2goDebug<<"Terminating the OpenSSH server ..."; @@ -1530,8 +1525,8 @@ void ONMainWindow::closeClient() x2goDebug<<"Terminated the OpenSSH server."; delete sshd; } +#endif /* !defined (Q_OS_WIN) */ -#endif if ( embedMode ) { passForm->close(); @@ -2114,11 +2109,31 @@ void ONMainWindow::slotConfig() delete ld; ld=0; +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) + bool oldDisableInput = false; + { + X2goSettings st ("settings"); + oldDisableInput = st.setting ()->value ("pulse/norecord", + (QVariant) false).toBool (); + } +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ + ConfigDialog dlg ( this ); if ( dlg.exec() ==QDialog::Accepted ) { int i; +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) + X2goSettings st ("settings"); + bool newDisableInput = st.setting ()->value ("pulse/norecord", + (QVariant) false).toBool (); + + if (oldDisableInput != newDisableInput) { + pulseManager->set_record (!newDisableInput); + pulseManager->restart (); + } +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ + if ( passForm->isVisible() && !embedMode ) slotClosePass(); if ( sessionStatusDlg->isVisible() || embedMode ) @@ -4980,9 +4995,9 @@ void ONMainWindow::slotRetResumeSess ( bool result, bool sound=true; int sndSystem=PULSE; QString sndPort; -#ifndef Q_OS_WIN +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) sndPort="4713"; -#endif +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ bool startSoundServer=true; bool sshSndTunnel=true; @@ -5019,9 +5034,9 @@ void ONMainWindow::slotRetResumeSess ( bool result, sndSystem=ARTS; if ( sndsys=="esd" ) sndSystem=ESD; -#ifndef Q_OS_WIN +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) sndPort=st->setting()->value ( sid+"/sndport" ).toString(); -#endif +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ startSoundServer=st->setting()->value ( sid+"/startsoundsystem", true ).toBool(); @@ -5032,7 +5047,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, } -#ifndef Q_OS_WIN +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) bool defPort=st->setting()->value ( sid+ "/defsndport",true ).toBool(); if ( defPort ) @@ -5047,25 +5062,24 @@ void ONMainWindow::slotRetResumeSess ( bool result, break; } } -#endif +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ sshSndTunnel=st->setting()->value ( sid+"/soundtunnel", true ).toBool(); -#ifdef Q_OS_WIN - switch ( sndSystem ) - { - case PULSE: - if(!pulseStarted && sound) - { - startPulsed(); - } - sndPort=QString::number ( pulsePort ); - break; - case ESD: - sndPort=QString::number ( esdPort ); - break; +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) + if ((sound) && (!(pulseManager->is_server_running ()))) { + pulseManager->start (); } -#endif + + switch (sndSystem) { + case PULSE: + sndPort = QString::number (pulseManager->getPulsePort ()); + break; + case ESD: + sndPort = QString::number (pulseManager->getEsdPort ()); + break; + } +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ delete st; @@ -5276,7 +5290,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, } else { -#ifndef Q_OS_WIN +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) if ( QFile::exists(homeDir+"/.config/pulse/cookie") ) { pulsecookie_filename = homeDir+"/.config/pulse/cookie"; } @@ -5290,49 +5304,37 @@ void ONMainWindow::slotRetResumeSess ( bool result, resumingSession.sessionId+ "/.pulse-cookie", this, SLOT ( slotPCookieReady ( bool, QString,int ))); } -#else - QString cooFile= - wapiShortFileName ( homeDir ) + - "/.x2go/pulse/.pulse-cookie"; +#else /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ + QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir () + + "/.pulse-cookie").absolutePath ()); QString destFile="$HOME/.x2go/C-"+ resumingSession.sessionId+ "/.pulse-cookie"; sshConnection->copyFile(cooFile, destFile, this, SLOT ( slotPCookieReady ( bool, QString,int ))); parecTunnelOk=true; -#endif +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ } } if ( sndSystem==ESD ) { -#ifndef Q_OS_WIN +#ifdef Q_OS_LINUX sshConnection->copyFile(homeDir+"/.esd_auth", "$HOME/.esd_auth" ); -#else - QString cooFile= - wapiShortFileName ( homeDir ) + - "/.x2go/pulse/.esd_auth"; +#else /* defined (Q_OS_LINUX) */ + QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir () + + "/.esd_auth").absolutePath ()); QString destFile="$HOME/.esd_auth"; sshConnection->copyFile(cooFile, destFile ); - -#endif +#endif /* defined (Q_OS_LINUX) */ } -#ifndef Q_OS_WIN +/* Windows and Darwin are covered by PulseManager. */ +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) if ( startSoundServer ) { soundServer=new QProcess ( this ); QString acmd="artsd",ecmd="esd"; -#ifdef Q_OS_DARWIN - QStringList env = soundServer->environment(); - QDir dir ( appDir ); - dir.cdUp(); - dir.cd ( "esd" ); - env.insert ( 0,"DYLD_LIBRARY_PATH="+ - dir.absolutePath() ); - soundServer->setEnvironment ( env ); - ecmd="\""+dir.absolutePath() +"\"/esd"; -#endif //Q_OS_DARWIN if ( sndSystem==ESD ) soundServer->start ( ecmd+ @@ -5343,11 +5345,11 @@ void ONMainWindow::slotRetResumeSess ( bool result, resumingSession.sndPort ); sndPort=resumingSession.sndPort; } -#endif //Q_OS_WIN +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ if ( sshSndTunnel ) { const char* okSlot=0; -#ifdef Q_OS_WIN +#ifdef Q_OS_WIN /* FIXME: Do we need explicit parec support in PulseManager? */ if ( sndSystem==PULSE ) { parecTunnelOk=false; @@ -6481,6 +6483,29 @@ x2goSession ONMainWindow::getNewSessionFromString ( const QString& string ) return s; } +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) +void ONMainWindow::pulseManagerWrapper () { +#ifdef Q_OS_WIN + if (!embedMode || !config.confSnd || + (config.confSnd && config.useSnd)) +#endif /* defined (Q_OS_WIN) */ + { + pulseManagerThread = new QThread (0); + pulseManager = new PulseManager (); + + pulseManager->moveToThread (pulseManagerThread); + + /* + * Spawn PulseManager::start() once the thread started up successfully. + * Another means of doing that would be via + * QMetaObject::invokeMethod (pulseManager, "start", Qt::QueuedConnection); + */ + connect (pulseManagerThread, SIGNAL (started ()), pulseManager, SLOT (start ())); + + pulseManagerThread->start (); + } +} +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ void ONMainWindow::slotAppDialog() { @@ -10050,15 +10075,11 @@ void ONMainWindow::startWinServers() QString etcDir=homeDir+"/.x2go/etc"; QDir dr ( homeDir ); - pulseServer=0l; - WinServerStarter* xStarter = new WinServerStarter ( WinServerStarter::X, this ); WinServerStarter* sshStarter = new WinServerStarter ( WinServerStarter::SSH, this ); - - if ( !embedMode || !config.confFS || ( config.confFS && config.useFs ) ) { @@ -10067,14 +10088,7 @@ void ONMainWindow::startWinServers() generateEtcFiles(); sshStarter->start(); } - if(embedMode) - { - if ( !config.confSnd || - ( config.confSnd && config.useSnd ) ) - { - startPulsed(); - } - } + // #ifdef CFGCLIENT //x2goDebug<<"Xorg settings: "<< startXorgOnStart <<" useXming: "<< useXming; @@ -10148,177 +10162,6 @@ void ONMainWindow::removeCygwinEntry() } -void ONMainWindow::startPulsed() -{ -#ifdef Q_OS_WIN - if(pulseStarted) - { - return; - } - pulseVersionTest=new QProcess ( 0 ); - pulseVersionTest->start ( "pulse\\pulseaudio.exe --version" ); - - pulseVersionTest->waitForFinished(); - QString pulseVersionLine= - pulseVersionTest->readAllStandardOutput().replace("\n"," ").simplified(); - - x2goDebug <<"PulseAudio version line: "<<pulseVersionLine; - if (pulseVersionLine.contains("pulseaudio 0.", Qt::CaseInsensitive)) - pulseVersionIsLegacy = true; - if (pulseVersionLine.contains("pulseaudio 1.", Qt::CaseInsensitive)) - pulseVersionIsLegacy = true; - if (pulseVersionLine.contains("pulseaudio 2.", Qt::CaseInsensitive)) - pulseVersionIsLegacy = true; - - if (pulseVersionIsLegacy) - { - x2goDebug <<"PulseAudio <= 2.1 detected. PulseAudio will automatically use .pulse-cookie"; - } - else - { - x2goDebug <<"PulseAudio >= 3.0 detected. X2Go Client will tell PulseAudio to use .pulse-cookie."; - } -#endif - while ( isServerRunning ( pulsePort ) ) - ++pulsePort; - esdPort=pulsePort+1; - while ( isServerRunning ( esdPort ) ) - ++esdPort; - - // The permanent dir for the pulse auth cookie - pulseBaseDir=homeDir+"/.x2go/pulse"; - QDir dr ( homeDir ); - dr.mkpath ( pulseBaseDir ); - - // The tempoerary dir for config.pa (and pulse.log if it exists) - pulseDir=pulseBaseDir; - pulseDir=wapiShortFileName ( pulseDir ); - x2goDebug<<"PulseAudio template: "<<pulseDir+"/tmp"; - QTemporaryFile* fl=new QTemporaryFile ( pulseDir+"/tmp" ); - fl->open(); - pulseDir=fl->fileName(); - fl->close(); - delete fl; - QFile::remove ( pulseDir ); - dr.mkpath ( pulseDir ); - - x2goDebug<<"PulseAudio tmp file: "<<pulseDir; - - QStringList pEnv=QProcess::systemEnvironment(); - for ( int i=0; i<pEnv.size(); ++i ) - { - if ( pEnv[i].indexOf ( "USERPROFILE=" ) !=-1 ) - pEnv[i]="USERPROFILE="+ - QDir::toNativeSeparators( wapiShortFileName( pulseBaseDir )); - if ( pEnv[i].indexOf ( "TEMP=" ) !=-1 ) - pEnv[i]="TEMP="+pulseDir; - if ( pEnv[i].indexOf ( "USERNAME=" ) !=-1 ) - pEnv[i]="USERNAME=pulseuser"; - } - - QFile file ( pulseDir+"/config.pa" ); - if ( !file.open ( QIODevice::WriteOnly | QIODevice::Text ) ) - return; - QTextStream out ( &file ); - /* - Reference: - http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modul... - - Setting auth-cookie fixes bug #422 - - PulseAudio 6.0 changed the path that auth-cookie is relative to, so - Tanu Kaskinen recommended we specify the absolute path instead. - The abs path works with at least 5.0 and 6.0 - */ - if (pulseVersionIsLegacy) - { - out << "load-module module-native-protocol-tcp port="+ - QString::number ( pulsePort ) <<endl; - } - else - { - pulseCookieArg="auth-cookie="+ - QDir::toNativeSeparators (wapiShortFileName( pulseBaseDir))+ - "\\.pulse-cookie"; - // Double backslashes are required in config.pa - pulseCookieArg.replace("\\", "\\\\"); - out << "load-module module-native-protocol-tcp port="+ - QString::number ( pulsePort )+" "+pulseCookieArg <<endl; - } - out << "load-module module-esound-protocol-tcp port="+ - QString::number ( esdPort ) <<endl; - out << "load-module module-waveout"; -#ifdef Q_OS_WIN - if(pulseNoRecord) - out << " record=0"; -#endif - out << endl; - file.close(); - pulseServer=new QProcess ( 0 ); - pulseServer->setEnvironment ( pEnv ); - pulseArgs.clear(); -#ifdef Q_OS_WIN - // FIXME: Explain why this dir needs to be created. - pulseRuntimeDir=pulseBaseDir+"/.pulse/"+QHostInfo::localHostName ()+"-runtime"; - QDir drr(pulseRuntimeDir); - if (!drr.exists()) - drr.mkpath(drr.path()); - if (QFile::exists(pulseRuntimeDir+"/pid")) - QFile::remove(pulseRuntimeDir+"/pid"); - - pulseDir=QDir::toNativeSeparators( pulseDir ); - pulseArgs<<"--exit-idle-time=-1"<<"-n"<<"-F"<<pulseDir+"\\config.pa"; - if (debugging) - pulseArgs<<"--log-level=debug"<<"--verbose"<<"--log-target=file:"+pulseDir+"\\pulse.log"; - /* - Fix for x2goclient bug #526. - Works Around PulseAudio bug #80772. - Tested with PulseAudio 5.0. - This argument will not cause PulseAudio 0.9.6 or 1.1 (the legacy versions) - to fail to launch. - However, 0.9.6 defaults to normal priority anyway, - and 1.1 ignores it for some reason. - So yes, the fact that 1.1 ignores it would be a bug in x2goclient if we - ever ship 1.1 again. - */ - if (QSysInfo::WindowsVersion == QSysInfo::WV_XP || - QSysInfo::WindowsVersion == QSysInfo::WV_2003 ) - { - x2goDebug<<"Windows XP or Server 2003 (R2) detected."; - x2goDebug<<"Setting PulseAudio to \"normal\" CPU priority."; - pulseArgs<<"--high-priority=no"; - } -#else - pulseArgs<<"--exit-idle-time=-1"<<"-n"<<"-F"<<pulseDir+"/config.pa"; -#endif - pulseServer->setWorkingDirectory ( QDir::toNativeSeparators ( - wapiShortFileName ( appDir+"/pulse/" ) ) ); - pulseServer->start ( "pulse\\pulseaudio.exe",pulseArgs ); - - x2goDebug<<"Starting pulse\\pulseaudio.exe "<<pulseArgs.join ( " " ) << - " working dir: "<< - QDir::toNativeSeparators ( wapiShortFileName ( appDir+"/pulse" ) ); - - pulseTimer=new QTimer(this); - - connect (pulseTimer, SIGNAL(timeout()), this, SLOT(slotCheckPulse())); - x2goDebug<<"Connected timer."; - pulseTimer->start(2000); - pulseStarted=true; -} - -void ONMainWindow::slotCheckPulse() -{ - //restart pulse server - if(pulseServer->state()!=QProcess::Running) - { - pulseServer->start ( "pulse\\pulseaudio.exe",pulseArgs ); - - x2goDebug<<"Restarting pulse\\pulseaudio.exe "<<pulseArgs.join ( " " ); - - } -} - // #ifdef CFGCLIENT void ONMainWindow::xorgSettings() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index e0e4d26..7430bb4 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -52,6 +52,11 @@ #include <windows.h> #include <QSysInfo> #endif + +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) +#include "pulsemanager.h" +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ + /** @author Oleksandr Shneyder */ @@ -248,7 +253,7 @@ class ONMainWindow; class WinServerStarter: public QThread { public: - enum daemon {X,SSH,PULSE}; + enum daemon {X,SSH}; WinServerStarter ( daemon server, ONMainWindow * par ); void run(); private: @@ -583,7 +588,6 @@ public: #ifdef Q_OS_WIN static QString cygwinPath ( const QString& winPath ); void startXOrg(); - void startPulsed(); static bool haveCygwinEntry(); static void removeCygwinEntry(); static QString U3DevicePath() @@ -839,14 +843,7 @@ private: PROCESS_INFORMATION sshd; bool winSshdStarted; static QString u3Device; - bool pulseStarted; - - QString pulseVersionTestOutput; - QProcess* pulseVersionTest; - bool pulseVersionIsLegacy; - QProcess* pulseServer; - QStringList pulseArgs; - QTimer* pulseTimer; + int xDisplay; int sshdPort; bool winServersReady; @@ -856,14 +853,6 @@ private: bool cyEntry; - QString pulseDir; - QString pulseBaseDir; - QString pulseRuntimeDir; - QString pulseCookieArg; - int pulsePort; - bool pulseNoRecord; - - int esdPort; bool maximizeProxyWin; int proxyWinWidth; int proxyWinHeight; @@ -876,6 +865,12 @@ private: QTextEdit* stInfo; int localDisplayNumber; +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) + QThread *pulseManagerThread; + PulseManager *pulseManager; +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ + + SVGFrame* ln; int tunnel; int sndTunnel; @@ -1019,9 +1014,14 @@ private slots: void startWinServers(); void slotCheckXOrgLog(); void slotCheckXOrgConnection(); - void slotCheckPulse(); void slotStartParec (); #endif + +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) +private slots: + void pulseManagerWrapper (); +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ + private slots: void slotAppDialog(); void slotShowPassForm(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit dadd9223491660f4522ae676ed8e6c07930d97a9 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed May 4 23:42:24 2016 +0200 src/pulsemanager.h: move x2gologdebug.h inclusion into implementation file. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 1 + src/pulsemanager.h | 1 - 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 50a8ead..ca502cb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -256,6 +256,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. - src/mediawidget.cpp: reflect new capabilities through PulseManager. + - src/pulsemanager.h: move x2gologdebug.h inclusion into implementation + file. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index fb0d5eb..6f200a2 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -22,6 +22,7 @@ #include <QSysInfo> #include "pulsemanager.h" +#include "x2gologdebug.h" #ifndef DEBUG #define DEBUG_UNDEF diff --git a/src/pulsemanager.h b/src/pulsemanager.h index af7ae77..4c82f19 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -37,7 +37,6 @@ #include <assert.h> #include <cstdint> -#include "x2gologdebug.h" #include "x2gosettings.h" class PulseManager: public QObject { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5e200e30f483f287de38d32922cb47cb81508ae3 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed May 4 23:54:20 2016 +0200 src/onmainwindow.cpp: fix compile errors due to misspelled function names. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0691a8e..756f452 100644 --- a/debian/changelog +++ b/debian/changelog @@ -262,6 +262,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium to stdout. - src/configdialog.cpp: fix compile error by removing obsolete (and now faulty) line for removed restart message. + - src/onmainwindow.cpp: fix compile errors due to misspelled function + names. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index ed8335b..2308778 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5073,10 +5073,10 @@ void ONMainWindow::slotRetResumeSess ( bool result, switch (sndSystem) { case PULSE: - sndPort = QString::number (pulseManager->getPulsePort ()); + sndPort = QString::number (pulseManager->get_pulse_port ()); break; case ESD: - sndPort = QString::number (pulseManager->getEsdPort ()); + sndPort = QString::number (pulseManager->get_esd_port ()); break; } #endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2d83e1584cab648415623932f4a3f670ce06fc99 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed May 4 23:43:22 2016 +0200 src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly to stdout. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ca502cb..4a5d292 100644 --- a/debian/changelog +++ b/debian/changelog @@ -258,6 +258,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/mediawidget.cpp: reflect new capabilities through PulseManager. - src/pulsemanager.h: move x2gologdebug.h inclusion into implementation file. + - src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly + to stdout. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 6f200a2..93b9edb 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -563,10 +563,10 @@ void PulseManager::on_pulse_finished (int exit_code) { QByteArray ba (pulse_server_->readAllStandardOutput ()); char *data = ba.data (); - std::cout << data; + x2goDebug << data; ba = pulse_server_->readAllStandardError (); data = ba.data (); - std::cout << data; + x2goDebug << data; // Clean up QDir work_dir (app_dir_); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5ad05609dbf48b022599e084b2ad93cbad92d303 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed May 4 23:53:28 2016 +0200 src/configdialog.cpp: fix compile error by removing obsolete (and now faulty) line for removed restart message. --- debian/changelog | 2 ++ src/configdialog.cpp | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4a5d292..0691a8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -260,6 +260,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium file. - src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly to stdout. + - src/configdialog.cpp: fix compile error by removing obsolete (and now + faulty) line for removed restart message. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/configdialog.cpp b/src/configdialog.cpp index 2dfcf397..d1973d0 100644 --- a/src/configdialog.cpp +++ b/src/configdialog.cpp @@ -358,7 +358,6 @@ ConfigDialog::ConfigDialog ( QWidget * parent, Qt::WindowFlags f ) tabWidg->addTab (frp, tr ("PulseAudio settings")); QVBoxLayout* l = new QVBoxLayout (frp); cbNoRecord = new QCheckBox (tr ("Disable sound input"), frp); - lw->setWordWrap (true); l->addWidget (cbNoRecord); l->addStretch (1); cbNoRecord->setChecked (st.setting ()->value ("pulse/norecord", false).toBool ()); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1f9ccfe2a25ed170821a8e7aded01478363ec31c Author: Mihai Moldovan <ionic@ionic.de> Date: Wed May 4 23:59:53 2016 +0200 src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 756f452..31cb5f3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -264,6 +264,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium faulty) line for removed restart message. - src/onmainwindow.cpp: fix compile errors due to misspelled function names. + - src/pulsemanager.cpp: let start () act as a wrapper and do nothing if + the PA server is already running. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 93b9edb..98f2a97 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -105,7 +105,9 @@ PulseManager::~PulseManager () { } void PulseManager::start () { - assert (!is_server_running ()); + if (is_server_running ()) { + return; + } delete (pulse_server_); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 37dd92da27e805a776bac1fa122f9fd6a3741b93 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri May 6 23:41:52 2016 +0200 src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. --- debian/changelog | 1 + src/onmainwindow.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 31cb5f3..af00dfe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -266,6 +266,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium names. - src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. + - src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 2308778..d473daf 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -1517,7 +1517,7 @@ void ONMainWindow::closeClient() } #endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ -#ifndef (Q_OS_WIN) +#ifndef Q_OS_WIN if ( userSshd && sshd ) { x2goDebug<<"Terminating the OpenSSH server ..."; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 466594ba90729ff5a6665823b91c3b359a6023d6 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri May 6 23:44:00 2016 +0200 src/onmainwindow.cpp: convert QDir object to QString for further processing. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index af00dfe..51f2975 100644 --- a/debian/changelog +++ b/debian/changelog @@ -267,6 +267,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. - src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. + - src/onmainwindow.cpp: convert QDir object to QString for further + processing. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index d473daf..583d997 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5305,7 +5305,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, "/.pulse-cookie", this, SLOT ( slotPCookieReady ( bool, QString,int ))); } #else /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ - QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir () + + QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir ().absolutePath () + "/.pulse-cookie").absolutePath ()); QString destFile="$HOME/.x2go/C-"+ resumingSession.sessionId+ @@ -5322,7 +5322,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, sshConnection->copyFile(homeDir+"/.esd_auth", "$HOME/.esd_auth" ); #else /* defined (Q_OS_LINUX) */ - QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir () + + QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir ().absolutePath () + "/.esd_auth").absolutePath ()); QString destFile="$HOME/.esd_auth"; sshConnection->copyFile(cooFile, -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4204765c31f4012e1404a599e235d40e02cab5b8 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri May 6 23:45:55 2016 +0200 src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 51f2975..0fd3d1a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -269,6 +269,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. - src/onmainwindow.cpp: convert QDir object to QString for further processing. + - src/onmainwindow.cpp: make use of new PulseManager::start () behavior + and always use it, no matter whether server is up already or not. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 583d997..64c3831 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5067,7 +5067,11 @@ void ONMainWindow::slotRetResumeSess ( bool result, true ).toBool(); #if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) - if ((sound) && (!(pulseManager->is_server_running ()))) { + if (sound) { + /* + * PulseManager::start () can be called even if the server + * is already started. In this case, it will do nothing. + */ pulseManager->start (); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e162d32a82ff97bc0971dd0fce32cf992c4ab2d7 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri May 6 23:49:35 2016 +0200 src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. Otherwise we'll get compile failures on non-Windows platforms. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1ceb4e1..d951edd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -272,6 +272,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. - src/pulsemanager.cpp: fix compile error due to typo. + - src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. Otherwise + we'll get compile failures on non-Windows platforms. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ca7926c..21049ca 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -176,6 +176,11 @@ void PulseManager::start_osx () { } void PulseManager::start_win () { +/* + * Some code in here is Windows-specific and will lead to compile + * failures on other platforms. Make this a stub for everything non-Windows. + */ +#ifdef Q_OS_WIN server_args_ = QStringList (); server_args_ << "--exit-idle-time=-1" << "-n" << "-F" << QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () @@ -215,6 +220,7 @@ void PulseManager::start_win () { start_generic (); } +#endif /* defined (Q_OS_WIN) */ } void PulseManager::start_linux () { @@ -419,11 +425,18 @@ bool PulseManager::generate_server_config () { * The absolute path works with at least 5.0 and 6.0. */ if (pulse_version_major_ > 2) { - QString tmp_auth_cookie = QDir::toNativeSeparators (wapiShortFileName (pulse_dir_.absolutePath ())) - + "\\.pulse-cookie"; + QString clean_pulse_dir = pulse_dir_.absolutePath (); + +#ifdef Q_OS_WIN + clean_pulse_dir = wapiShortFileName (clean_pulse_dir); +#endif /* defined (Q_OS_WIN) */ + QString tmp_auth_cookie = QDir::toNativeSeparators (clean_pulse_dir + "/.pulse-cookie"); + +#ifdef Q_OS_WIN /* Double backslashes are required in config.pa. */ tmp_auth_cookie.replace ("\\", "\\\\"); +#endif /* defined (Q_OS_WIN) */ config_tmp_file_stream << " auth-cookie=" + tmp_auth_cookie; } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 491ddad514d45d6e1eab66201fcb1d5b894ec98e Author: Mihai Moldovan <ionic@ionic.de> Date: Fri May 6 23:47:53 2016 +0200 src/pulsemanager.cpp: fix compile error due to typo. --- debian/changelog | 1 + src/pulsemanager.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 0fd3d1a..1ceb4e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -271,6 +271,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium processing. - src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. + - src/pulsemanager.cpp: fix compile error due to typo. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 98f2a97..ca7926c 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -165,7 +165,7 @@ void PulseManager::start_osx () { #ifdef DEBUG server_args_ << "--log-level=debug" << "--verbose" - << "--log-target=file:" pulse_dir_.absolutePath () + "/pulse.log"; + << "--log-target=file:" + pulse_dir_.absolutePath () + "/pulse.log"; #endif // defined (DEBUG) if (generate_server_config () && generate_client_config ()) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b24ee882846e4ee0ec170727d98820579f26360c Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 02:58:01 2016 +0200 src/pulsemanager.{cpp,h}: add debugging setter and private variable. --- debian/changelog | 1 + src/pulsemanager.cpp | 7 ++++++- src/pulsemanager.h | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d951edd..686263b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -274,6 +274,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: fix compile error due to typo. - src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. Otherwise we'll get compile failures on non-Windows platforms. + - src/pulsemanager.{cpp,h}: add debugging setter and private variable. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 21049ca..6fe8418 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -43,7 +43,8 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), pulse_version_micro_ (0), pulse_version_misc_ (""), record_ (true), - playback_ (true) { + playback_ (true), + debug_ (false) { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); pulse_dir_.cd (pulse_X2Go_.mid (1)); @@ -698,6 +699,10 @@ bool PulseManager::set_playback (bool playback) { return (ret); } +void PulseManager::set_debug (bool debug) { + debug_ = debug; +} + void PulseManager::restart () { if (pulse_server_ && is_server_running ()) shutdown (); diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 4c82f19..1d06de0 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -58,6 +58,7 @@ class PulseManager: public QObject { bool set_esd_port (std::uint16_t esd_port); bool set_record (bool record); bool set_playback (bool playback); + bool set_debug (bool debug); public slots: @@ -120,6 +121,7 @@ class PulseManager: public QObject { bool record_; bool playback_; + bool debug_; }; #ifdef NDEBUG_DEFINE -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit dbcd77ac9bf9786d3cbe46e55fb6616842c698cf Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 03:02:26 2016 +0200 src/pulsemanager.{cpp,h}: port to new debugging feature. --- debian/changelog | 1 + src/pulsemanager.cpp | 69 +++++++++++++++++++++----------------------------- src/pulsemanager.h | 11 +------- 3 files changed, 31 insertions(+), 50 deletions(-) diff --git a/debian/changelog b/debian/changelog index 686263b..6271c06 100644 --- a/debian/changelog +++ b/debian/changelog @@ -275,6 +275,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. Otherwise we'll get compile failures on non-Windows platforms. - src/pulsemanager.{cpp,h}: add debugging setter and private variable. + - src/pulsemanager.{cpp,h}: port to new debugging feature. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 6fe8418..ed841eb 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -24,11 +24,6 @@ #include "pulsemanager.h" #include "x2gologdebug.h" -#ifndef DEBUG -#define DEBUG_UNDEF -#define DEBUG -#endif // defined (NDEBUG) - PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), pulse_X2Go_ ("/.x2go/pulse"), server_binary_ (QString ("")), @@ -144,10 +139,10 @@ void PulseManager::start_generic () { connect (pulse_server_, SIGNAL (finished (int)), this, SLOT (slot_on_pulse_finished (int))); -#ifdef DEBUG - // Give PA a little time to come up. - QTimer::singleShot (3000, this, SLOT (slot_play_startup_sound ())); -#endif // defined (DEBUG) + if (debug_) { + // Give PA a little time to come up. + QTimer::singleShot (3000, this, SLOT (slot_play_startup_sound ())); + } } } @@ -163,11 +158,11 @@ void PulseManager::start_osx () { + QString::number (pulse_version_minor_) + "/modules").absolutePath () << "--high-priority"; -#ifdef DEBUG - server_args_ << "--log-level=debug" - << "--verbose" - << "--log-target=file:" + pulse_dir_.absolutePath () + "/pulse.log"; -#endif // defined (DEBUG) + if (debug_) { + server_args_ << "--log-level=debug" + << "--verbose" + << "--log-target=file:" + pulse_dir_.absolutePath () + "/pulse.log"; + } if (generate_server_config () && generate_client_config ()) { cleanup_client_dir (); @@ -191,12 +186,11 @@ void PulseManager::start_win () { + "." + QString::number (pulse_version_minor_) + "/modules/").absolutePath ()); -#ifdef DEBUG - /* FIXME: need a way to request debugging. */ - server_args_ << "--log-level=debug" - << "--verbose" - << "--log-target=file:" + pulse_dir_.absolutePath () + "\\pulse.log"; -#endif // defined (DEBUG) + if (debug_) { + server_args_ << "--log-level=debug" + << "--verbose" + << "--log-target=file:" + pulse_dir_.absolutePath () + "\\pulse.log"; + } /* * Fix for x2goclient bug #526. @@ -550,27 +544,27 @@ void PulseManager::create_client_dir () { } void PulseManager::slot_play_startup_sound () { -#ifdef DEBUG - QProcess play_file (0); - QString play_file_binary (app_dir_); - QString play_file_file (play_file_binary); + if (!debug_) { + QProcess play_file (0); + QString play_file_binary (app_dir_); + QString play_file_file (play_file_binary); #ifdef Q_OS_DARWIN - play_file_binary += "/../exe/paplay"; - play_file_file += "/../Resources/startup.wav"; + play_file_binary += "/../exe/paplay"; + play_file_file += "/../Resources/startup.wav"; #elif defined (Q_OS_WIN) - playFileBinary += "/pulse/paplay.exe"; - playFileFile += "/startup.wav"; + playFileBinary += "/pulse/paplay.exe"; + playFileFile += "/startup.wav"; #endif // defined (Q_OS_DARWIN) - QStringList args (play_file_file); - play_file.setWorkingDirectory (server_working_dir_); - play_file.setProcessEnvironment (env_); - play_file.start (play_file_binary, args); + QStringList args (play_file_file); + play_file.setWorkingDirectory (server_working_dir_); + play_file.setProcessEnvironment (env_); + play_file.start (play_file_binary, args); - if (play_file.waitForStarted ()) - play_file.waitForFinished (); -#endif // defined (DEBUG) + if (play_file.waitForStarted ()) + play_file.waitForFinished (); + } } void PulseManager::on_pulse_finished (int exit_code) { @@ -714,8 +708,3 @@ void PulseManager::restart () { QProcess::ProcessState PulseManager::state () { return (state_); } - -#ifdef DEBUG_UNDEF -#undef DEBUG -#undef DEBUG_UNDEF -#endif // defined (DEBUG_UNDEF) diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 1d06de0..9d6cec5 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -20,11 +20,6 @@ #ifndef PULSEMANAGER_H #define PULSEMANAGER_H -#ifdef NDEBUG -#define NDEBUG_DEFINE -#undef NDEBUG -#endif // defined (NDEBUG) - #include <iostream> #include <QDir> #include <QTcpSocket> @@ -121,12 +116,8 @@ class PulseManager: public QObject { bool record_; bool playback_; + bool debug_; }; -#ifdef NDEBUG_DEFINE -#define NDEBUG -#undef NDEBUG_DEFINE -#endif // defined (NDEBUG_DEFINE) - #endif // PULSEMANAGER_H -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 275922ed1062189f45fbd3d5eb5c005d94b481ec Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 03:10:34 2016 +0200 src/onmainwindow.cpp: port to new debugging feature of PulseManager. --- debian/changelog | 1 + src/onmainwindow.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6271c06..08bd28b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -276,6 +276,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium we'll get compile failures on non-Windows platforms. - src/pulsemanager.{cpp,h}: add debugging setter and private variable. - src/pulsemanager.{cpp,h}: port to new debugging feature. + - src/onmainwindow.cpp: port to new debugging feature of PulseManager. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 64c3831..7b6a768 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -2129,7 +2129,12 @@ void ONMainWindow::slotConfig() (QVariant) false).toBool (); if (oldDisableInput != newDisableInput) { - pulseManager->set_record (!newDisableInput); + bool ret = pulseManager->set_record (!newDisableInput); + + if (!ret) { + x2goDebug << "Failed to change recording status of PulseManager. PulseAudio not started?" << endl; + } + pulseManager->restart (); } #endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ @@ -6497,6 +6502,8 @@ void ONMainWindow::pulseManagerWrapper () { pulseManagerThread = new QThread (0); pulseManager = new PulseManager (); + pulseManager->set_debug (debugging); + pulseManager->moveToThread (pulseManagerThread); /* -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 218b721830757cfb609e79f95d07ca1c5571611c Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 22:04:25 2016 +0200 res/sound: add startup.wav sound to be played back when starting the PA daemon in debug mode. --- debian/changelog | 2 ++ res/sound/startup.wav | Bin 0 -> 211244 bytes 2 files changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index a3d9596..34bfde6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -279,6 +279,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: port to new debugging feature of PulseManager. - src/pulsemanager.h: fix compile error due to mismatching function declaration for set_debug (). + - res/sound: add startup.wav sound to be played back when starting the PA + daemon in debug mode. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/res/sound/startup.wav b/res/sound/startup.wav new file mode 100644 index 0000000..f6b4ff2 Binary files /dev/null and b/res/sound/startup.wav differ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d250d3ead733732ee0dc3d45ab0218da4102d848 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 03:22:13 2016 +0200 src/pulsemanager.h: fix compile error due to mismatching function declaration for set_debug (). --- debian/changelog | 2 ++ src/pulsemanager.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 08bd28b..a3d9596 100644 --- a/debian/changelog +++ b/debian/changelog @@ -277,6 +277,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.{cpp,h}: add debugging setter and private variable. - src/pulsemanager.{cpp,h}: port to new debugging feature. - src/onmainwindow.cpp: port to new debugging feature of PulseManager. + - src/pulsemanager.h: fix compile error due to mismatching function + declaration for set_debug (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 9d6cec5..b3b7421 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -53,7 +53,7 @@ class PulseManager: public QObject { bool set_esd_port (std::uint16_t esd_port); bool set_record (bool record); bool set_playback (bool playback); - bool set_debug (bool debug); + void set_debug (bool debug); public slots: -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0f2cc9feddee203fb3dd3d5a9bc6d976b021baae Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 22:38:37 2016 +0200 macbuild.sh: add support for copying resource files. Currently only used for startup.wav. --- debian/changelog | 2 ++ macbuild.sh | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index e7d4dd8..b254e32 100644 --- a/debian/changelog +++ b/debian/changelog @@ -283,6 +283,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium daemon in debug mode. - src/pulsemanager.cpp: don't time out while trying to start PA or paplay. "Handle" errors by printing out debug messages. + - macbuild.sh: add support for copying resource files. Currently only used + for startup.wav. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index d5aadfe..f57d43c 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -158,6 +158,7 @@ BUILD_DIR="${TOP_DIR}/client_build" APPBUNDLE="${BUILD_DIR}/${NAME}.app" EXE_DIR="${APPBUNDLE}/Contents/exe/" FRAMEWORKS_DIR="${APPBUNDLE}/Contents/Frameworks/" +RESOURCES_DIR="${APPBUNDLE}/Contents/Resources/" DMGFILE="${BUILD_DIR}/${NAME}.dmg" PROJECT="${TOP_DIR}/${NAME}.pro" PKG_DMG="${TOP_DIR}/pkg-dmg" @@ -179,6 +180,7 @@ PULSEAUDIO_BINARIES=( "pulseaudio" "esdcompat" "pacat" "pacmd" "pactl" PULSEAUDIO_LIBRARIES=( "libpulse-simple.0.dylib" "pulse-8.0" "pulseaudio" ) +RESOURCE_FILES=( "audio/startup.wav" ) typeset -a special_files_regex special_files_regex+=( "pulseaudio/libpulsecommon-[0-9]\.[0-9]\.dylib" @@ -328,6 +330,12 @@ mkdir -p "${FRAMEWORKS_DIR}/" phase "Copying nxproxy" cp -av "${NXPROXY}" "${EXE_DIR}/" +phase "Copying misc resources" +typeset cur_res_file +for cur_res_file in ${RESOURCE_FILES[@]}; do + cp -av "res/${cur_res_file}" "${RESOURCES_DIR}/" +done + phase "Copying PulseAudio" for cur_binary in ${PULSEAUDIO_BINARIES_FULL[@]}; do cp -av "${cur_binary}" "${EXE_DIR}/" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 770d950a9b70ca679da8d0f48e74eece5c0ed875 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 22:28:38 2016 +0200 src/pulsemanager.cpp: don't time out while trying to start PA or paplay. "Handle" errors by printing out debug messages. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 34bfde6..e7d4dd8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -281,6 +281,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium declaration for set_debug (). - res/sound: add startup.wav sound to be played back when starting the PA daemon in debug mode. + - src/pulsemanager.cpp: don't time out while trying to start PA or paplay. + "Handle" errors by printing out debug messages. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ed841eb..ee6c63c 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -132,7 +132,12 @@ void PulseManager::start_generic () { pulse_server_->setWorkingDirectory (server_working_dir_); pulse_server_->start (server_binary_, server_args_); - if (pulse_server_->waitForStarted ()) { + + /* + * We may wait here, because PulseManager runs in a separate thread. + * Otherwise, we'd better use signals and slots to not block the main thread. + */ + if (pulse_server_->waitForStarted (-1)) { x2goDebug << "pulse started with arguments" << server_args_ << "; waiting for finish..."; state_ = QProcess::Running; @@ -144,6 +149,9 @@ void PulseManager::start_generic () { QTimer::singleShot (3000, this, SLOT (slot_play_startup_sound ())); } } + else { + x2goErrorf (27) << "PulseAudio failed to start! Sound support will not be available."; + } } void PulseManager::start_osx () { @@ -562,8 +570,12 @@ void PulseManager::slot_play_startup_sound () { play_file.setProcessEnvironment (env_); play_file.start (play_file_binary, args); - if (play_file.waitForStarted ()) + if (play_file.waitForStarted (-1)) { play_file.waitForFinished (); + } + else { + x2goErrorf (26) << "Unable to play startup sound! Something may be wrong."; + } } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3df2544261b04e9f5b87652dbcebc85dfa82abdc Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 22:46:06 2016 +0200 res: rename "sound" to "audio". --- debian/changelog | 1 + res/{sound => audio}/startup.wav | Bin 211244 -> 211244 bytes 2 files changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index b254e32..402faed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -285,6 +285,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium "Handle" errors by printing out debug messages. - macbuild.sh: add support for copying resource files. Currently only used for startup.wav. + - res: rename "sound" to "audio". [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/res/sound/startup.wav b/res/audio/startup.wav similarity index 100% rename from res/sound/startup.wav rename to res/audio/startup.wav -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 20810353dfec64d56c977c052053f421e2d504c5 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 7 22:55:50 2016 +0200 macbuild.sh: fix copying of resource files. --- debian/changelog | 1 + macbuild.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 402faed..794f606 100644 --- a/debian/changelog +++ b/debian/changelog @@ -286,6 +286,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: add support for copying resource files. Currently only used for startup.wav. - res: rename "sound" to "audio". + - macbuild.sh: fix copying of resource files. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index f57d43c..6e36348 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -333,7 +333,7 @@ cp -av "${NXPROXY}" "${EXE_DIR}/" phase "Copying misc resources" typeset cur_res_file for cur_res_file in ${RESOURCE_FILES[@]}; do - cp -av "res/${cur_res_file}" "${RESOURCES_DIR}/" + cp -av "${TOP_DIR}/res/${cur_res_file}" "${RESOURCES_DIR}/" done phase "Copying PulseAudio" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a145e8121f8e7ff431412bd96ac1690371f97910 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu May 12 23:18:23 2016 +0200 macbuild.sh: also add PA binaries to deduplication fixup list. --- debian/changelog | 1 + macbuild.sh | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 794f606..12164a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -287,6 +287,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium for startup.wav. - res: rename "sound" to "audio". - macbuild.sh: fix copying of resource files. + - macbuild.sh: also add PA binaries to deduplication fixup list. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 6e36348..f580d44 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -505,6 +505,13 @@ if [ "${BUNDLE}" = "1" ]; then done done + # Add binaries to all_files as well. + typeset entry="" + while read -r -d '' entry; do + echo "Adding ${entry} to all files" + all_files+=( "${entry}" ) + done < <(find "${EXE_DIR}" -type 'f' -executable -print0) + # Try to fixup files broken by duplicates removal. for all_entry in "${all_files[@]}"; do typeset otool_out="$(otool -L "${all_entry}")" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2c1c5ed83428f3de49faeb663c31e0680d0f9830 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu May 12 23:22:13 2016 +0200 macbuild.sh: don't error out while executing parse_otool_output (). --- debian/changelog | 1 + macbuild.sh | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index 12164a6..d04c683 100644 --- a/debian/changelog +++ b/debian/changelog @@ -288,6 +288,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - res: rename "sound" to "audio". - macbuild.sh: fix copying of resource files. - macbuild.sh: also add PA binaries to deduplication fixup list. + - macbuild.sh: don't error out while executing parse_otool_output (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index f580d44..62afe22 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -520,7 +520,9 @@ if [ "${BUNDLE}" = "1" ]; then # We need the return value of parse_otool_output(), but running # typeset foo="$(bar)" will give us the return value of typeset, not bar(). typeset dependencies="" + set +e dependencies="$(parse_otool_output "${otool_out}")" + set -e if [ "${?}" -eq "0" ]; then typeset line="" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 557d11596d916f2cc2bd459c163756a0489db112 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu May 12 23:24:03 2016 +0200 macbuild.sh: save return value of parse_otool_output (). Otherwise we'll fetch the return value of "set", which is not really what we need. --- debian/changelog | 2 ++ macbuild.sh | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d04c683..a51c296 100644 --- a/debian/changelog +++ b/debian/changelog @@ -289,6 +289,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: fix copying of resource files. - macbuild.sh: also add PA binaries to deduplication fixup list. - macbuild.sh: don't error out while executing parse_otool_output (). + - macbuild.sh: save return value of parse_otool_output (). Otherwise we'll + fetch the return value of "set", which is not really what we need. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 62afe22..5e7b336 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -515,6 +515,7 @@ if [ "${BUNDLE}" = "1" ]; then # Try to fixup files broken by duplicates removal. for all_entry in "${all_files[@]}"; do typeset otool_out="$(otool -L "${all_entry}")" + typeset -i tmp_ret="0" # Don't merge the declaration and initialization with the real value assignment. # We need the return value of parse_otool_output(), but running @@ -522,9 +523,10 @@ if [ "${BUNDLE}" = "1" ]; then typeset dependencies="" set +e dependencies="$(parse_otool_output "${otool_out}")" + tmp_ret="${?}" set -e - if [ "${?}" -eq "0" ]; then + if [ "${tmp_ret}" -eq "0" ]; then typeset line="" while read -r line; do #echo "dependency of ${all_entry}: ${line}" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0844739dcc3621609a2db9ac3f41f9df639ad650 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu May 12 23:45:16 2016 +0200 src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). Read standard output from temporary process, not our "main" server process (which at this point is not even started yet.) --- debian/changelog | 3 +++ src/pulsemanager.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a51c296..db3e3da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -291,6 +291,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - macbuild.sh: don't error out while executing parse_otool_output (). - macbuild.sh: save return value of parse_otool_output (). Otherwise we'll fetch the return value of "set", which is not really what we need. + - src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). Read + standard output from temporary process, not our "main" server process + (which at this point is not even started yet.) [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ee6c63c..d19494d 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -241,7 +241,7 @@ void PulseManager::fetch_pulseaudio_version () { /* Wait until the process exited again. */ if (tmp_server.waitForFinished ()) { /* Read stdout and split it up on newlines. */ - QByteArray ba (pulse_server_->readAllStandardOutput ()); + QByteArray ba (tmp_server.readAllStandardOutput ()); QString stdout_data (ba.data ()); QStringList stdout_list (stdout_data.split ("\n")); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 13c0e2ded3ebf9fae8dbaaf45500947fbbb76929 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jun 2 00:46:20 2016 +0200 src/pulsemanager.cpp: don't overwrite the temporary string variable for the current line with what was supposed to hold new data in fetch_pulseaudio_version (). --- debian/changelog | 3 +++ src/pulsemanager.cpp | 31 ++++++++++++++++++------------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/debian/changelog b/debian/changelog index db3e3da..2bbc588 100644 --- a/debian/changelog +++ b/debian/changelog @@ -294,6 +294,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). Read standard output from temporary process, not our "main" server process (which at this point is not even started yet.) + - src/pulsemanager.cpp: don't overwrite the temporary string variable for + the current line with what was supposed to hold new data in + fetch_pulseaudio_version (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index d19494d..032c018 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -259,24 +259,24 @@ void PulseManager::fetch_pulseaudio_version () { /* We should be at a digit now. */ bool numbers_found[3] = { false, false, false }; - QString tmp_str = QString (""); + QString tmp_ret_str = QString (""); for (QString::const_iterator cit = tmp_str.begin (); cit != tmp_str.end (); ++cit) { if (!(numbers_found[0])) { if (((*cit) >= '0') && ((*cit) <= '9')) { - tmp_str.append (*cit); + tmp_ret_str.append (*cit); } else if ((*cit) == '.') { /* First number part complete, let's convert the string and skip the period. */ numbers_found[0] = true; bool convert_success = false; - pulse_version_major_ = tmp_str.toUInt (&convert_success, 10); + pulse_version_major_ = tmp_ret_str.toUInt (&convert_success, 10); if (!convert_success) { x2goErrorf (20) << "Unable to convert major version number string to integer."; abort (); } - tmp_str = QString (""); + tmp_ret_str = QString (""); } else { x2goErrorf (21) << "Unexpected character found when parsing version string for major version number: '" << QString (*cit) << "'."; @@ -285,7 +285,7 @@ void PulseManager::fetch_pulseaudio_version () { } else if (!(numbers_found[1])) { if (((*cit) >= '0') && ((*cit) <= '9')) { - tmp_str.append (*cit); + tmp_ret_str.append (*cit); } else if (((*cit) == '.') || ((*cit) == '-')) { /* @@ -294,14 +294,14 @@ void PulseManager::fetch_pulseaudio_version () { */ numbers_found[1] = true; bool convert_success = false; - pulse_version_minor_ = tmp_str.toUInt (&convert_success, 10); + pulse_version_minor_ = tmp_ret_str.toUInt (&convert_success, 10); if (!convert_success) { x2goErrorf (22) << "Unable to convert minor version number string to integer."; abort (); } - tmp_str = QString (""); + tmp_ret_str = QString (""); if ((*cit) == '-') { /* @@ -318,20 +318,20 @@ void PulseManager::fetch_pulseaudio_version () { } else if (!(numbers_found[2])) { if (((*cit) >= '0') && ((*cit) <= '9')) { - tmp_str.append (*cit); + tmp_ret_str.append (*cit); } else if ((*cit) == '-') { /* Third number part complete, let's convert the string and skip the period. */ numbers_found[2] = true; bool convert_success = false; - pulse_version_micro_ = tmp_str.toUInt (&convert_success, 10); + pulse_version_micro_ = tmp_ret_str.toUInt (&convert_success, 10); if (!convert_success) { x2goErrorf (24) << "Unable to convert micro version number string to integer."; abort (); } - tmp_str = QString (""); + tmp_ret_str = QString (""); } else { x2goErrorf (25) << "Unexpected character found when parsing version string for micro version number: '" << QString (*cit) << "'."; @@ -340,12 +340,17 @@ void PulseManager::fetch_pulseaudio_version () { } else { /* Numbers should be good by now, let's fetch everything else. */ - tmp_str.append (*cit); + tmp_ret_str.append (*cit); } } - /* Misc version part will be set to the trailing string. */ - pulse_version_misc_ = tmp_str; + found = ((numbers_found[0]) && (numbers_found[1]) && (numbers_found[2])); + + if (found) { + /* Misc version part will be set to the trailing string. */ + pulse_version_misc_ = tmp_ret_str; + break; + } } else { /* No need to look any further. */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8823e11ede2dd4905656c5408edb46dad96c7a00 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jun 2 01:08:50 2016 +0200 src/pulsemanager.{cpp,h}: rename on_pulse_finished () to slot_on_pulse_finished (). Oops... --- debian/changelog | 2 ++ src/pulsemanager.cpp | 2 +- src/pulsemanager.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2bbc588..254666d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -297,6 +297,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: don't overwrite the temporary string variable for the current line with what was supposed to hold new data in fetch_pulseaudio_version (). + - src/pulsemanager.{cpp,h}: rename on_pulse_finished () to + slot_on_pulse_finished (). Oops... [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 032c018..ec08e6f 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -584,7 +584,7 @@ void PulseManager::slot_play_startup_sound () { } } -void PulseManager::on_pulse_finished (int exit_code) { +void PulseManager::slot_on_pulse_finished (int exit_code) { if (!exit_code) x2goDebug << "Warning! Pulseaudio's exit code is non-zero."; diff --git a/src/pulsemanager.h b/src/pulsemanager.h index b3b7421..4cd49e4 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -86,7 +86,7 @@ class PulseManager: public QObject { private slots: - void on_pulse_finished (int exit_code); + void slot_on_pulse_finished (int exit_code); void slot_play_startup_sound (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 82a10f8105a85d4e345d3d923d5932fa6a419b16 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jun 2 04:21:02 2016 +0200 src/pulsemanager.cpp: don't insert stray newline into config.pa. --- debian/changelog | 1 + src/pulsemanager.cpp | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index c8249cd..ef0b294 100644 --- a/debian/changelog +++ b/debian/changelog @@ -301,6 +301,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium slot_on_pulse_finished (). Oops... - src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. + - src/pulsemanager.cpp: don't insert stray newline into config.pa. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index eec54a0..78fed24 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -474,7 +474,6 @@ bool PulseManager::generate_server_config () { else { config_tmp_file_stream << "1"; } - config_tmp_file_stream << endl; config_tmp_file_stream << " playback="; if (!playback_) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5e395fbf9c23c952e298927b1814977caf07c37c Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jun 2 04:20:10 2016 +0200 src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 254666d..c8249cd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -299,6 +299,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium fetch_pulseaudio_version (). - src/pulsemanager.{cpp,h}: rename on_pulse_finished () to slot_on_pulse_finished (). Oops... + - src/pulsemanager.cpp: actually only play startup sound if debugging is + enabled. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ec08e6f..eec54a0 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -557,7 +557,7 @@ void PulseManager::create_client_dir () { } void PulseManager::slot_play_startup_sound () { - if (!debug_) { + if (debug_) { QProcess play_file (0); QString play_file_binary (app_dir_); QString play_file_file (play_file_binary); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 142d1e89d3f1af884f87c0e3a24085aff9e6ba46 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jun 2 04:23:05 2016 +0200 src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables into environment as used by PulseManager. Otherwise we won't be able to start binaries like paplay. --- debian/changelog | 3 +++ src/pulsemanager.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index ef0b294..f3c10ce 100644 --- a/debian/changelog +++ b/debian/changelog @@ -302,6 +302,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. - src/pulsemanager.cpp: don't insert stray newline into config.pa. + - src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables + into environment as used by PulseManager. Otherwise we won't be able to + start binaries like paplay. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 78fed24..539b85b 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -144,6 +144,19 @@ void PulseManager::start_generic () { connect (pulse_server_, SIGNAL (finished (int)), this, SLOT (slot_on_pulse_finished (int))); + env_.insert ("PULSE_SERVER", "127.0.0.1:" + QString::number (pulse_port_)); + + + QString clean_pulse_dir = pulse_dir_.absolutePath (); + +#ifdef Q_OS_WIN + clean_pulse_dir = wapiShortFileName (clean_pulse_dir); +#endif /* defined (Q_OS_WIN) */ + + QString tmp_auth_cookie = QDir::toNativeSeparators (clean_pulse_dir + "/.pulse-cookie"); + + env_.insert ("PULSE_COOKIE", tmp_auth_cookie); + if (debug_) { // Give PA a little time to come up. QTimer::singleShot (3000, this, SLOT (slot_play_startup_sound ())); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 09578421c024a83c21910c2c6aa8460c99fbce90 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jun 2 04:24:38 2016 +0200 src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index f3c10ce..20021b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -305,6 +305,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables into environment as used by PulseManager. Otherwise we won't be able to start binaries like paplay. + - src/pulsemanager.cpp: don't remove PA config and log file in + ~/.x2go/pulse on PA shutdown if debugging has been requested. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 539b85b..ce7ba24 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -619,10 +619,12 @@ void PulseManager::slot_on_pulse_finished (int exit_code) { #if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) // Remove server config file, otherwise the directory won't be empty. - work_dir.remove (QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () - + "/config.pa").absolutePath ())); - work_dir.remove (QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () - + "/pulse.log").absolutePath ())); + if (!debug_) { + work_dir.remove (QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () + + "/config.pa").absolutePath ())); + work_dir.remove (QDir::toNativeSeparators (QDir (pulse_dir_.absolutePath () + + "/pulse.log").absolutePath ())); + } #else // Linux // FIXME. #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8f1257fef487e5d8757fc853725cadf7e59de8b5 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jun 20 23:52:40 2016 +0200 src/x2goutils.{cpp,h}: add new function find_binary (). Searches for a specific binary in a colon-separated list of paths. Really just a compat function, as Qt 5 includes QStandardPaths::findExecutable (). --- debian/changelog | 3 +++ src/x2goutils.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/x2goutils.h | 8 ++++++++ 3 files changed, 48 insertions(+) diff --git a/debian/changelog b/debian/changelog index 20021b1..b2c0159 100644 --- a/debian/changelog +++ b/debian/changelog @@ -307,6 +307,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium start binaries like paplay. - src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. + - src/x2goutils.{cpp,h}: add new function find_binary (). Searches for a + specific binary in a colon-separated list of paths. Really just a compat + function, as Qt 5 includes QStandardPaths::findExecutable (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 31ac3ac..16ed06e 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -24,6 +24,7 @@ #include <QFont> #include <QFontInfo> #include <QObject> +#include <QStringList> #include "x2goutils.h" #include "onmainwindow.h" @@ -282,4 +283,40 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo return (ret); } + +QString find_binary (const QString &path, const QString &binary_name) { + QString ret = ""; + + if (!(binary_name.isEmpty ())) { + QString cur_path = ""; + QString tmp_path = path; + + if (!(path.isEmpty ())) { + tmp_path = "./"; + } + + QStringList path_list = tmp_path.split (":"); + + for (QStringList const_it = path_list.constBegin (); const_it != path_list.constEnd (); ++const_it) { + cur_path = *const_it; + + if (cur_path.isEmpty ()) { + cur_path = "./"; + } + + cur_path = QDir (cur_path).absolutePath (); + + cur_path += "/" + binary_name; + + QFileInfo tmp_file_info = QFileInfo (cur_path); + + if ((tmp_file_info.exists ()) && (tmp_file_info.isExecutable ())) { + ret = tmp_file_info.canonicalFilePath (); + break; + } + } + } + + return (ret); +} #endif /* defined (Q_OS_DARWIN) */ diff --git a/src/x2goutils.h b/src/x2goutils.h index e36203e..4159d39 100644 --- a/src/x2goutils.h +++ b/src/x2goutils.h @@ -57,6 +57,14 @@ void show_XQuartz_generic_error (const QString &main_error, const QString &addit * Ex.: <add_entry1>:<add_entry2>:...:<orig_path> */ QString add_to_path (const QString &orig_path, const QStringList &add, const bool back = true); + +/* + * Returns the first existing path that contains binary_name. + * Iff no component contains a binary called binary_name, an empty path is returned. + * + * Iff path is empty, (only) the current working dir is searched. + */ +QString find_binary (const QString &path, const QString &binary_name); #endif /* defined (Q_OS_DARWIN) */ #endif /* !defined (X2GOUTILS_H) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b4c08f53c90cd8eaf188cb4c1cb181eb151eefa1 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jun 20 23:58:12 2016 +0200 src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/debian/changelog b/debian/changelog index b2c0159..dee105d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -310,6 +310,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/x2goutils.{cpp,h}: add new function find_binary (). Searches for a specific binary in a colon-separated list of paths. Really just a compat function, as Qt 5 includes QStandardPaths::findExecutable (). + - src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts + default prefix as well on OS X. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index ce7ba24..1e23d89 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -21,6 +21,12 @@ #include <stdlib.h> #include <QSysInfo> +#if QT_VERSION < 0x050000 +#include "x2goutils.h" +#else /* QT_VERSION < 0x050000 */ +#include <QStandardPaths> +#endif /* QT_VERSION < 0x050000 */ + #include "pulsemanager.h" #include "x2gologdebug.h" @@ -54,8 +60,69 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), /* Set server binary and working dir paths. */ #ifdef Q_OS_DARWIN + /* Assume bundled PA first. */ server_working_dir_ = QString (app_dir_ + "/../exe/"); server_binary_ = QString (server_working_dir_ + "/pulseaudio"); + +#if QT_VERSION < 0x050000 + QProcessEnvironment tmp_env = QProcessEnvironment::systemEnvironment (); + QString path_val = tmp_env.value ("PATH"); + + QStringList to_front, to_back; + to_front << "/opt/local/bin"; + to_back << "/usr/local/bin"; + + add_to_path (path_val, to_back); + add_to_path (path_val, to_front, false); + + server_binary_ = find_binary (server_working_dir_, "pulseaudio"); + + if (server_binary_.isEmpty ()) { + server_binary_ = find_binary (path_val, "pulseaudio"); + + if (server_binary_.isEmpty ()) { + x2goErrorf (29) << "Unable to find PulseAudio binary. Neither bundled, nor found in $PATH nor additional directories."; + abort (); + } + } +#else /* QT_VERSION < 0x050000 */ + QStringList search_paths; + search_paths << server_working_dir_; + + server_binary_ = QStandardPaths::findExecutable ("pulseaudio", search_paths); + + if (server_binary_.isEmpty ()) { + search_paths = QStringList (); + search_paths << "/opt/local/bin"; /* MacPorts default prefix, FIXME: might need to make that configurable. */ + + server_binary_ = QStandardPaths::findExecutable ("pulseaudio", search_paths); + + if (server_binary_.isEmpty ()) { + search_paths = QStringList (); + + server_binary_ = QStandardPaths::findExecutable ("pulseaudio", search_paths); + + if (server_binary_.isEmpty ()) { + search_paths = QStringList (); + search_paths << "/usr/local/bin"; /* Homebrew or random stuff. Probably even both intermingled... */ + + server_binary_ = QStandardPaths::findExecutable ("pulseaudio", search_paths); + + if (server_binary_.isEmpty ()) { + x2goErrorf (28) << "Unable to find PulseAudio binary. Neither bundled, nor found in $PATH nor additional directories."; + abort (); + } + } + } + } +#endif /* QT_VERSION < 0x050000 */ + + QFileInfo tmp_file_info = QFileInfo (server_binary_); + server_working_dir_ = tmp_file_info.canonicalPath (); + + x2goDebug << "Found PA binary as " << server_binary_ << endl; + x2goDebug << "Corresponding working dir: " << server_working_dir_ << endl; + #elif defined (Q_OS_WIN) server_working_dir_ = QString (app_dir_ + "/pulse/"); server_binary_ = QString (app_dir_ + "/pulse/pulseaudio.exe"); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 445046a73821d3254e3cf516052039ed062e8b19 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 02:20:22 2016 +0200 src/pulsemanager.cpp: add comments to Qt 4 code part. --- debian/changelog | 1 + src/pulsemanager.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index dee105d..a023d4e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -312,6 +312,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium function, as Qt 5 includes QStandardPaths::findExecutable (). - src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. + - src/pulsemanager.cpp: add comments to Qt 4 code part. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 1e23d89..47e1b7c 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -69,8 +69,8 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), QString path_val = tmp_env.value ("PATH"); QStringList to_front, to_back; - to_front << "/opt/local/bin"; - to_back << "/usr/local/bin"; + to_front << "/opt/local/bin"; /* MacPorts default prefix, FIXME: might need to make that configurable. */ + to_back << "/usr/local/bin"; /* Homebrew or random stuff. Probably even both intermingled... */ add_to_path (path_val, to_back); add_to_path (path_val, to_front, false); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e8b73a117c0b9cbfbfaaee6de7982d6c657ae9fe Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 02:21:10 2016 +0200 src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). --- debian/changelog | 2 ++ src/pulsemanager.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/debian/changelog b/debian/changelog index a023d4e..9cb743d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -313,6 +313,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. - src/pulsemanager.cpp: add comments to Qt 4 code part. + - src/pulsemanager.cpp: add reminder for Linux-implementation in + play_startup_sound (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 47e1b7c..8e25b77 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -647,6 +647,8 @@ void PulseManager::slot_play_startup_sound () { #elif defined (Q_OS_WIN) playFileBinary += "/pulse/paplay.exe"; playFileFile += "/startup.wav"; +#else + /* FIXME: implement Linux section. */ #endif // defined (Q_OS_DARWIN) QStringList args (play_file_file); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e99c477148cba52974b4713a916ee10d2ca59785 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 02:28:40 2016 +0200 src/x2goutils.cpp: fix compile error. --- debian/changelog | 1 + src/x2goutils.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9cb743d..a6f0325 100644 --- a/debian/changelog +++ b/debian/changelog @@ -315,6 +315,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: add comments to Qt 4 code part. - src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). + - src/x2goutils.cpp: fix compile error. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 16ed06e..eebd05c 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -297,7 +297,7 @@ QString find_binary (const QString &path, const QString &binary_name) { QStringList path_list = tmp_path.split (":"); - for (QStringList const_it = path_list.constBegin (); const_it != path_list.constEnd (); ++const_it) { + for (QStringList::const_iterator const_it = path_list.constBegin (); const_it != path_list.constEnd (); ++const_it) { cur_path = *const_it; if (cur_path.isEmpty ()) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4df5514d591e876148b7368071d5666c62ef15ee Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 02:31:32 2016 +0200 src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. --- debian/changelog | 2 ++ src/pulsemanager.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/debian/changelog b/debian/changelog index a6f0325..8cad917 100644 --- a/debian/changelog +++ b/debian/changelog @@ -316,6 +316,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). - src/x2goutils.cpp: fix compile error. + - src/pulsemanager.h: add new system_pulse_ variable to indicate that + a system PA binary shall be used. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 4cd49e4..6e39b9a 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -118,6 +118,8 @@ class PulseManager: public QObject { bool playback_; bool debug_; + + bool system_pulse_; }; #endif // PULSEMANAGER_H -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7b448d028ce77a1fd9170e6e96c308dacfd57322 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 02:33:27 2016 +0200 src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 8cad917..0e907a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -318,6 +318,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/x2goutils.cpp: fix compile error. - src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. + - src/pulsemanager.cpp: correctly initialize and set system_pulse_ when + required. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 8e25b77..9ec2da8 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -45,7 +45,8 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), pulse_version_misc_ (""), record_ (true), playback_ (true), - debug_ (false) { + debug_ (false), + system_pulse_ (false) { pulse_dir_ = QDir (QDir::homePath ()); pulse_dir_.mkpath (pulse_dir_.absolutePath () + pulse_X2Go_ + "/tmp"); pulse_dir_.cd (pulse_X2Go_.mid (1)); @@ -84,6 +85,9 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), x2goErrorf (29) << "Unable to find PulseAudio binary. Neither bundled, nor found in $PATH nor additional directories."; abort (); } + else { + system_pulse_ = true; + } } #else /* QT_VERSION < 0x050000 */ QStringList search_paths; @@ -114,6 +118,14 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), } } } + + /* + * The detection above either failed or succeeded. + * Failure means that the program already stopped, + * success means that all code reaches this point. + * Be careful when refactoring this code. + */ + system_pulse_ = true; } #endif /* QT_VERSION < 0x050000 */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7c040604c482a28384c32b4feb550b8d62155d5e Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 02:45:45 2016 +0200 src/x2goutils.{cpp,h}: add application modality parameter to show_RichText_Generic_MsgBox () and its wrappers. --- debian/changelog | 2 ++ src/x2goutils.cpp | 19 +++++++++++++------ src/x2goutils.h | 6 +++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0e907a9..ff5d94b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -320,6 +320,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium a system PA binary shall be used. - src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. + - src/x2goutils.{cpp,h}: add application modality parameter to + show_RichText_Generic_MsgBox () and its wrappers. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index eebd05c..ab109c1 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -94,7 +94,7 @@ QString convert_to_rich_text (const QString &text, bool force) { return (fixup_text); } -void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_text, const QString &informative_text) { +void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_text, const QString &informative_text, bool app_modal) { QString fixup_main_text (convert_to_rich_text (main_text)); QString fixup_informative_text (convert_to_rich_text (informative_text, true)); @@ -102,16 +102,23 @@ void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_t msg_box.setTextFormat (Qt::RichText); msg_box.setInformativeText (fixup_informative_text); - msg_box.setWindowModality (Qt::WindowModal); + + if (app_modal) { + msg_box.setWindowModality (Qt::ApplicationModal); + } + else { + msg_box.setWindowModality (Qt::WindowModal); + } + msg_box.exec (); } -void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text) { - show_RichText_Generic_MsgBox (QMessageBox::Warning, main_text, informative_text); +void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text bool app_modal) { + show_RichText_Generic_MsgBox (QMessageBox::Warning, main_text, informative_text, app_modal); } -void show_RichText_ErrorMsgBox (const QString &main_text, const QString &informative_text) { - show_RichText_Generic_MsgBox (QMessageBox::Critical, main_text, informative_text); +void show_RichText_ErrorMsgBox (const QString &main_text, const QString &informative_text, bool app_modal) { + show_RichText_Generic_MsgBox (QMessageBox::Critical, main_text, informative_text, app_modal); } QString git_changelog_extract_commit_sha (const QString &gitlog) { diff --git a/src/x2goutils.h b/src/x2goutils.h index 4159d39..dd7613c 100644 --- a/src/x2goutils.h +++ b/src/x2goutils.h @@ -33,9 +33,9 @@ QString wrap_legacy_resource_URIs (const QString &res_path); QString convert_to_rich_text (const QString &text, bool force = false); -void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_text, const QString &informative_text); -void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text = ""); -void show_RichText_ErrorMsgBox (const QString &main_text, const QString &informative_text = ""); +void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_text, const QString &informative_text, bool app_modal = false); +void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text = "", bool app_modal = false); +void show_RichText_ErrorMsgBox (const QString &main_text, const QString &informative_text = "", bool app_modal = false); QString git_changelog_extract_commit_sha (const QString &gitlog); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7c14ca392a5cc4ee050b351ab255b27b6e48af05 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 03:14:20 2016 +0200 src/pulsemanager.cpp: add error message boxes throughout PulseManager. Don't just abort () the program. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index ff5d94b..c100b3b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -322,6 +322,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium required. - src/x2goutils.{cpp,h}: add application modality parameter to show_RichText_Generic_MsgBox () and its wrappers. + - src/pulsemanager.cpp: add error message boxes throughout PulseManager. + Don't just abort () the program. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 9ec2da8..1cb7a7e 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -21,14 +21,13 @@ #include <stdlib.h> #include <QSysInfo> -#if QT_VERSION < 0x050000 -#include "x2goutils.h" -#else /* QT_VERSION < 0x050000 */ +#if QT_VERSION >= 0x050000 #include <QStandardPaths> -#endif /* QT_VERSION < 0x050000 */ +#endif /* QT_VERSION >= 0x050000 */ #include "pulsemanager.h" #include "x2gologdebug.h" +#include "x2goutils.h" PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), pulse_X2Go_ ("/.x2go/pulse"), @@ -83,6 +82,13 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), if (server_binary_.isEmpty ()) { x2goErrorf (29) << "Unable to find PulseAudio binary. Neither bundled, nor found in $PATH nor additional directories."; + show_RichText_ErrorMsgBox (tr ("Unable to find PulseAudio binary. Neither bundled, nor found in $PATH nor additional directories."), + tr ("If you downloaded the bundled, pre-compiled version from the official home page, " + "please report a bug on:\n" + "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" + "https://wiki.x2go.org/doku.php/wiki:bugs" + "</a></center>\n"), + true); abort (); } else { @@ -114,6 +120,13 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), if (server_binary_.isEmpty ()) { x2goErrorf (28) << "Unable to find PulseAudio binary. Neither bundled, nor found in $PATH nor additional directories."; + show_RichText_ErrorMsgBox (tr ("Unable to find PulseAudio binary. Neither bundled, nor found in $PATH nor additional directories."), + tr ("If you downloaded the bundled, pre-compiled version from the official home page, " + "please report a bug on:\n" + "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" + "https://wiki.x2go.org/doku.php/wiki:bugs" + "</a></center>\n"), + true); abort (); } } @@ -150,6 +163,9 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), for (buf = ptr = NULL; ptr == NULL; path_len += 20) { if (NULL == (buf = realloc (buf, path_len))) { x2goErrorf (16) << "Could not allocate buffer for getting current working directory!"; + show_RichText_ErrorMsgBox (tr ("Could not allocate buffer for getting current working directory!"), + QString (), + true); abort (); } @@ -157,7 +173,11 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), ptr = getcwd (buf, path_len); if ((NULL == ptr) && (ERANGE != erange)) { - x2goErrorf (17) << "getcwd() failed: " << QString (strerror (errno)); + int saved_errno = errno; + x2goErrorf (17) << "getcwd() failed: " << QString (strerror (saved_errno)); + show_RichText_ErrorMsgBox (tr ("getcwd() failed!"), + QString (strerror (saved_errno)), + true); abort (); } } @@ -365,6 +385,9 @@ void PulseManager::fetch_pulseaudio_version () { if (!convert_success) { x2goErrorf (20) << "Unable to convert major version number string to integer."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unable to convert major version number string to integer."), + true); abort (); } @@ -372,6 +395,10 @@ void PulseManager::fetch_pulseaudio_version () { } else { x2goErrorf (21) << "Unexpected character found when parsing version string for major version number: '" << QString (*cit) << "'."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unexpected character found when parsing version string for major version number") + + ": '" + QString (*cit) + "'.", + true); abort (); } } @@ -390,6 +417,9 @@ void PulseManager::fetch_pulseaudio_version () { if (!convert_success) { x2goErrorf (22) << "Unable to convert minor version number string to integer."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unable to convert minor version number string to integer."), + true); abort (); } @@ -405,6 +435,10 @@ void PulseManager::fetch_pulseaudio_version () { } else { x2goErrorf (23) << "Unexpected character found when parsing version string for minor version number: '" << QString (*cit) << "'."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unexpected character found when parsing version string for minor version number") + + ": '" + QString (*cit) + "'.", + true); abort (); } } @@ -420,6 +454,9 @@ void PulseManager::fetch_pulseaudio_version () { if (!convert_success) { x2goErrorf (24) << "Unable to convert micro version number string to integer."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unable to convert micro version number string to integer."), + true); abort (); } @@ -427,6 +464,10 @@ void PulseManager::fetch_pulseaudio_version () { } else { x2goErrorf (25) << "Unexpected character found when parsing version string for micro version number: '" << QString (*cit) << "'."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unexpected character found when parsing version string for micro version number") + + ": '" + QString (*cit) + "'.", + true); abort (); } } @@ -452,11 +493,17 @@ void PulseManager::fetch_pulseaudio_version () { if (!found) { x2goErrorf (19) << "Unable to fetch PulseAudio version - unexpected format. Exiting."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unexpected format encountered."), + true); abort (); } } else { x2goErrorf (18) << "Unable to start PulseAudio to fetch its version number. Exiting."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unable to start PulseAudio binary."), + true); abort (); } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7ca5522fbf552efa43642d9512c331b506317a70 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 03:21:11 2016 +0200 src/x2goutils.h: fix compile error due to typo. --- debian/changelog | 1 + src/x2goutils.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index c100b3b..0dba6ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -324,6 +324,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium show_RichText_Generic_MsgBox () and its wrappers. - src/pulsemanager.cpp: add error message boxes throughout PulseManager. Don't just abort () the program. + - src/x2goutils.h: fix compile error due to typo. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index ab109c1..25a2b54 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -113,7 +113,7 @@ void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_t msg_box.exec (); } -void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text bool app_modal) { +void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text, bool app_modal) { show_RichText_Generic_MsgBox (QMessageBox::Warning, main_text, informative_text, app_modal); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c2d0c7f07a193cab0acedd91c4669b076b2cd19f Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 03:59:51 2016 +0200 debian/changelog: fix typo in function name. --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 0dba6ba..d4b4ec5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -314,7 +314,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium default prefix as well on OS X. - src/pulsemanager.cpp: add comments to Qt 4 code part. - src/pulsemanager.cpp: add reminder for Linux-implementation in - play_startup_sound (). + slot_play_startup_sound (). - src/x2goutils.cpp: fix compile error. - src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a3eef0ed1f778792600405183b715aa76276319f Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 04:04:10 2016 +0200 src/pulsemanager.cpp: fix compile error on Windows. --- debian/changelog | 1 + src/pulsemanager.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d4b4ec5..e7d42ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -325,6 +325,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: add error message boxes throughout PulseManager. Don't just abort () the program. - src/x2goutils.h: fix compile error due to typo. + - src/pulsemanager.cpp: fix compile error on Windows. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 1cb7a7e..1de1cc7 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -704,8 +704,8 @@ void PulseManager::slot_play_startup_sound () { play_file_binary += "/../exe/paplay"; play_file_file += "/../Resources/startup.wav"; #elif defined (Q_OS_WIN) - playFileBinary += "/pulse/paplay.exe"; - playFileFile += "/startup.wav"; + play_file_binary += "/pulse/paplay.exe"; + play_file_file += "/startup.wav"; #else /* FIXME: implement Linux section. */ #endif // defined (Q_OS_DARWIN) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 14d2cf0ffb695256af4e7a081e8de372bb8fd0d9 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 04:13:44 2016 +0200 src/pulsemanager.cpp: fix startup when using the system-PA version. --- debian/changelog | 1 + src/pulsemanager.cpp | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index e7d42ad..e8e28a8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -326,6 +326,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium Don't just abort () the program. - src/x2goutils.h: fix compile error due to typo. - src/pulsemanager.cpp: fix compile error on Windows. + - src/pulsemanager.cpp: fix startup when using the system-PA version. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 1de1cc7..9582027 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -269,15 +269,20 @@ void PulseManager::start_generic () { void PulseManager::start_osx () { server_args_ = QStringList (); server_args_ << "--exit-idle-time=-1" << "-n" - << "-F" << pulse_dir_.absolutePath () + "/config.pa" - << "-p" - << QDir (app_dir_ - + "/../Frameworks/pulse-" - + QString::number (pulse_version_major_) - + "." - + QString::number (pulse_version_minor_) - + "/modules").absolutePath () - << "--high-priority"; + << "-F" << pulse_dir_.absolutePath () + "/config.pa"; + + if (!system_pulse_) { + server_args_ << "-p" + << QDir (app_dir_ + + "/../Frameworks/pulse-" + + QString::number (pulse_version_major_) + + "." + + QString::number (pulse_version_minor_) + + "/modules").absolutePath (); + } + + server_args_ << "--high-priority"; + if (debug_) { server_args_ << "--log-level=debug" << "--verbose" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 06e2b08f90756576a8b0437c6ec3569e9bc1b8c2 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 04:19:27 2016 +0200 src/pulsemanager.cpp: add warning message boxes where appropriate. --- debian/changelog | 1 + src/pulsemanager.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9c1df40..44a4038 100644 --- a/debian/changelog +++ b/debian/changelog @@ -329,6 +329,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: fix startup when using the system-PA version. - src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. + - src/pulsemanager.cpp: add warning message boxes where appropriate. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index e837a97..223b7df 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -263,6 +263,14 @@ void PulseManager::start_generic () { } else { x2goErrorf (27) << "PulseAudio failed to start! Sound support will not be available."; + show_RichText_WarningMsgBox (tr ("PulseAudio failed to start!"), + tr ("Sound support will not be available.\n\n" + "If you downloaded the bundled, pre-compiled version from the official home page, " + "please report a bug on:\n" + "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" + "https://wiki.x2go.org/doku.php/wiki:bugs" + "</a></center>\n"), + true); } } @@ -731,6 +739,14 @@ void PulseManager::slot_play_startup_sound () { } else { x2goErrorf (26) << "Unable to play startup sound! Something may be wrong."; + show_RichText_WarningMsgBox (tr ("Unable to play startup sound."), + tr ("If you downloaded the bundled, pre-compiled version from the official home page " + "or the upstream Linux packages, " + "please report a bug on:\n" + "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" + "https://wiki.x2go.org/doku.php/wiki:bugs" + "</a></center>\n"), + true); } } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2160cba8bb677c6be7b92ebf021f32b343e87337 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 04:15:03 2016 +0200 src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index e8e28a8..9c1df40 100644 --- a/debian/changelog +++ b/debian/changelog @@ -327,6 +327,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/x2goutils.h: fix compile error due to typo. - src/pulsemanager.cpp: fix compile error on Windows. - src/pulsemanager.cpp: fix startup when using the system-PA version. + - src/pulsemanager.cpp: fix startup sound playback when using the + system-PA version. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 9582027..e837a97 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -702,14 +702,20 @@ void PulseManager::create_client_dir () { void PulseManager::slot_play_startup_sound () { if (debug_) { QProcess play_file (0); - QString play_file_binary (app_dir_); - QString play_file_file (play_file_binary); + + /* + * Assume paplay is located at the same place as + * the pulseaudio binary. + */ + QString play_file_binary (server_working_dir_); + + QString play_file_file (app_dir_); #ifdef Q_OS_DARWIN - play_file_binary += "/../exe/paplay"; + play_file_binary += "/paplay"; play_file_file += "/../Resources/startup.wav"; #elif defined (Q_OS_WIN) - play_file_binary += "/pulse/paplay.exe"; + play_file_binary += "/paplay.exe"; play_file_file += "/startup.wav"; #else /* FIXME: implement Linux section. */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit aff320b9c7f3e7b07b86802b50a7659fba5edccb Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 04:49:16 2016 +0200 src/pulsemanager.cpp: remove extraneous newlines from debug output. --- debian/changelog | 1 + src/pulsemanager.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 44a4038..bc66e08 100644 --- a/debian/changelog +++ b/debian/changelog @@ -330,6 +330,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. - src/pulsemanager.cpp: add warning message boxes where appropriate. + - src/pulsemanager.cpp: remove extraneous newlines from debug output. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 223b7df..1fff171 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -145,8 +145,8 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), QFileInfo tmp_file_info = QFileInfo (server_binary_); server_working_dir_ = tmp_file_info.canonicalPath (); - x2goDebug << "Found PA binary as " << server_binary_ << endl; - x2goDebug << "Corresponding working dir: " << server_working_dir_ << endl; + x2goDebug << "Found PA binary as " << server_binary_; + x2goDebug << "Corresponding working dir: " << server_working_dir_; #elif defined (Q_OS_WIN) server_working_dir_ = QString (app_dir_ + "/pulse/"); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 62e5f74ca6bc43ffe3fecd4d5cdd742a1765e9e1 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 05:05:05 2016 +0200 src/: new file windows_stdint.h for Windows-compatibility when using std::(u)int*_t types. These are only available with GCC in C++11 mode on Windows for some reason. --- debian/changelog | 3 +++ src/windows_stdint.h | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7ddb290..2222706 100644 --- a/debian/changelog +++ b/debian/changelog @@ -335,6 +335,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium given path to CWD iff it's actually empty. Not the other way around. - src/x2goutils.cpp: add some debug logging to find_binary (). - nsis/x2goclient.nsi: add startup.wav to installer package. + - src/: new file windows_stdint.h for Windows-compatibility when using + std::(u)int*_t types. These are only available with GCC in C++11 mode on + Windows for some reason. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/windows_stdint.h b/src/windows_stdint.h new file mode 100644 index 0000000..74b2681 --- /dev/null +++ b/src/windows_stdint.h @@ -0,0 +1,40 @@ +/*************************************************************************** + * Copyright (C) 2012-2016 by Mihai Moldovan <ionic@ionic.de> * + * * + * 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., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef WINDOWS_STDINT_H +#define WINDOWS_STDINT_H + +#ifdef Q_OS_WIN + +/* We need this ugly hack because Windows doesn't know about std::(u)int*_t types. */ +namespace std { + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef signed long long int int64_t; + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + typedef unsigned long long int uint64_t; +} + +#endif /* defined (Q_OS_WIN) */ + + +#endif /* !defined (WINDOWS_STDINT_H) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3a2b712f5a6b3f71b5f86b087c09e9b94cf707c8 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 04:51:28 2016 +0200 src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the given path to CWD iff it's actually empty. Not the other way around. --- debian/changelog | 2 ++ src/x2goutils.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index bc66e08..aee10f7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -331,6 +331,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium system-PA version. - src/pulsemanager.cpp: add warning message boxes where appropriate. - src/pulsemanager.cpp: remove extraneous newlines from debug output. + - src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the + given path to CWD iff it's actually empty. Not the other way around. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 25a2b54..45c31df 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -298,7 +298,7 @@ QString find_binary (const QString &path, const QString &binary_name) { QString cur_path = ""; QString tmp_path = path; - if (!(path.isEmpty ())) { + if (path.isEmpty ()) { tmp_path = "./"; } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4425447da2e6b1ad706f463022fa60c640c6417f Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jun 22 04:53:13 2016 +0200 src/x2goutils.cpp: add some debug logging to find_binary (). --- debian/changelog | 1 + src/x2goutils.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/debian/changelog b/debian/changelog index aee10f7..3d26bb5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -333,6 +333,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: remove extraneous newlines from debug output. - src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the given path to CWD iff it's actually empty. Not the other way around. + - src/x2goutils.cpp: add some debug logging to find_binary (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 45c31df..9612b12 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -321,6 +321,10 @@ QString find_binary (const QString &path, const QString &binary_name) { ret = tmp_file_info.canonicalFilePath (); break; } + else { + x2goDebug << "Binary at " << cur_path << " either does not exist (" << !(tmp_file_info.exists ()) + << ") or is not executable (" << tmp_file_info.isExecutable () << ")"; + } } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 09fef553aff55bb65a23483939083262f788275e Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Jun 30 23:56:08 2016 +0200 nsis/x2goclient.nsi: add startup.wav to installer package. --- debian/changelog | 1 + nsis/x2goclient.nsi | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 3d26bb5..7ddb290 100644 --- a/debian/changelog +++ b/debian/changelog @@ -334,6 +334,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the given path to CWD iff it's actually empty. Not the other way around. - src/x2goutils.cpp: add some debug logging to find_binary (). + - nsis/x2goclient.nsi: add startup.wav to installer package. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/nsis/x2goclient.nsi b/nsis/x2goclient.nsi index 77d141d..461f002 100644 --- a/nsis/x2goclient.nsi +++ b/nsis/x2goclient.nsi @@ -128,6 +128,7 @@ Section "X2Go Client (required)" base File /a /x x2goclient.debug.exe /x pageant.exe /x puttygen.exe "x2goclient\*.*" File /r "x2goclient\pulse" File /r /x "fonts" "x2goclient\VcXsrv" + File "..\res\audio\startup.wav" ;Store installation folder WriteRegStr HKLM "Software\x2goclient" "" $INSTDIR -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit db5793727e9d835f72e16572ee8cd39771f19692 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 05:06:28 2016 +0200 src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint otherwise. --- debian/changelog | 2 ++ src/pulsemanager.h | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2222706..099afc1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -338,6 +338,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/: new file windows_stdint.h for Windows-compatibility when using std::(u)int*_t types. These are only available with GCC in C++11 mode on Windows for some reason. + - src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint + otherwise. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 6e39b9a..ff541cb 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -30,7 +30,12 @@ #include <QApplication> #include <QTimer> #include <assert.h> + +#ifdef Q_OS_WIN +#include "windows_stdint.h" +#else /* defined (Q_OS_WIN) */ #include <cstdint> +#endif /* defined (Q_OS_WIN) */ #include "x2gosettings.h" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a905c6697f171cc395cae2d0c192d4d4571250d4 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 05:24:49 2016 +0200 src/onmainwindow.cpp: short out code parts unconditionally checking for the userSshd variable. We don't need it on Windows (and don't define it on purpose) because using an user-mode SSH daemon is implied there (for now.) --- debian/changelog | 4 ++++ src/onmainwindow.cpp | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 099afc1..946255f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -340,6 +340,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium Windows for some reason. - src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint otherwise. + - src/onmainwindow.cpp: short out code parts unconditionally checking for + the userSshd variable. We don't need it on Windows (and don't define it + on purpose) because using an user-mode SSH daemon is implied there (for + now.) [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 7b6a768..bb029b9 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8287,8 +8287,13 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output, /* * Do the user SSHD/global SSHD dance here and either use the * private .x2go/.ssh or the global .ssh dir. + * + * Note: Windows is implicitly always using an user-mode SSH server. */ - if (userSshd) { +#ifndef Q_OS_WIN + if (userSshd) +#endif /* !defined (Q_OS_WIN) */ + { authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); } @@ -9565,15 +9570,23 @@ void ONMainWindow::startX2goMount() /* * Do the user SSHD/global SSHD dance here and either use the * private .x2go/.ssh or the global .ssh dir. + * + * Note: Windows is implicitly always using an user-mode SSH server. */ - if (userSshd) { +#ifndef Q_OS_WIN + if (userSshd) +#endif /* !defined (Q_OS_WIN) */ + { authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); } authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); - if (userSshd) { +#ifndef Q_OS_WIN + if (userSshd) +#endif /* !defined (Q_OS_WIN) */ + { x2goDebug << "Creating dir " << authorized_keys_dir.absolutePath (); authorized_keys_dir.mkpath (authorized_keys_dir.absolutePath ()); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit eff01853cdb26a9f183b4c064aac35a16c613c98 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 05:34:34 2016 +0200 src/onmainwindow.cpp: drop obsolete pulseVersionTest variable initialization in Windows-only code. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 946255f..f29882b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -344,6 +344,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium the userSshd variable. We don't need it on Windows (and don't define it on purpose) because using an user-mode SSH daemon is implied there (for now.) + - src/onmainwindow.cpp: drop obsolete pulseVersionTest variable + initialization in Windows-only code. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index bb029b9..88af812 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -170,7 +170,6 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) homeDir=QDir::homePath(); #ifdef Q_OS_WIN - pulseVersionTest=0l; xorg=0l; xDisplay=0; #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8995f24a642055b784562607a3d08599e54bf482 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 05:35:11 2016 +0200 src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable initialization in Windows-only code. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f29882b..118f963 100644 --- a/debian/changelog +++ b/debian/changelog @@ -346,6 +346,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium now.) - src/onmainwindow.cpp: drop obsolete pulseVersionTest variable initialization in Windows-only code. + - src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable + initialization in Windows-only code. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 88af812..ab030a1 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -435,7 +435,6 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) #ifdef Q_OS_WIN winServersReady=false; saveCygnusSettings(); - pulseVersionIsLegacy=false; #endif initPassDlg(); initSelectSessDlg(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit bc42bbd4f3a8609a90bd9252d26c8e7b0767c650 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 05:40:33 2016 +0200 src/onmainwindow.cpp: add another pair of braces to in_addr-type variable initialization on Windows to silence compiler warning. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 118f963..fc94a65 100644 --- a/debian/changelog +++ b/debian/changelog @@ -348,6 +348,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium initialization in Windows-only code. - src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable initialization in Windows-only code. + - src/onmainwindow.cpp: add another pair of braces to in_addr-type + variable initialization on Windows to silence compiler warning. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index ab030a1..c14824f 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9829,7 +9829,7 @@ bool ONMainWindow::isServerRunning ( int port ) int iResult; WSADATA wsaData; - struct in_addr addr = { 0 }; + struct in_addr addr = {{ 0 }}; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 745c43f5d21df85dfdcaa5b65aeebe77117e8456 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 23:03:57 2016 +0200 src/onmainwindow.cpp: fix compile error on Windows after moving some code around. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index fc94a65..261682b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -350,6 +350,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium initialization in Windows-only code. - src/onmainwindow.cpp: add another pair of braces to in_addr-type variable initialization on Windows to silence compiler warning. + - src/onmainwindow.cpp: fix compile error on Windows after moving some + code around. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index c14824f..c44826b 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10266,7 +10266,7 @@ void ONMainWindow::generateEtcFiles() "AuthorizedKeysFile \"" << authKeyPath << "\"\n" << #ifdef Q_OS_WIN "Subsystem shell "<< wapiShortFileName ( appDir) +"/sh"+"\n"<< - "Subsystem sftp "<< wapiShortFileName ( appDir) +"/sftp-server"+"\n"<< + "Subsystem sftp "<< wapiShortFileName ( appDir) +"/sftp-server"+"\n"; #else "Subsystem sftp " /* This may need some sanitization, i.e., appDir could potentially include whitespace. */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit fd9956d9fe5f1760d7b3996ed8b603151711c68e Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 23:16:59 2016 +0200 src/onmainwindow.cpp: use correct C++ universal initializer for initializing in_addr-type variable, the C-style universal zero initializer won't cut it here. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 261682b..95ce803 100644 --- a/debian/changelog +++ b/debian/changelog @@ -352,6 +352,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium variable initialization on Windows to silence compiler warning. - src/onmainwindow.cpp: fix compile error on Windows after moving some code around. + - src/onmainwindow.cpp: use correct C++ universal initializer for + initializing in_addr-type variable, the C-style universal zero + initializer won't cut it here. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index c44826b..0d273b4 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9829,7 +9829,7 @@ bool ONMainWindow::isServerRunning ( int port ) int iResult; WSADATA wsaData; - struct in_addr addr = {{ 0 }}; + struct in_addr addr = {{ }}; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 26591ec631449a723ee90a3cbc1aa6a6178ffa35 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 4 23:19:13 2016 +0200 src/pulsemanager.h: include accidentally omitted wapi.h header file. --- debian/changelog | 1 + src/pulsemanager.h | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 95ce803..6a3f553 100644 --- a/debian/changelog +++ b/debian/changelog @@ -355,6 +355,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: use correct C++ universal initializer for initializing in_addr-type variable, the C-style universal zero initializer won't cut it here. + - src/pulsemanager.h: include accidentally omitted wapi.h header file. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.h b/src/pulsemanager.h index ff541cb..0b1ae3c 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -38,6 +38,7 @@ #endif /* defined (Q_OS_WIN) */ #include "x2gosettings.h" +#include "wapi.h" class PulseManager: public QObject { Q_OBJECT; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b060ae9ac9142d71d76e3c5c607a2190b9b3a425 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 11 05:22:09 2016 +0200 src/pulsemanager.cpp: make PA version parsing function more generic and don't expect that a number is always terminated with a period or dash. Especially on Windows, with a PA version number of "6.0", this lead to errors. OS X was fine with its "8.0.0-something" version number, but the optional part at the end or even the micro version number could be missing any time. --- debian/changelog | 6 ++ src/pulsemanager.cpp | 165 ++++++++++++++++++++++++++++++-------------------- 2 files changed, 105 insertions(+), 66 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6a3f553..a641ad5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -356,6 +356,12 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium initializing in_addr-type variable, the C-style universal zero initializer won't cut it here. - src/pulsemanager.h: include accidentally omitted wapi.h header file. + - src/pulsemanager.cpp: make PA version parsing function more generic and + don't expect that a number is always terminated with a period or dash. + Especially on Windows, with a PA version number of "6.0", this lead to + errors. OS X was fine with its "8.0.0-something" version number, but the + optional part at the end or even the micro version number could be + missing any time. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 1fff171..1da7ea4 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -383,28 +383,32 @@ void PulseManager::fetch_pulseaudio_version () { tmp_str = tmp_str.mid (needle.size ()); /* We should be at a digit now. */ - bool numbers_found[3] = { false, false, false }; - QString tmp_ret_str = QString (""); + bool numbers_started[3] = { false, false, false }; + bool numbers_finished[3] = { false, false, false }; + bool numbers_skip[3] = { false, false, false }; + QString tmp_remaining_str = QString (""); + QString numbers[3] = { }; for (QString::const_iterator cit = tmp_str.begin (); cit != tmp_str.end (); ++cit) { - if (!(numbers_found[0])) { + if (!(numbers_finished[0])) { if (((*cit) >= '0') && ((*cit) <= '9')) { - tmp_ret_str.append (*cit); + numbers[0].append (*cit); + numbers_started[0] = true; } else if ((*cit) == '.') { - /* First number part complete, let's convert the string and skip the period. */ - numbers_found[0] = true; - bool convert_success = false; - pulse_version_major_ = tmp_ret_str.toUInt (&convert_success, 10); - - if (!convert_success) { - x2goErrorf (20) << "Unable to convert major version number string to integer."; - show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), - tr ("Unable to convert major version number string to integer."), - true); - abort (); - } - - tmp_ret_str = QString (""); + /* First number part complete and more to come, mark as done. */ + numbers_finished[0] = true; + } + else if ((*cit) == '-') { + /* First number part complete and no more numbers, mark as done, and... */ + numbers_finished[0] = true; + + /* + * Skip all the other numbers (i.e., assume the default value.) + * This doesn't make a huge lot of sense for the first number, + * but let's make this robust... + */ + numbers_skip[1] = true; + numbers_skip[2] = true; } else { x2goErrorf (21) << "Unexpected character found when parsing version string for major version number: '" << QString (*cit) << "'."; @@ -415,36 +419,21 @@ void PulseManager::fetch_pulseaudio_version () { abort (); } } - else if (!(numbers_found[1])) { + else if (!(numbers_finished[1])) { if (((*cit) >= '0') && ((*cit) <= '9')) { - tmp_ret_str.append (*cit); + numbers[1].append (*cit); + numbers_started[1] = true; } - else if (((*cit) == '.') || ((*cit) == '-')) { - /* - * Second number part complete, let's convert the string and then check whether - * we stopped at a period or a dash character. - */ - numbers_found[1] = true; - bool convert_success = false; - pulse_version_minor_ = tmp_ret_str.toUInt (&convert_success, 10); - - if (!convert_success) { - x2goErrorf (22) << "Unable to convert minor version number string to integer."; - show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), - tr ("Unable to convert minor version number string to integer."), - true); - abort (); - } - - tmp_ret_str = QString (""); - - if ((*cit) == '-') { - /* - * There will be no micro version, skip it entirely and assume the default - * value of zero. - */ - numbers_found[2] = true; - } + else if ((*cit) == '.') { + /* Second number part complete and more to come, mark as done. */ + numbers_finished[1] = true; + } + else if ((*cit) == '-') { + /* Second number part complete and no more numbers, mark as done, and... */ + numbers_finished[1] = true; + + /* Skip all the other numbers (i.e., assume the default value.) */ + numbers_skip[2] = true; } else { x2goErrorf (23) << "Unexpected character found when parsing version string for minor version number: '" << QString (*cit) << "'."; @@ -455,25 +444,14 @@ void PulseManager::fetch_pulseaudio_version () { abort (); } } - else if (!(numbers_found[2])) { + else if (!(numbers_finished[2])) { if (((*cit) >= '0') && ((*cit) <= '9')) { - tmp_ret_str.append (*cit); + numbers[2].append (*cit); + numbers_started[2] = true; } else if ((*cit) == '-') { - /* Third number part complete, let's convert the string and skip the period. */ - numbers_found[2] = true; - bool convert_success = false; - pulse_version_micro_ = tmp_ret_str.toUInt (&convert_success, 10); - - if (!convert_success) { - x2goErrorf (24) << "Unable to convert micro version number string to integer."; - show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), - tr ("Unable to convert micro version number string to integer."), - true); - abort (); - } - - tmp_ret_str = QString (""); + /* Third number part complete and no more numbers, mark as done. */ + numbers_finished[2] = true; } else { x2goErrorf (25) << "Unexpected character found when parsing version string for micro version number: '" << QString (*cit) << "'."; @@ -486,15 +464,70 @@ void PulseManager::fetch_pulseaudio_version () { } else { /* Numbers should be good by now, let's fetch everything else. */ - tmp_ret_str.append (*cit); + tmp_remaining_str.append (*cit); + } + } + + bool numbers_done[3] = { false, false, false }; + + if (numbers_skip[0]) { + x2goErrorf (30) << "Supposed to skip major version number. Something is wrong."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Supposed to skip major version number. " + "Something is wrong."), + true); + abort (); + } + + /* not skipping and ((met period or dash) or (have something to convert and met EOL)) */ + if ((!numbers_skip[0]) && ((numbers_finished[0]) || (numbers_started[0]))) { + bool convert_success = false; + pulse_version_major_ = numbers[0].toUInt (&convert_success, 10); + + if (!convert_success) { + x2goErrorf (20) << "Unable to convert major version number string to integer."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unable to convert major version number string to integer."), + true); + abort (); + } + else { + /* First number is enough to satisfy the "found" criterion. */ + found = true; + } + } + + /* not skipping and ((met period or dash) or (have something to convert and met EOL)) */ + if ((!numbers_skip[1]) && ((numbers_finished[1]) || (numbers_started[1]))) { + bool convert_success = false; + pulse_version_minor_ = numbers[1].toUInt (&convert_success, 10); + + if (!convert_success) { + x2goErrorf (22) << "Unable to convert minor version number string to integer."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unable to convert minor version number string to integer."), + true); + abort (); } } - found = ((numbers_found[0]) && (numbers_found[1]) && (numbers_found[2])); + /* not skipping and ((met period or dash) or (have something to convert and met EOL)) */ + if ((!numbers_skip[2]) && ((numbers_finished[2]) || (numbers_started[2]))) { + bool convert_success = false; + pulse_version_micro_ = numbers[2].toUInt (&convert_success, 10); + + if (!convert_success) { + x2goErrorf (24) << "Unable to convert micro version number string to integer."; + show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), + tr ("Unable to convert micro version number string to integer."), + true); + abort (); + } + } + /* Misc version part will be set to the trailing string. */ if (found) { - /* Misc version part will be set to the trailing string. */ - pulse_version_misc_ = tmp_ret_str; + pulse_version_misc_ = tmp_remaining_str; break; } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e665df57a48548a3922df869a2890106921f52dc Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Aug 12 08:55:34 2016 +0200 src/pulsemanager.cpp: fix PA version fetching on OS X again. --- debian/changelog | 1 + src/pulsemanager.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 074f95f..d7d6dd0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -366,6 +366,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium functions, paths are in native form (i.e., containing empty separators, instead of the "generic" slash UNIX-style separator.) Should fix a PA startup issue on Windows. + - src/pulsemanager.cpp: fix PA version fetching on OS X again. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 6170634..01677dd 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -419,7 +419,7 @@ void PulseManager::fetch_pulseaudio_version () { abort (); } } - else if (!(numbers_finished[1])) { + else if ((!(numbers_finished[1])) && (!(numbers_skip[1]))) { if (((*cit) >= '0') && ((*cit) <= '9')) { numbers[1].append (*cit); numbers_started[1] = true; @@ -444,7 +444,7 @@ void PulseManager::fetch_pulseaudio_version () { abort (); } } - else if (!(numbers_finished[2])) { + else if ((!(numbers_finished[2])) && (!(numbers_skip[2]))) { if (((*cit) >= '0') && ((*cit) <= '9')) { numbers[2].append (*cit); numbers_started[2] = true; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit bce2e257e08cdb57bba50c3aba9f54eb3cb424d0 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Jul 11 05:34:22 2016 +0200 src/pulsemanager.cpp: make sure that wherever we interface with non-Qt functions, paths are in native form (i.e., containing empty separators, instead of the "generic" slash UNIX-style separator.) Should fix a PA startup issue on Windows. --- debian/changelog | 4 ++++ src/pulsemanager.cpp | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/debian/changelog b/debian/changelog index a641ad5..074f95f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -362,6 +362,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium errors. OS X was fine with its "8.0.0-something" version number, but the optional part at the end or even the micro version number could be missing any time. + - src/pulsemanager.cpp: make sure that wherever we interface with non-Qt + functions, paths are in native form (i.e., containing empty separators, + instead of the "generic" slash UNIX-style separator.) Should fix a PA + startup issue on Windows. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 1da7ea4..6170634 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -51,10 +51,10 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), pulse_dir_.cd (pulse_X2Go_.mid (1)); env_ = QProcessEnvironment::systemEnvironment (); - env_.insert ("HOME", pulse_dir_.absolutePath ()); - env_.insert ("TEMP", pulse_dir_.absolutePath () + "/tmp"); + env_.insert ("HOME", QDir::toNativeSeparators (pulse_dir_.absolutePath ())); + env_.insert ("TEMP", QDir::toNativeSeparators (pulse_dir_.absolutePath () + "/tmp")); #ifdef Q_OS_WIN - env_.insert ("USERPROFILE", pulse_dir_.absolutePath ()); + env_.insert ("USERPROFILE", QDir::toNativeSeparators (pulse_dir_.absolutePath ())); env_.insert ("USERNAME", "pulseuser"); #endif // defined (Q_OS_WIN) @@ -277,16 +277,16 @@ void PulseManager::start_generic () { void PulseManager::start_osx () { server_args_ = QStringList (); server_args_ << "--exit-idle-time=-1" << "-n" - << "-F" << pulse_dir_.absolutePath () + "/config.pa"; + << "-F" << QDir::toNativeSeparators (pulse_dir_.absolutePath () + "/config.pa"); if (!system_pulse_) { server_args_ << "-p" - << QDir (app_dir_ - + "/../Frameworks/pulse-" - + QString::number (pulse_version_major_) - + "." - + QString::number (pulse_version_minor_) - + "/modules").absolutePath (); + << QDir::toNativeSeparators (QDir (app_dir_ + + "/../Frameworks/pulse-" + + QString::number (pulse_version_major_) + + "." + + QString::number (pulse_version_minor_) + + "/modules").absolutePath ()); } server_args_ << "--high-priority"; @@ -294,7 +294,7 @@ void PulseManager::start_osx () { if (debug_) { server_args_ << "--log-level=debug" << "--verbose" - << "--log-target=file:" + pulse_dir_.absolutePath () + "/pulse.log"; + << "--log-target=file:" + QDir::toNativeSeparators (pulse_dir_.absolutePath () + "/pulse.log"); } if (generate_server_config () && generate_client_config ()) { @@ -322,7 +322,7 @@ void PulseManager::start_win () { if (debug_) { server_args_ << "--log-level=debug" << "--verbose" - << "--log-target=file:" + pulse_dir_.absolutePath () + "\\pulse.log"; + << "--log-target=file:" + QDir::toNativeSeparators (pulse_dir_.absolutePath () + "/pulse.log"); } /* -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 09073ebfdeda27d8a53bce62aa7c2e22d0a818a3 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Aug 12 09:00:41 2016 +0200 src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () into a new function called real_kill_pgroup (). --- debian/changelog | 2 ++ src/unixhelper.cpp | 37 +++++++++++++++++++++++++++---------- src/unixhelper.h | 12 ++++++++++++ 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/debian/changelog b/debian/changelog index f9b5dc8..657619b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -369,6 +369,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: fix PA version fetching on OS X again. - src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. - src/unixhelper.h: style and general fixes within comments. + - src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () + into a new function called real_kill_pgroup (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index 4488786..4d9c56f 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -30,25 +30,42 @@ #include <cerrno> #include <vector> #include <cstdlib> +#include <stdio.h> +#include <string.h> /* For documentation please see unixhelper.h. */ namespace unixhelper { void kill_pgroup (const int signal) { - if (SIGHUP == signal) { - /* Try to kill via SIGTERM first. */ - if (0 != killpg (getpgrp (), SIGTERM)) { - std::cerr << "WARNING: unable to send SIGTERM to process group: " << std::strerror (errno) << std::endl; - } + } + + void real_kill_pgroup (const pid_t pgid) { + /* Try to kill via SIGTERM first. */ + if (0 != killpg (pgid, SIGTERM)) { + std::cerr << "WARNING: unable to send SIGTERM to process group '" << pgid << "': " << std::strerror (errno) << std::endl; + } + + /* Grant a grace period of (at least) 10 seconds. */ + sleep (10); - /* Grant a grace period of (at least) 10 seconds. */ - sleep (10); + int kill_ret = killpg (pgid, SIGKILL); - /* Don't handle any errors here, because we die anyway. */ - killpg (getpgrp (), SIGKILL); + /* + * Might be unreachable. + * Depending upon which pgroup we just killed, this + * code is either unreachable (because killpg () killed + * itself already), or being executed. + * Let's handle errors and exit, if necessary. + */ + if (0 != kill_ret) { + char err_str[512] = { }; + snprintf (err_str, 512, "WARNING: failed to kill process group '%d'", pgid); + + perror (err_str); } - } + exit (EXIT_SUCCESS); + } int unix_cleanup (const pid_t parent) { /* diff --git a/src/unixhelper.h b/src/unixhelper.h index d67f3ed..662b3be 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -63,6 +63,18 @@ namespace unixhelper { * Other values are not handled. */ void kill_pgroup (const int signal); + + /* + * Kills the whole process group. + * First, SIGTERM is sent to the group. + * A 10 seconds grace period is granted to make sure + * processes exit cleanly on their own. + * Lastly, SIGKILL is sent to the group -- which also + * implies the demise of this program. + * + * pgid is the process group ID to be killed. + */ + void real_kill_pgroup (const pid_t pgid); } #endif /* defined (Q_OS_UNIX) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 452f902cc2d4daf31895f64359201b626858f20a Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Aug 12 09:06:32 2016 +0200 src/unixhelper.h: style and general fixes within comments. --- debian/changelog | 1 + src/unixhelper.h | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index b66dcb4..f9b5dc8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -368,6 +368,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium startup issue on Windows. - src/pulsemanager.cpp: fix PA version fetching on OS X again. - src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. + - src/unixhelper.h: style and general fixes within comments. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.h b/src/unixhelper.h index 3c2798f..d67f3ed 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -29,7 +29,7 @@ namespace unixhelper { /* * Unblocks all signals and installs a signal handler for SIGHUP, - * which calls kill_pgroup(). + * which calls kill_pgroup (). * * Should signal unblocking or installing the signal handler fail, * an emergency exit is performed and @@ -42,7 +42,7 @@ namespace unixhelper { * * In this loop, the current parent PID is polled and compared against * the original value passed via parameter parent. - * Should they mismatch, the parent died and kill_pgroup() is called. + * Should they mismatch, the parent died and kill_pgroup () is called. */ int unix_cleanup (const pid_t parent); @@ -60,6 +60,7 @@ namespace unixhelper { * group leader dies under specific circumstances * (we cannot rely that this always happens, though, * so a polling solution is needed, see unix_cleanup().) + * Other values are not handled. */ void kill_pgroup (const int signal); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d52cd15a6a7ca1d818992ba64e8ed85909baf019 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Aug 12 09:04:42 2016 +0200 src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. --- debian/changelog | 1 + src/unixhelper.cpp | 2 +- src/unixhelper.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d7d6dd0..b66dcb4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -367,6 +367,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium instead of the "generic" slash UNIX-style separator.) Should fix a PA startup issue on Windows. - src/pulsemanager.cpp: fix PA version fetching on OS X again. + - src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index d5aa67d..4488786 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -34,7 +34,7 @@ /* For documentation please see unixhelper.h. */ namespace unixhelper { - void kill_pgroup (int signal) { + void kill_pgroup (const int signal) { if (SIGHUP == signal) { /* Try to kill via SIGTERM first. */ if (0 != killpg (getpgrp (), SIGTERM)) { diff --git a/src/unixhelper.h b/src/unixhelper.h index a34456e..3c2798f 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -61,7 +61,7 @@ namespace unixhelper { * (we cannot rely that this always happens, though, * so a polling solution is needed, see unix_cleanup().) */ - void kill_pgroup (int signal); + void kill_pgroup (const int signal); } #endif /* defined (Q_OS_UNIX) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8d78f15852e104816d7d6a84b650e8ffbb4934c8 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Aug 12 09:11:16 2016 +0200 src/unixhelper.{cpp,h}: rewrite kill_pgroup () to act as a wrapper around real_kill_pgroup (). Adjust comment. We need to do this so the cleanup process doesn't kill itself before all other processes in the process group are killed. --- debian/changelog | 4 ++++ src/unixhelper.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/unixhelper.h | 12 ++++++------ 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 657619b..bfd6b8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -371,6 +371,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/unixhelper.h: style and general fixes within comments. - src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () into a new function called real_kill_pgroup (). + - src/unixhelper.{cpp,h}: rewrite kill_pgroup () to act as a wrapper + around real_kill_pgroup (). Adjust comment. We need to do this so the + cleanup process doesn't kill itself before all other processes in the + process group are killed. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index 4d9c56f..82e4374 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -37,6 +37,44 @@ namespace unixhelper { void kill_pgroup (const int signal) { + pid_t pgid_to_kill = getpgrp (); + + if ((SIGHUP == signal) || (-1 == signal)) { + /* + * In order to not kill ourselves, we need to run this + * code in a new process group. + */ + pid_t tmp_pid = fork (); + + /* Child. */ + if (0 == tmp_pid) { + /* Create new pgid. */ + int err = setpgid (0, 0); + + if (0 != err) { + std::perror ("WARNING: unable to change PGID"); + std::cerr << "Continuing with normal operation, but process might kill itself before tree vanishes." << std::endl; + } + + real_kill_pgroup (pgid_to_kill); + } + /* Error. */ + else if (-1 == tmp_pid) { + perror ("WARNING: unable to fork off another process to kill original process group"); + std::cerr << "Proceeding with normal operation, but process might kill itself before tree vanishes." << std::endl; + + real_kill_pgroup (pgid_to_kill); + } + /* Parent. */ + else { + /* + * No need to do anything, just exit here in order to not + * spawn a bunch of new processes due to subsequent calls + * to kill_pgroup () from unix_cleanup (). + */ + exit (EXIT_SUCCESS); + } + } } void real_kill_pgroup (const pid_t pgid) { diff --git a/src/unixhelper.h b/src/unixhelper.h index 662b3be..7d30bcf 100644 --- a/src/unixhelper.h +++ b/src/unixhelper.h @@ -47,12 +47,12 @@ namespace unixhelper { int unix_cleanup (const pid_t parent); /* - * Kills the whole process group. - * First, SIGTERM is sent to the group. - * A 10 seconds grace period is granted to make sure - * processes exit cleanly on their own. - * Lastly, SIGKILL is sent to the group -- which also - * implies the demise of this program. + * Wrapper for killing a whole process group. + * The "real" killing work is done by real_kill_pgroup (). + * This function tries to fork off another process and change + * the new function's process group ID. + * If any of these operations fail, killing the original process + * group ID will still continue, albeit with warning messages. * * signal may be any of: * * -1 to indicate an error leading to emergency termination -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0ffaac8d84e1eaccfd17fe7922fc9d9a129fd80e Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Aug 13 23:42:53 2016 +0200 src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. --- debian/changelog | 1 + src/unixhelper.cpp | 18 ++++++++++++------ src/x2goclient.cpp | 9 ++++++--- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index f5a8d7f..c17126a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -377,6 +377,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium process group are killed. - src/pulsemanager.cpp: remove unused variables. - src/unixhelper.cpp: code cleanup. + - src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index d6b4993..406cdda 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -79,7 +79,8 @@ namespace unixhelper { void real_kill_pgroup (const pid_t pgid) { /* Try to kill via SIGTERM first. */ if (0 != killpg (pgid, SIGTERM)) { - std::cerr << "WARNING: unable to send SIGTERM to process group '" << pgid << "': " << std::strerror (errno) << std::endl; + const int saved_errno = errno; + std::cerr << "WARNING: unable to send SIGTERM to process group '" << pgid << "': " << std::strerror (saved_errno) << std::endl; } /* Grant a grace period of (at least) 10 seconds. */ @@ -95,7 +96,8 @@ namespace unixhelper { * Let's handle errors and exit, if necessary. */ if (0 != kill_ret) { - std::cerr << "WARNING: failed to kill process group '" << pgid << "': " << std::strerror (err_str) << std::endl; + const int saved_errno = errno; + std::cerr << "WARNING: failed to kill process group '" << pgid << "': " << std::strerror (saved_errno) << std::endl; } std::exit (EXIT_SUCCESS); @@ -108,14 +110,16 @@ namespace unixhelper { */ sigset_t empty_set; if (0 != sigemptyset (&empty_set)) { - std::cerr << "Unable to fetch empty signal set: " << std::strerror (errno) << std::endl; + const int saved_errno = errno; + std::cerr << "Unable to fetch empty signal set: " << std::strerror (saved_errno) << std::endl; kill_pgroup (-1); /* Anything here shall be unreachable. */ } if (0 != sigprocmask (SIG_SETMASK, &empty_set, NULL)) { - std::cerr << "Unable to set empty signal set: " << std::strerror (errno) << std::endl; + const int saved_errno = errno; + std::cerr << "Unable to set empty signal set: " << std::strerror (saved_errno) << std::endl; kill_pgroup (-1); /* Anything here shall be unreachable. */ @@ -137,7 +141,8 @@ namespace unixhelper { /* Set up signal handler to ignore the current signal. */ if (0 != sigaction (*it, &sig_action, NULL)) { - std::cerr << "Unable to ignore signal " << strsignal (*it) << ": " << std::strerror (errno) << std::endl; + const int saved_errno = errno; + std::cerr << "Unable to ignore signal " << strsignal (*it) << ": " << std::strerror (saved_errno) << std::endl; kill_pgroup (-1); /* Anything here shall be unreachable. */ @@ -151,7 +156,8 @@ namespace unixhelper { sig_action.sa_flags = SA_RESTART; if (0 != sigaction (SIGHUP, &sig_action, NULL)) { - std::cerr << "Unable to set up signal handler for SIGHUP: " << std::strerror (errno) << std::endl; + const int saved_errno = errno; + std::cerr << "Unable to set up signal handler for SIGHUP: " << std::strerror (saved_errno) << std::endl; kill_pgroup (-1); /* Anything here shall be unreachable. */ diff --git a/src/x2goclient.cpp b/src/x2goclient.cpp index b201a4e..431a01e 100644 --- a/src/x2goclient.cpp +++ b/src/x2goclient.cpp @@ -58,13 +58,15 @@ int fork_helper (int argc, char **argv) { new_argv_c_str->push_back (0); if (0 != execv (new_argv_c_str->front (), &(new_argv_c_str->front ()))) { - std::cerr << "Failed to re-execute process as UNIX cleanup helper tool: " << std::strerror (errno) << "\n" + const int saved_errno = errno; + std::cerr << "Failed to re-execute process as UNIX cleanup helper tool: " << std::strerror (saved_errno) << "\n" << "Terminating and killing parent." << "\n" << "Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; pid_t parent_pid = getppid (); if (0 != kill (parent_pid, SIGTERM)) { - std::cerr << "Failed to kill parent process: " << std::strerror (errno) << std::endl; + const int saved_errno = errno; + std::cerr << "Failed to kill parent process: " << std::strerror (saved_errno) << std::endl; } std::exit (EXIT_FAILURE); @@ -75,7 +77,8 @@ int fork_helper (int argc, char **argv) { } /* Error. */ else if (-1 == tmp_pid) { - std::cerr << "Unable to create a new process for the UNIX cleanup watchdog: " << std::strerror (errno) << "\n"; + const int saved_errno = errno; + std::cerr << "Unable to create a new process for the UNIX cleanup watchdog: " << std::strerror (saved_errno) << "\n"; std::cerr << "Terminating. Please report a bug, refer to this documentation: http://wiki.x2go.org/doku.php/wiki:bugs" << std::endl; std::exit (EXIT_FAILURE); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit cf405a7a16ec531969a3561e6a1fa2d2f318361c Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Aug 13 23:27:42 2016 +0200 src/pulsemanager.cpp: remove unused variables. --- debian/changelog | 1 + src/pulsemanager.cpp | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index bfd6b8e..5c063f4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -375,6 +375,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium around real_kill_pgroup (). Adjust comment. We need to do this so the cleanup process doesn't kill itself before all other processes in the process group are killed. + - src/pulsemanager.cpp: remove unused variables. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 01677dd..93c83b3 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -468,8 +468,6 @@ void PulseManager::fetch_pulseaudio_version () { } } - bool numbers_done[3] = { false, false, false }; - if (numbers_skip[0]) { x2goErrorf (30) << "Supposed to skip major version number. Something is wrong."; show_RichText_ErrorMsgBox (tr ("Error fetching PulseAudio version number!"), -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f93863aa4ce2da3fdbc868856f7d5284ba9816eb Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Aug 13 23:33:15 2016 +0200 src/unixhelper.cpp: code cleanup. --- debian/changelog | 1 + src/unixhelper.cpp | 14 +++++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5c063f4..f5a8d7f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -376,6 +376,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium cleanup process doesn't kill itself before all other processes in the process group are killed. - src/pulsemanager.cpp: remove unused variables. + - src/unixhelper.cpp: code cleanup. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index 82e4374..d6b4993 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -31,7 +31,6 @@ #include <vector> #include <cstdlib> #include <stdio.h> -#include <string.h> /* For documentation please see unixhelper.h. */ @@ -60,8 +59,8 @@ namespace unixhelper { } /* Error. */ else if (-1 == tmp_pid) { - perror ("WARNING: unable to fork off another process to kill original process group"); - std::cerr << "Proceeding with normal operation, but process might kill itself before tree vanishes." << std::endl; + std::perror ("WARNING: unable to fork off another process to kill original process group"); + std::cerr << "Proceeding with normal operation, but process might kill itself before tree vanishes." << std::endl; real_kill_pgroup (pgid_to_kill); } @@ -72,7 +71,7 @@ namespace unixhelper { * spawn a bunch of new processes due to subsequent calls * to kill_pgroup () from unix_cleanup (). */ - exit (EXIT_SUCCESS); + std::exit (EXIT_SUCCESS); } } } @@ -96,13 +95,10 @@ namespace unixhelper { * Let's handle errors and exit, if necessary. */ if (0 != kill_ret) { - char err_str[512] = { }; - snprintf (err_str, 512, "WARNING: failed to kill process group '%d'", pgid); - - perror (err_str); + std::cerr << "WARNING: failed to kill process group '" << pgid << "': " << std::strerror (err_str) << std::endl; } - exit (EXIT_SUCCESS); + std::exit (EXIT_SUCCESS); } int unix_cleanup (const pid_t parent) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a19169d61d37e115b6abb25b491d8c0fb5bffefa Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 22 04:08:45 2016 +0200 src/onmainwindow.cpp: add support for explicitly setting the private key bit size based on type and use values (currently) regarded as secure to generateHostKey (). --- debian/changelog | 3 +++ src/onmainwindow.cpp | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index be7d87f..e9f12e6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -380,6 +380,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. - src/onmainwindow.cpp: document createRSAKey () because what it does is completely non-obvious. + - src/onmainwindow.cpp: add support for explicitly setting the private key + bit size based on type and use values (currently) regarded as secure to + generateHostKey (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 07c8b18..0509dd2 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10320,26 +10320,33 @@ void ONMainWindow::generateHostKey(ONMainWindow::key_types key_type) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; QString stringified_key_type = ""; + std::size_t key_bits = 0; switch (key_type) { case RSA_KEY_TYPE: sanitized_key_type = key_type; stringified_key_type = "rsa"; + key_bits = 4096; break; case DSA_KEY_TYPE: sanitized_key_type = key_type; stringified_key_type = "dsa"; + key_bits = 1024; break; case ECDSA_KEY_TYPE: sanitized_key_type = key_type; stringified_key_type = "ecdsa"; + key_bits = 384; break; case ED25519_KEY_TYPE: sanitized_key_type = key_type; stringified_key_type = "ed25519"; + /* Fixed key length, flag will be unused. */ + key_bits = 0; break; default: sanitized_key_type = UNKNOWN_KEY_TYPE; stringified_key_type = "unknown"; + key_bits = 0; } if (sanitized_key_type == UNKNOWN_KEY_TYPE) { @@ -10366,6 +10373,8 @@ void ONMainWindow::generateHostKey(ONMainWindow::key_types key_type) QStringList args; args << "-t" << stringified_key_type + << "-b" + << QString::number (key_bits) << "-N" << "" << "-C" -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 07432196883464efabee2e3418fc6dbc432ee4b3 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 22 04:05:53 2016 +0200 src/onmainwindow.cpp: document createRSAKey () because what it does is completely non-obvious. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/debian/changelog b/debian/changelog index c17126a..be7d87f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -378,6 +378,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: remove unused variables. - src/unixhelper.cpp: code cleanup. - src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. + - src/onmainwindow.cpp: document createRSAKey () because what it does is + completely non-obvious. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 0d273b4..07c8b18 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8079,6 +8079,33 @@ void ONMainWindow::exportDefaultDirs() QString ONMainWindow::createRSAKey() { + /* + * I spent multiple hours on trying to understand this function + * and directory exporting in general, so I'd better document + * this. + * + * This function first generates a new RSA private-public key + * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. + * + * Then, the SSH daemon's public host key is read and appended + * to the *private* SSH key file after a marker looking like + * this: "----BEGIN RSA IDENTITY----" + * + * Later on, this *private* SSH key file is transferred to the + * remote server, which parses it in the "x2gomountdirs" perl + * script and extracts the public key (used for logging in + * to the client machine) and the public *host* key, used to + * circumvent the "untrusted host" message by SSH by + * explicitly giving the aforementioned public *host* key as + * the only element in a fake "authorized_keys" file. Again, + * this is all happening server-side. + * + * The *public* key part generated here is then taken and + * later added to the "authorized_keys" file on the client + * side, to allow auto-logins via the generated and transferred + * private SSH key. + */ + QDir dr; QString keyPath=homeDir +"/.x2go/ssh/gen"; dr.mkpath ( keyPath ); @@ -8094,6 +8121,9 @@ QString ONMainWindow::createRSAKey() QStringList args; + /* + * Generating new key material here. + */ args<<"-t"<<"rsa"<<"-b"<<"1024"<<"-N"<<""<<"-f"<<keyName<<"-q"; x2goDebug<<"ssh-keygen " + args.join(" "); @@ -8106,6 +8136,9 @@ QString ONMainWindow::createRSAKey() x2goDebug<<"ssh-keygen succeeded."; + /* + * Now taking the *host* pub key here... + */ QFile rsa ( "/etc/ssh/ssh_host_rsa_key.pub" ); #ifdef Q_OS_WIN rsa.setFileName ( -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 83a183462cc786fb59947d1470187bb53dbc525f Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 22 04:57:38 2016 +0200 src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () and add a boolean parameter with a default of false to request a public key. Change old invocations of generateHostKey () accordingly. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 6 +++--- src/onmainwindow.h | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index e9f12e6..5dcce76 100644 --- a/debian/changelog +++ b/debian/changelog @@ -383,6 +383,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: add support for explicitly setting the private key bit size based on type and use values (currently) regarded as secure to generateHostKey (). + - src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () + and add a boolean parameter with a default of false to request a public + key. Change old invocations of generateHostKey () accordingly. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 0509dd2..831cd51 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8174,7 +8174,7 @@ QString ONMainWindow::createRSAKey() if ( !rsa.open ( QIODevice::ReadOnly | QIODevice::Text ) ) { #if defined (Q_OS_LINUX) || defined (Q_OS_DARWIN) - generateHostKey (RSA_KEY_TYPE); + generateKey (RSA_KEY_TYPE, true); generateEtcFiles (); if (!startSshd ()) { @@ -10139,7 +10139,7 @@ void ONMainWindow::startWinServers() { dr.mkpath ( etcDir ); - generateHostKey(RSA_KEY_TYPE); + generateKey(RSA_KEY_TYPE, true); generateEtcFiles(); sshStarter->start(); } @@ -10316,7 +10316,7 @@ void ONMainWindow::generateEtcFiles() x2goDebug<<etcDir +"/sshd_config created."; } -void ONMainWindow::generateHostKey(ONMainWindow::key_types key_type) +void ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; QString stringified_key_type = ""; diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 7430bb4..ae5d22d 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1205,7 +1205,7 @@ private: #endif void filterDesktops ( const QString& filter, bool strict=false ); - void generateHostKey(key_types key_type); + void generateKey(key_types key_type, bool host_key = false); void generateEtcFiles(); QString u3DataPath(); void cleanPortable(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 6f850ff02eddc4e5705c1a238db948a31a1a1bad Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 22 05:32:59 2016 +0200 src/onmainwindow.cpp: refactor generateKey () a little bit to compact it. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5dcce76..666c0b5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -386,6 +386,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () and add a boolean parameter with a default of false to request a public key. Change old invocations of generateHostKey () accordingly. + - src/onmainwindow.cpp: refactor generateKey () a little bit to compact + it. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 831cd51..355a12a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10355,21 +10355,22 @@ void ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) close (); } - QString etcDir = homeDir + "/.x2go/etc/"; - QDir dr (homeDir); - dr.mkpath (etcDir); - QString private_key_file = etcDir + "/ssh_host_" + stringified_key_type + "_key"; + QString etc_dir = homeDir + "/.x2go/etc/"; + QDir dir (homeDir); + dir.mkpath (etc_dir); + QString private_key_file = ""; +#ifdef Q_OS_WIN + private_key_file = cygwinPath (wapiShortFileName (etc_dir)); +#else + private_key_file = etc_dir; +#endif + private_key_file += "/ssh_host_" + stringified_key_type + "_key"; QString public_key_file = private_key_file + ".pub"; if ((!(QFile::exists (private_key_file))) || (!(QFile::exists (public_key_file)))) { x2goDebug << "Generating host key. Type: " << stringified_key_type; -#ifdef Q_OS_WIN - private_key_file = cygwinPath (wapiShortFileName (etcDir)) - + "/ssh_host_" + stringified_key_type + "_key"; -#endif - QStringList args; args << "-t" << stringified_key_type -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e7a25be9d88ef953d95c9ead2d4cb93896d1e115 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Sep 23 02:49:03 2016 +0200 src/onmainwindow.{cpp,h}: rewrite generateKey () function to actually also generate user keys. Now returns the private key file path (public key file path is trivially determined by appending ".pub" to that return value.) Change all locations referencing generateKey () to use the return value (if necessary) and remove dead code that was used to generate a user key manually previously. --- debian/changelog | 6 +++ src/onmainwindow.cpp | 130 +++++++++++++++++++++++++++++++------------------- src/onmainwindow.h | 2 +- 3 files changed, 87 insertions(+), 51 deletions(-) diff --git a/debian/changelog b/debian/changelog index 666c0b5..dc386ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -388,6 +388,12 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium key. Change old invocations of generateHostKey () accordingly. - src/onmainwindow.cpp: refactor generateKey () a little bit to compact it. + - src/onmainwindow.{cpp,h}: rewrite generateKey () function to actually + also generate user keys. Now returns the private key file path (public + key file path is trivially determined by appending ".pub" to that return + value.) Change all locations referencing generateKey () to use the + return value (if necessary) and remove dead code that was used to + generate a user key manually previously. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 355a12a..2481194 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8106,35 +8106,7 @@ QString ONMainWindow::createRSAKey() * private SSH key. */ - QDir dr; - QString keyPath=homeDir +"/.x2go/ssh/gen"; - dr.mkpath ( keyPath ); -#ifdef Q_OS_WIN - keyPath=wapiShortFileName ( keyPath ); -#endif - QTemporaryFile fl ( keyPath+"/key" ); - fl.open(); - QString keyName=fl.fileName(); - fl.setAutoRemove ( false ); - fl.close(); - fl.remove(); - - QStringList args; - - /* - * Generating new key material here. - */ - args<<"-t"<<"rsa"<<"-b"<<"1024"<<"-N"<<""<<"-f"<<keyName<<"-q"; - - x2goDebug<<"ssh-keygen " + args.join(" "); - - if ( QProcess::execute ( "ssh-keygen",args ) !=0 ) - { - x2goDebug<<"ssh-keygen failed." <<endl; - return QString::null; - } - x2goDebug<<"ssh-keygen succeeded."; - + QString user_key = generateKey (RSA_KEY_TYPE); /* * Now taking the *host* pub key here... @@ -8174,14 +8146,14 @@ QString ONMainWindow::createRSAKey() if ( !rsa.open ( QIODevice::ReadOnly | QIODevice::Text ) ) { #if defined (Q_OS_LINUX) || defined (Q_OS_DARWIN) - generateKey (RSA_KEY_TYPE, true); + QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); generateEtcFiles (); if (!startSshd ()) { return (QString::null); } - rsa.setFileName ( homeDir+"/.x2go/etc/ssh_host_rsa_key.pub" ); + rsa.setFileName (tmp_file_name + ".pub"); rsa.open ( QIODevice::ReadOnly | QIODevice::Text ); #else printSshDError_noHostPubKey(); @@ -8199,18 +8171,18 @@ QString ONMainWindow::createRSAKey() return QString::null; } - QFile file ( keyName ); + QFile file ( user_key ); if ( !file.open ( QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append ) ) { - x2goErrorf(10)<<tr("Cannot open key: ")<<keyName; - return keyName; + x2goErrorf(10) << tr ("Cannot open key: ") << user_key; + return user_key; } QTextStream out ( &file ); out<<"----BEGIN RSA IDENTITY----"<<rsa_pub; file.close(); - return keyName; + return user_key; } void ONMainWindow::slotCopyKey ( bool result, QString output, int pid) @@ -10139,7 +10111,7 @@ void ONMainWindow::startWinServers() { dr.mkpath ( etcDir ); - generateKey(RSA_KEY_TYPE, true); + UNUSED (generateKey (RSA_KEY_TYPE, true)); generateEtcFiles(); sshStarter->start(); } @@ -10316,11 +10288,12 @@ void ONMainWindow::generateEtcFiles() x2goDebug<<etcDir +"/sshd_config created."; } -void ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) +QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; - QString stringified_key_type = ""; + QString stringified_key_type (""); std::size_t key_bits = 0; + QString ret (""); switch (key_type) { case RSA_KEY_TYPE: sanitized_key_type = key_type; @@ -10350,28 +10323,83 @@ void ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) } if (sanitized_key_type == UNKNOWN_KEY_TYPE) { - QMessageBox::critical (this, tr ("Host key type selection error"), - tr ("Unknown host key selected.\nTerminating application.")); + QMessageBox::critical (this, tr ("SSH key type selection error"), + tr ("Unknown SSH key selected.") + + "\n" + + tr ("Terminating application.")); close (); } - QString etc_dir = homeDir + "/.x2go/etc/"; - QDir dir (homeDir); - dir.mkpath (etc_dir); - QString private_key_file = ""; + QString base_dir (homeDir); + QString private_key_file (""); + + if (host_key) { + base_dir += "/.x2go/etc/"; + } + else { + base_dir += "/.x2go/ssh/gen/"; + } + + { + QDir dir (homeDir); + if (!(dir.mkpath (base_dir))) { + QMessageBox::critical (this, tr ("SSH key base directory creation error"), + tr ("Unable to create SSH key base directory '%1'.").arg (base_dir) + + "\n" + + tr ("Terminating application.")); + } + } + #ifdef Q_OS_WIN - private_key_file = cygwinPath (wapiShortFileName (etc_dir)); + private_key_file = cygwinPath (wapiShortFileName (base_dir)); #else - private_key_file = etc_dir; + private_key_file = base_dir; #endif - private_key_file += "/ssh_host_" + stringified_key_type + "_key"; - QString public_key_file = private_key_file + ".pub"; + ret = base_dir; + + { + QString tmp_to_add (""); + + if (host_key) { + QString tmp_to_add = "/ssh_host_" + stringified_key_type + "_key"; + } + else { + QTemporaryFile temp_file (base_dir + "/key"); + temp_file.open (); + + /* Extract base name. */ + QFileInfo tmp_file_info (temp_file.fileName ()); + tmp_to_add = tmp_file_info.fileName (); + + /* Clean up again. We don't need the temporary file anymore. */ + temp_file.setAutoRemove (false); + temp_file.close (); + temp_file.remove (); + } + + private_key_file += tmp_to_add; + ret += tmp_to_add; + } + + QString public_key_file (private_key_file + ".pub"); if ((!(QFile::exists (private_key_file))) || (!(QFile::exists (public_key_file)))) { - x2goDebug << "Generating host key. Type: " << stringified_key_type; + x2goDebug << "Generating SSH key. Type: " << stringified_key_type; QStringList args; + + QString comment = "X2Go Client " + stringified_key_type + " "; + + if (host_key) { + comment += "host"; + } + else { + comment += "user"; + } + + comment += " key"; + args << "-t" << stringified_key_type << "-b" @@ -10379,11 +10407,13 @@ void ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) << "-N" << "" << "-C" - << QString ("X2Go Client " + stringified_key_type + "host key") + << comment << "-f" << private_key_file; QProcess::execute ("ssh-keygen", args); } + + return (ret); } bool ONMainWindow::startSshd() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index ae5d22d..2741ec2 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1205,7 +1205,7 @@ private: #endif void filterDesktops ( const QString& filter, bool strict=false ); - void generateKey(key_types key_type, bool host_key = false); + QString generateKey(key_types key_type, bool host_key = false); void generateEtcFiles(); QString u3DataPath(); void cleanPortable(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 51743a486f83753d92c74bc632bfb06c7fb3d120 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Sep 23 03:12:43 2016 +0200 src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 30 +++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index dc386ff..26817a4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -394,6 +394,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium value.) Change all locations referencing generateKey () to use the return value (if necessary) and remove dead code that was used to generate a user key manually previously. + - src/onmainwindow.cpp: add more error handling to generateKey () and fix + up a broken error-handling section. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 2481194..f3ea01a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10347,6 +10347,7 @@ QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_ke tr ("Unable to create SSH key base directory '%1'.").arg (base_dir) + "\n" + tr ("Terminating application.")); + close (); } } @@ -10410,7 +10411,34 @@ QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_ke << comment << "-f" << private_key_file; - QProcess::execute ("ssh-keygen", args); + + const int keygen_ret = QProcess::execute ("ssh-keygen", args); + + if (-2 == keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen launching error"), + tr ("Unable to start the ssh-keygen binary.") + + "\n" + + tr ("Terminating application.")); + close (); + } + + if (-1 == keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen crashed"), + tr ("The ssh-keygen binary crashed.") + + "\n" + + tr ("Terminating application.")); + close (); + } + + if (0 != keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen program error"), + tr ("The ssh-keygen binary did not exit cleanly.") + + " " + + tr ("It was probably called with unknown arguments.") + + "\n" + + tr ("Terminating application.")); + close (); + } } return (ret); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 198d2a2eb8b0eff6df335c01d1265d38fa14c98d Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Sep 23 03:22:29 2016 +0200 src/onmainwindow.cpp: fix up a few debug strings. --- debian/changelog | 1 + src/onmainwindow.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 26817a4..58e52da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -396,6 +396,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium generate a user key manually previously. - src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. + - src/onmainwindow.cpp: fix up a few debug strings. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index f3ea01a..494ed8a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8273,7 +8273,7 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output, QMessageBox::NoButton ); } QFile file ( key+".pub" ); - x2goDebug<<"Deactivating public key from "<<key<<".pub again."<<endl; + x2goDebug << "Deactivating public key from " << QString (key + ".pub") << " again."; if ( !file.open ( QIODevice::ReadOnly | QIODevice::Text ) ) { printSshDError_noExportPubKey(); @@ -9658,7 +9658,7 @@ void ONMainWindow::startX2goMount() out << line; authorized_keys_file.close (); - x2goDebug << "Temporarily activated public key from file " << fsExportKey << ".pub."; + x2goDebug << "Temporarily activated public key from file " << QString (fsExportKey + ".pub") << "."; QString passwd=getCurrentPass(); QString user=getCurrentUname(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1a03e60b00af2847ed0c4984f825f6713529d708 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Sep 23 04:47:22 2016 +0200 src/{onmainwindow.{cpp,h},configdialog.cpp}: remove userSshd variable and code related to non-user-mode-sshd setups. Simplifies code a bit and we want to always start a user-mode OpenSSH server anyway. Also get rid of the clientport variable that is now unnecessary. --- debian/changelog | 4 + src/configdialog.cpp | 20 ----- src/onmainwindow.cpp | 236 ++++++++++---------------------------------------- src/onmainwindow.h | 1 - 4 files changed, 49 insertions(+), 212 deletions(-) diff --git a/debian/changelog b/debian/changelog index 58e52da..2cc9c07 100644 --- a/debian/changelog +++ b/debian/changelog @@ -397,6 +397,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. - src/onmainwindow.cpp: fix up a few debug strings. + - src/{onmainwindow.{cpp,h},configdialog.cpp}: remove userSshd variable + and code related to non-user-mode-sshd setups. Simplifies code a bit and + we want to always start a user-mode OpenSSH server anyway. Also get rid + of the clientport variable that is now unnecessary. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/configdialog.cpp b/src/configdialog.cpp index d1973d0..9e771d5 100644 --- a/src/configdialog.cpp +++ b/src/configdialog.cpp @@ -248,22 +248,6 @@ ConfigDialog::ConfigDialog ( QWidget * parent, Qt::WindowFlags f ) #endif //Q_OS_DARWIN -#ifndef Q_OS_WIN - clientSshPort=new QSpinBox ( fr ); - clientSshPort->setMaximum ( 1000000 ); - clientSshPort->setValue ( st.setting()->value ( "clientport", - ( QVariant ) 22 ).toInt() ); - - QHBoxLayout* sshLay=new QHBoxLayout(); - sshLay->addWidget ( - new QLabel ( tr ( - "Clientside (local) SSH daemon port for file system export usage:" - ),fr ) ); - sshLay->addWidget ( clientSshPort ); - sshLay->addStretch(); - frLay->addLayout ( sshLay ); -#endif - if ( embedMode ) { cbStartEmbed=new QCheckBox ( @@ -411,10 +395,6 @@ void ConfigDialog::slot_accepted() st.setting()->setValue ( "xdarwin/directory", ( QVariant ) leXexec->text() ); #endif -#ifndef Q_OS_WIN - st.setting()->setValue ( "clientport", - ( QVariant ) clientSshPort->value() ); -#endif pwid->saveSettings(); if ( embedMode ) diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 494ed8a..20a3ebe 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -151,7 +151,6 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) X2goSettings st ( "settings" ); winSshdStarted=false; #else - userSshd=false; sshd=0l; #endif @@ -1516,7 +1515,7 @@ void ONMainWindow::closeClient() #endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ #ifndef Q_OS_WIN - if ( userSshd && sshd ) + if (sshd) { x2goDebug<<"Terminating the OpenSSH server ..."; sshd->terminate(); @@ -1645,11 +1644,6 @@ void ONMainWindow::loadSettings() ldapPort2=st1.setting()->value ( "LDAP/port2", ( QVariant ) 0 ).toInt(); } -#ifndef Q_OS_WIN - if ( !userSshd ) - clientSshPort=st1.setting()->value ( "clientport", - ( QVariant ) 22 ).toString(); -#endif showToolBar=st1.setting()->value ( "toolbar/show", ( QVariant ) true ).toBool(); @@ -8111,52 +8105,26 @@ QString ONMainWindow::createRSAKey() /* * Now taking the *host* pub key here... */ - QFile rsa ( "/etc/ssh/ssh_host_rsa_key.pub" ); + QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); #ifdef Q_OS_WIN - rsa.setFileName ( - wapiShortFileName ( - homeDir+"\\.x2go\\etc\\ssh_host_dsa_key.pub" ) ); -#else - if ( userSshd ) - rsa.setFileName ( homeDir+"/.x2go/etc/ssh_host_dsa_key.pub" ); - + rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); #endif -#ifdef Q_OS_DARWIN - { - /* OS X 10.11+ changed the key location to /etc/ssh/. */ - QFileInfo rsa_host_key ("/etc/ssh/ssh_host_rsa_key.pub"); - - x2goDebug << "first try for RSA key " << rsa_host_key.absoluteFilePath () << ": " - << rsa_host_key.exists (); - if (!(rsa_host_key.exists ())) { - rsa_host_key = QFileInfo ("/etc/ssh_host_rsa_key.pub"); - - x2goDebug << "second try for RSA key " << rsa_host_key.absoluteFilePath () << ": " - << rsa_host_key.exists (); - if (!(rsa_host_key.exists ())) { - printSshDError_noHostPubKey (); - return QString::null; - } - } - - rsa.setFileName (rsa_host_key.absoluteFilePath ()); - } -#endif - if ( !rsa.open ( QIODevice::ReadOnly | QIODevice::Text ) ) - { -#if defined (Q_OS_LINUX) || defined (Q_OS_DARWIN) + if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { + x2goDebug << "Unable to open public host key file."; +#ifdef Q_OS_UNIX + x2goDebug << "Creating a new one."; QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); generateEtcFiles (); - if (!startSshd ()) { + if (!(startSshd ())) { return (QString::null); } rsa.setFileName (tmp_file_name + ".pub"); - rsa.open ( QIODevice::ReadOnly | QIODevice::Text ); + rsa.open (QIODevice::ReadOnly | QIODevice::Text); #else - printSshDError_noHostPubKey(); + printSshDError_noHostPubKey (); return QString::null; #endif } @@ -8286,21 +8254,8 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output, file.close(); QDir authorized_keys_dir (homeDir); + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/.ssh/"); - /* - * Do the user SSHD/global SSHD dance here and either use the - * private .x2go/.ssh or the global .ssh dir. - * - * Note: Windows is implicitly always using an user-mode SSH server. - */ -#ifndef Q_OS_WIN - if (userSshd) -#endif /* !defined (Q_OS_WIN) */ - { - authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); - } - - authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); /* @@ -9569,30 +9524,12 @@ void ONMainWindow::startX2goMount() file.close(); QDir authorized_keys_dir (homeDir); + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/.ssh/"); - /* - * Do the user SSHD/global SSHD dance here and either use the - * private .x2go/.ssh or the global .ssh dir. - * - * Note: Windows is implicitly always using an user-mode SSH server. - */ -#ifndef Q_OS_WIN - if (userSshd) -#endif /* !defined (Q_OS_WIN) */ - { - authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); - } - - authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); -#ifndef Q_OS_WIN - if (userSshd) -#endif /* !defined (Q_OS_WIN) */ - { - x2goDebug << "Creating dir " << authorized_keys_dir.absolutePath (); - authorized_keys_dir.mkpath (authorized_keys_dir.absolutePath ()); - } + x2goDebug << "Potentially creating dir " << authorized_keys_dir.absolutePath (); + authorized_keys_dir.mkpath (authorized_keys_dir.absolutePath ()); x2goDebug << "Potentially creating file " << authorized_keys_file.fileName (); if (!authorized_keys_file.open (QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { @@ -9669,7 +9606,11 @@ void ONMainWindow::startX2goMount() QString cuser; -#ifndef Q_WS_HILDON +#ifdef Q_WS_HILDON + cuser="user"; +#elif defined (Q_OS_WIN) + cuser=wapiGetUserName(); +#else for ( int i=0; i<env.size(); ++i ) { QStringList ls=env[i].split ( "=" ); @@ -9680,11 +9621,6 @@ void ONMainWindow::startX2goMount() break; } } -#else - cuser="user"; -#endif -#ifdef Q_OS_WIN - cuser=wapiGetUserName(); #endif QString cmd; QString dirs=dir->dirList; @@ -10362,7 +10298,7 @@ QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_ke QString tmp_to_add (""); if (host_key) { - QString tmp_to_add = "/ssh_host_" + stringified_key_type + "_key"; + tmp_to_add = "/ssh_host_" + stringified_key_type + "_key"; } else { QTemporaryFile temp_file (base_dir + "/key"); @@ -10450,17 +10386,7 @@ bool ONMainWindow::startSshd() { return false; } -#ifdef Q_OS_LINUX clientSshPort = "7022"; -#else // defined (Q_OS_LINUX) -#ifdef Q_OS_DARWIN - // Should also automatically create keys if Remote Login is enabled - // under Sharing in System Preferences. - if (!isServerRunning (clientSshPort.toInt ())) { - clientSshPort = "7022"; - } -#endif // defined (Q_OS_DARWIN) -#endif // defined (Q_OS_LINUX) QString etcDir=homeDir+"/.x2go/etc"; int port=clientSshPort.toInt(); //clientSshPort have initvalue @@ -10471,7 +10397,8 @@ bool ONMainWindow::startSshd() std::string clientdir=wapiShortFileName ( appDir ).toStdString(); std::stringstream strm; std::string config="\""+cygwinPath(etcDir+"/sshd_config").toStdString()+"\""; - std::string key="\""+cygwinPath(etcDir+"/ssh_host_dsa_key").toStdString()+"\""; + /* FIXME: make this generic! */ + std::string key="\""+cygwinPath(etcDir+"/ssh_host_rsa_key").toStdString()+"\""; // generate a unique sshLog filepath, and create its directory if (debugging) @@ -10536,21 +10463,20 @@ bool ONMainWindow::startSshd() delete []desktop; winSshdStarted=true; #else // defined (Q_OS_WIN) - userSshd=true; - sshd=new QProcess ( this ); - QString binary = appDir + "/sshd"; -#ifdef Q_OS_DARWIN - binary = "/usr/sbin/sshd"; -#endif // defined (Q_OS_DARWIN) + QString binary ("/usr/sbin/sshd"); +#ifndef Q_OS_UNIX + binary = appDir + "/sshd"; +#endif /* !(defined (Q_OS_UNIX)) */ QStringList arguments; + /* FIXME: make key selection more generic! */ arguments<<"-f"<<etcDir +"/sshd_config"<< "-h" << - etcDir+"/ssh_host_dsa_key"<<"-D"<<"-p"<<clientSshPort; + etcDir+"/ssh_host_rsa_key"<<"-D"<<"-p"<<clientSshPort; sshd->start (binary, arguments); -#endif // defined (Q_OS_WIN) +#endif /* defined (Q_OS_WIN) */ // Allow sshd a grace time of 3 seconds to come up. QTime sleepTime = QTime::currentTime ().addSecs (3); @@ -11991,67 +11917,24 @@ void ONMainWindow::printSshDError_startupFailure() return; QString error_message; -#ifdef Q_OS_WIN error_message = tr ("SSH daemon could not be started.\n\n"); -#else // defined (Q_OS_WIN) - if (userSshd) { - error_message = tr ("SSH daemon could not be started.\n\n"); - } - else { - error_message = tr ("SSH daemon is not running.\n\n"); - } -#endif // defined (Q_OS_WIN) QString detailed_error_message = tr ("You have enabled Remote Printing or File Sharing.\n" "These features require a running and functioning SSH server on your computer.\n" - "<b>Printing and File Sharing will be disabled for this session.</b>\n\n" - - "Please also check the <b>Clientside SSH port</b> in the general settings.\n\n"); + "<b>Printing and File Sharing will be disabled for this session.</b>\n\n"); #ifdef Q_OS_WIN detailed_error_message += tr ("Normally, this should not happen as X2Go Client for Windows " "ships its own internal SSH server.\n\n" - "If you see this message, please report a bug on:\n" - "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" + "If you see this message, please report a bug on:\n"); +#else /* defined (Q_OS_WIN) */ + detailed_error_message += tr ("The SSH server failed to start.\n\n" + + "Please report a bug on:\n"); +#endif /* defined (Q_OS_WIN) */ + detailed_error_message += tr ("<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" "https://wiki.x2go.org/doku.php/wiki:bugs" "</a></center>\n"); -#else // defined (Q_OS_WIN) - if (userSshd) { - detailed_error_message += tr ("The SSH server failed to start.\n\n"); - detailed_error_message += tr ("X2Go Client did not detect a globally running SSH server " - "on your machine and was unable to start its own.\n\n" - - "Please report a bug on:\n" - "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" - "https://wiki.x2go.org/doku.php/wiki:bugs" - "</a></center>\n"); - } - else { - detailed_error_message += tr ("The SSH server is currently not started.\n\n"); -#ifdef Q_OS_DARWIN - detailed_error_message += tr ("On OS X, please follow the following steps to enable " - "SSH service:" - "<ul>" - "<li>Open <b>System Preferences</b> (Applications -> System Preferences)</li>" - "<li>Go to <b>Sharing</b></li>" - "<li>Tick the checkbox besides <b>Remote Login</b></li>" - "<li>Check that <b>Allow access for:</b> is set to either:" - "<ul>" - "<li>All users: <b>no further steps necessary</b></li>" - "<li>Only these users <b>and your user name is included in the list</b></li>" - "</ul>" - "<li>Optionally, add your user name to the allowed list " - "via the <b>Plus Button</b></li>" - "</ul>" - "<b>Warning: enabling SSH access will allow any user on the network to connect " - "to your machine. It is your responsibility to set a strong password for every " - "user that is allowed to log in via SSH.</b>\n\n"); -#else // defined (Q_OS_DARWIN) - detailed_error_message += tr ("Please ask your system administrator to provide the SSH " - "service on your computer.\n\n"); -#endif // defined (Q_OS_DARWIN) - } -#endif // defined (Q_OS_WIN) detailed_error_message += tr ("Disabling Remote Printing or File Sharing support " "in the session settings will get rid of this message."); @@ -12069,50 +11952,21 @@ void ONMainWindow::printSshDError_noHostPubKey() QString detailed_error_message = tr ("You have enabled Remote Printing or File Sharing.\n" "These features require a running and functioning SSH server on your computer.\n" - "<b>Printing and File Sharing will be disabled for this session.</b>\n\n" - - "The SSH server is currently not configured correctly.\n\n" - - "Please ensure that the server's public key exists.\n\n"); + "<b>Printing and File Sharing will be disabled for this session.</b>\n\n"); #ifdef Q_OS_WIN detailed_error_message += tr ("Normally, this should not happen as X2Go Client for Windows " "ships its own internal SSH server and automatically " "generates the required keys.\n\n" - "If you see this message, please report a bug on:\n" - "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" + "If you see this message, please report a bug on:\n"); +#else /* defined (Q_OS_WIN) */ + detailed_error_message += tr ("X2Go Client was unable to create SSH host keys.\n\n" + + "Please report a bug on:\n"); +#endif /* defined (Q_OS_WIN) */ + detailed_error_message += tr ("<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" "https://wiki.x2go.org/doku.php/wiki:bugs" "</a></center>\n"); -#else // defined (Q_OS_WIN) - if (userSshd) { - detailed_error_message += tr ("X2Go Client was unable to create SSH host keys.\n\n" - - "Please report a bug on:\n" - "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" - "https://wiki.x2go.org/doku.php/wiki:bugs" - "</a></center>\n"); - } - else { -#ifdef Q_OS_DARWIN - detailed_error_message += tr ("On OS X, please follow these steps to generate the " - "required keys:" - - "<ul>" - "<li>Open a <b>Terminal Window</b> (Applications -> Utilities -> Terminal)</li>" - "<li>Run this command: <b>ssh -p " + clientSshPort.toLatin1 () - + " localhost</b></li>" - "<li>You do not need to login. Just quit the Terminal application " - "via Cmd + Q</li>" - "</ul>"); -#else // defined (Q_OS_DARWIN) - detailed_error_message += tr ("Please ask your system administrator to generate the required host keys.\n\n" - - "If you are administrating this system yourself, please run:\n" - - "<center><b>sudo ssh-keygen -A</b></center>\n\n"); -#endif // defined (Q_OS_DARWIN) - } -#endif // defined (Q_OS_WIN) detailed_error_message += tr ("Disabling Remote Printing or File Sharing support " "in the session settings will get rid of this message."); diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 2741ec2..eb8cb1c 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -837,7 +837,6 @@ private: QProcess *nxproxy; #ifndef Q_OS_WIN QProcess *sshd; - bool userSshd; #else QProcess *xorg; PROCESS_INFORMATION sshd; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5d97c1ceb676f5edba0efd147cd149c7771022c6 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Sep 23 08:00:19 2016 +0200 src/onmainwindow.cpp: when starting sshd on Unix-based plattforms, raise maximum startup time to 5 seconds and break out early, if the process went into running state earlier. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2cc9c07..eb651b7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -401,6 +401,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium and code related to non-user-mode-sshd setups. Simplifies code a bit and we want to always start a user-mode OpenSSH server anyway. Also get rid of the clientport variable that is now unnecessary. + - src/onmainwindow.cpp: when starting sshd on Unix-based plattforms, raise + maximum startup time to 5 seconds and break out early, if the process + went into running state earlier. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 20a3ebe..e202b83 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10478,9 +10478,13 @@ bool ONMainWindow::startSshd() sshd->start (binary, arguments); #endif /* defined (Q_OS_WIN) */ - // Allow sshd a grace time of 3 seconds to come up. - QTime sleepTime = QTime::currentTime ().addSecs (3); + // Allow sshd a grace time of 5 seconds to come up. + QTime sleepTime = QTime::currentTime ().addSecs (5); while (QTime::currentTime () < sleepTime) { + if (QProcess::Running == sshd->state ()) { + break; + } + QCoreApplication::processEvents (QEventLoop::AllEvents, 100); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit ba36025a193a80e8cfb79a02bf53daf70b7e1fbc Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Sep 23 08:01:38 2016 +0200 src/onmainwindow.cpp: uppercase key type in debug output and comment string in generateKey (). --- debian/changelog | 2 ++ src/onmainwindow.cpp | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index eb651b7..5517f92 100644 --- a/debian/changelog +++ b/debian/changelog @@ -404,6 +404,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: when starting sshd on Unix-based plattforms, raise maximum startup time to 5 seconds and break out early, if the process went into running state earlier. + - src/onmainwindow.cpp: uppercase key type in debug output and comment + string in generateKey (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index e202b83..22bb3cd 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10322,11 +10322,12 @@ QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_ke if ((!(QFile::exists (private_key_file))) || (!(QFile::exists (public_key_file)))) { - x2goDebug << "Generating SSH key. Type: " << stringified_key_type; + x2goDebug << "Generating SSH key. Type: " << stringified_key_type.toUpper () + << "; Location: " << private_key_file; QStringList args; - QString comment = "X2Go Client " + stringified_key_type + " "; + QString comment = "X2Go Client " + stringified_key_type.toUpper () + " "; if (host_key) { comment += "host"; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8634fabcffa514fef39e14c2cff5c2219aa9c1b5 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:07:38 2016 +0200 src/onmainwindow.{cpp,h}: add new function check_key_type (). Takes a key type and checks for validity/if it's known. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 27 +++++++++++++++++++++++++++ src/onmainwindow.h | 2 ++ 3 files changed, 31 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2a67fc9..0485e0c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -408,6 +408,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium string in generateKey (). - src/onmainwindow.cpp: terminate sshd more correctly. First via terminate (), then wait up to 5 seconds, then via kill (). + - src/onmainwindow.{cpp,h}: add new function check_key_type (). Takes a + key type and checks for validity/if it's known. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 653db50..36abf7e 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10246,6 +10246,33 @@ void ONMainWindow::generateEtcFiles() x2goDebug<<etcDir +"/sshd_config created."; } +ONMainWindow::key_types ONMainWindow::check_key_type (ONMainWindow::key_types key_type) { + ONMainWindow::key_types ret = key_type; + + switch (key_type) { + case RSA_KEY_TYPE: + break; + case DSA_KEY_TYPE: + break; + case ECDSA_KEY_TYPE: + break; + case ED25519_KEY_TYPE: + break; + default: + ret = UNKNOWN_KEY_TYPE; + } + + if (UNKNOWN_KEY_TYPE == ret) { + QMessageBox::critical (this, tr ("SSH key type selection error"), + tr ("Unknown SSH key selected.") + + "\n" + + tr ("Terminating application.")); + close (); + } + + return (ret); +} + QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; diff --git a/src/onmainwindow.h b/src/onmainwindow.h index eb8cb1c..476d4a9 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1217,6 +1217,8 @@ private: QString getXDisplay(); #endif + key_types check_key_type (key_types key_type); + ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN public slots: -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9fcbc90cafb019e6d8b4074128d0864490907030 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:13:08 2016 +0200 src/onmainwindow.{cpp,h}: add new function key_type_to_string (). Returns a stringified version of the selected key type, after checking for validity. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 24 ++++++++++++++++++++++++ src/onmainwindow.h | 1 + 3 files changed, 28 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0485e0c..1c79ebc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -410,6 +410,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium (), then wait up to 5 seconds, then via kill (). - src/onmainwindow.{cpp,h}: add new function check_key_type (). Takes a key type and checks for validity/if it's known. + - src/onmainwindow.{cpp,h}: add new function key_type_to_string (). + Returns a stringified version of the selected key type, after checking + for validity. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 36abf7e..25eb063 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10273,6 +10273,30 @@ ONMainWindow::key_types ONMainWindow::check_key_type (ONMainWindow::key_types ke return (ret); } +QString ONMainWindow::key_type_to_string (ONMainWindow::key_types key_type) { + ONMainWindow::key_types sanitized_key_type = check_key_type (key_type); + QString ret (""); + + switch (sanitized_key_type) { + case RSA_KEY_TYPE: + ret = "rsa"; + break; + case DSA_KEY_TYPE: + ret = "dsa"; + break; + case ECDSA_KEY_TYPE: + ret = "ecdsa"; + break; + case ED25519_KEY_TYPE: + ret = "ed25519"; + break; + default: + ret = "unknown"; + } + + return (ret); +} + QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 476d4a9..ecfe2ef 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1218,6 +1218,7 @@ private: #endif key_types check_key_type (key_types key_type); + QString key_type_to_string (key_types key_type); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d6af8b1cfbe5a6361d2278159f113658ed037ddb Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Sep 23 08:21:13 2016 +0200 src/onmainwindow.cpp: terminate sshd more correctly. First via terminate (), then wait up to 5 seconds, then via kill (). --- debian/changelog | 2 ++ src/onmainwindow.cpp | 32 +++++++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5517f92..2a67fc9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -406,6 +406,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium went into running state earlier. - src/onmainwindow.cpp: uppercase key type in debug output and comment string in generateKey (). + - src/onmainwindow.cpp: terminate sshd more correctly. First via terminate + (), then wait up to 5 seconds, then via kill (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 22bb3cd..653db50 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -1515,11 +1515,33 @@ void ONMainWindow::closeClient() #endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ #ifndef Q_OS_WIN - if (sshd) - { - x2goDebug<<"Terminating the OpenSSH server ..."; - sshd->terminate(); - x2goDebug<<"Terminated the OpenSSH server."; + if (sshd) { + x2goDebug << "Terminating the OpenSSH server ..."; + sshd->terminate (); + + /* Allow sshd a grace time of 5 seconds to terminate. */ + QTime sleep_time = QTime::currentTime ().addSecs (5); + bool killed = false; + while (QTime::currentTime () < sleep_time) { + if (QProcess::NotRunning == sshd->state ()) { + killed = true; + break; + } + + QCoreApplication::processEvents (QEventLoop::AllEvents, 100); + } + + if (!killed) { + /* Grace period over, force termination. */ + sshd->kill (); + + if (!(sshd->waitForFinished (500))) { + x2goWarningf (8) << "OpenSSH Server failed to terminate in time " + " and the kill command timed out."; + } + } + + x2goDebug << "Terminated the OpenSSH server."; delete sshd; } #endif /* !defined (Q_OS_WIN) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2e77d1a6dd538a299acb620491bf007d0409f7e8 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:25:39 2016 +0200 src/onmainwindow.h: move generateKey () declaration around. --- debian/changelog | 1 + src/onmainwindow.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 30f2057..a50ee2a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -417,6 +417,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium Returns the default key size in bits for the selected key type, after checking for validity. - src/onmainwindow.cpp: use the new functions in generateKey (). + - src/onmainwindow.h: move generateKey () declaration around. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index d01d789..a952da2 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1204,7 +1204,6 @@ private: #endif void filterDesktops ( const QString& filter, bool strict=false ); - QString generateKey(key_types key_type, bool host_key = false); void generateEtcFiles(); QString u3DataPath(); void cleanPortable(); @@ -1220,6 +1219,7 @@ private: key_types check_key_type (key_types key_type); QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); + QString generateKey(key_types key_type, bool host_key = false); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5950e4995d7c25775f3a35253a009fd36529a03b Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:19:42 2016 +0200 src/onmainwindow.cpp: use the new functions in generateKey (). --- debian/changelog | 1 + src/onmainwindow.cpp | 41 +++-------------------------------------- 2 files changed, 4 insertions(+), 38 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4d829eb..30f2057 100644 --- a/debian/changelog +++ b/debian/changelog @@ -416,6 +416,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). Returns the default key size in bits for the selected key type, after checking for validity. + - src/onmainwindow.cpp: use the new functions in generateKey (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 0680725..707b6d8 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10324,45 +10324,10 @@ std::size_t ONMainWindow::default_size_for_key_type (ONMainWindow::key_types key QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { - ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; - QString stringified_key_type (""); - std::size_t key_bits = 0; + QString stringified_key_type (key_type_to_string (key_type)); + std::size_t key_bits = default_size_for_key_type (key_type); + QString ret (""); - switch (key_type) { - case RSA_KEY_TYPE: - sanitized_key_type = key_type; - stringified_key_type = "rsa"; - key_bits = 4096; - break; - case DSA_KEY_TYPE: - sanitized_key_type = key_type; - stringified_key_type = "dsa"; - key_bits = 1024; - break; - case ECDSA_KEY_TYPE: - sanitized_key_type = key_type; - stringified_key_type = "ecdsa"; - key_bits = 384; - break; - case ED25519_KEY_TYPE: - sanitized_key_type = key_type; - stringified_key_type = "ed25519"; - /* Fixed key length, flag will be unused. */ - key_bits = 0; - break; - default: - sanitized_key_type = UNKNOWN_KEY_TYPE; - stringified_key_type = "unknown"; - key_bits = 0; - } - - if (sanitized_key_type == UNKNOWN_KEY_TYPE) { - QMessageBox::critical (this, tr ("SSH key type selection error"), - tr ("Unknown SSH key selected.") - + "\n" - + tr ("Terminating application.")); - close (); - } QString base_dir (homeDir); QString private_key_file (""); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 65a6d0b5b802928fec90a1f6ec620bf56a0662f3 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:17:05 2016 +0200 src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). Returns the default key size in bits for the selected key type, after checking for validity. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 25 +++++++++++++++++++++++++ src/onmainwindow.h | 1 + 3 files changed, 29 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1c79ebc..4d829eb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -413,6 +413,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.{cpp,h}: add new function key_type_to_string (). Returns a stringified version of the selected key type, after checking for validity. + - src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). + Returns the default key size in bits for the selected key type, after + checking for validity. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 25eb063..0680725 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10297,6 +10297,31 @@ QString ONMainWindow::key_type_to_string (ONMainWindow::key_types key_type) { return (ret); } +std::size_t ONMainWindow::default_size_for_key_type (ONMainWindow::key_types key_type) { + ONMainWindow::key_types sanitized_key_type = check_key_type (key_type); + std::size_t ret = 0; + + switch (sanitized_key_type) { + case RSA_KEY_TYPE: + ret = 4096; + break; + case DSA_KEY_TYPE: + ret = 1024; + break; + case ECDSA_KEY_TYPE: + ret = 384; + break; + case ED25519_KEY_TYPE: + /* Fixed key length, flag will be unused. */ + ret = 0; + break; + default: + ret = 0; + } + + return (ret); +} + QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; diff --git a/src/onmainwindow.h b/src/onmainwindow.h index ecfe2ef..d01d789 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,6 +1219,7 @@ private: key_types check_key_type (key_types key_type); QString key_type_to_string (key_types key_type); + std::size_t default_size_for_key_type (key_types key_type); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4f140befe06c1f2837342ebc3988558bd1e8b733 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:33:15 2016 +0200 src/onmainwindow.{cpp,h}: move createRSAKey () around. --- debian/changelog | 1 + src/onmainwindow.cpp | 164 +++++++++++++++++++++++++------------------------- src/onmainwindow.h | 2 +- 3 files changed, 84 insertions(+), 83 deletions(-) diff --git a/debian/changelog b/debian/changelog index 20381af..e716d32 100644 --- a/debian/changelog +++ b/debian/changelog @@ -419,6 +419,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: use the new functions in generateKey (). - src/onmainwindow.h: move generateKey () declaration around. - src/onmainwindow.{cpp,h}: reformat generateKey () only. + - src/onmainwindow.{cpp,h}: move createRSAKey () around. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index bfc3c0d..de9d5b9 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8093,88 +8093,6 @@ void ONMainWindow::exportDefaultDirs() exportDirs ( dirs.join ( ":" ) ); } -QString ONMainWindow::createRSAKey() -{ - /* - * I spent multiple hours on trying to understand this function - * and directory exporting in general, so I'd better document - * this. - * - * This function first generates a new RSA private-public key - * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. - * - * Then, the SSH daemon's public host key is read and appended - * to the *private* SSH key file after a marker looking like - * this: "----BEGIN RSA IDENTITY----" - * - * Later on, this *private* SSH key file is transferred to the - * remote server, which parses it in the "x2gomountdirs" perl - * script and extracts the public key (used for logging in - * to the client machine) and the public *host* key, used to - * circumvent the "untrusted host" message by SSH by - * explicitly giving the aforementioned public *host* key as - * the only element in a fake "authorized_keys" file. Again, - * this is all happening server-side. - * - * The *public* key part generated here is then taken and - * later added to the "authorized_keys" file on the client - * side, to allow auto-logins via the generated and transferred - * private SSH key. - */ - - QString user_key = generateKey (RSA_KEY_TYPE); - - /* - * Now taking the *host* pub key here... - */ - QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); -#ifdef Q_OS_WIN - rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); -#endif - - if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { - x2goDebug << "Unable to open public host key file."; -#ifdef Q_OS_UNIX - x2goDebug << "Creating a new one."; - QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); - generateEtcFiles (); - - if (!(startSshd ())) { - return (QString::null); - } - - rsa.setFileName (tmp_file_name + ".pub"); - rsa.open (QIODevice::ReadOnly | QIODevice::Text); -#else - printSshDError_noHostPubKey (); - return QString::null; -#endif - } - - QByteArray rsa_pub; - - if ( !rsa.atEnd() ) - rsa_pub = rsa.readLine(); - else - { - x2goErrorf(9)<<tr("RSA file empty."); - return QString::null; - } - - QFile file ( user_key ); - if ( !file.open ( - QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append ) - ) - { - x2goErrorf(10) << tr ("Cannot open key: ") << user_key; - return user_key; - } - QTextStream out ( &file ); - out<<"----BEGIN RSA IDENTITY----"<<rsa_pub; - file.close(); - return user_key; -} - void ONMainWindow::slotCopyKey ( bool result, QString output, int pid) { fsExportKey=sshConnection->getSourceFile(pid); @@ -10442,6 +10360,88 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k return (ret); } +QString ONMainWindow::createRSAKey() +{ + /* + * I spent multiple hours on trying to understand this function + * and directory exporting in general, so I'd better document + * this. + * + * This function first generates a new RSA private-public key + * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. + * + * Then, the SSH daemon's public host key is read and appended + * to the *private* SSH key file after a marker looking like + * this: "----BEGIN RSA IDENTITY----" + * + * Later on, this *private* SSH key file is transferred to the + * remote server, which parses it in the "x2gomountdirs" perl + * script and extracts the public key (used for logging in + * to the client machine) and the public *host* key, used to + * circumvent the "untrusted host" message by SSH by + * explicitly giving the aforementioned public *host* key as + * the only element in a fake "authorized_keys" file. Again, + * this is all happening server-side. + * + * The *public* key part generated here is then taken and + * later added to the "authorized_keys" file on the client + * side, to allow auto-logins via the generated and transferred + * private SSH key. + */ + + QString user_key = generateKey (RSA_KEY_TYPE); + + /* + * Now taking the *host* pub key here... + */ + QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); +#ifdef Q_OS_WIN + rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); +#endif + + if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { + x2goDebug << "Unable to open public host key file."; +#ifdef Q_OS_UNIX + x2goDebug << "Creating a new one."; + QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); + generateEtcFiles (); + + if (!(startSshd ())) { + return (QString::null); + } + + rsa.setFileName (tmp_file_name + ".pub"); + rsa.open (QIODevice::ReadOnly | QIODevice::Text); +#else + printSshDError_noHostPubKey (); + return QString::null; +#endif + } + + QByteArray rsa_pub; + + if ( !rsa.atEnd() ) + rsa_pub = rsa.readLine(); + else + { + x2goErrorf(9)<<tr("RSA file empty."); + return QString::null; + } + + QFile file ( user_key ); + if ( !file.open ( + QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append ) + ) + { + x2goErrorf(10) << tr ("Cannot open key: ") << user_key; + return user_key; + } + QTextStream out ( &file ); + out<<"----BEGIN RSA IDENTITY----"<<rsa_pub; + file.close(); + return user_key; +} + bool ONMainWindow::startSshd() { if ( embedMode && config.confFS && !config.useFs ) diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 83bb902..222da3e 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -955,7 +955,6 @@ private: bool soundParameter ( QString val ); void printError ( QString param ); void exportDefaultDirs(); - QString createRSAKey(); directory* getExpDir ( QString key ); bool findInList ( const QString& uid ); void setUsersEnabled ( bool enable ); @@ -1220,6 +1219,7 @@ private: QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); + QString createRSAKeyBundle(); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 07fe44f41f0057e52b377ade1311225ebf65d66b Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:26:47 2016 +0200 src/onmainwindow.{cpp,h}: reformat generateKey () only. --- debian/changelog | 1 + src/onmainwindow.cpp | 184 +++++++++++++++++++++++++------------------------- src/onmainwindow.h | 2 +- 3 files changed, 93 insertions(+), 94 deletions(-) diff --git a/debian/changelog b/debian/changelog index a50ee2a..20381af 100644 --- a/debian/changelog +++ b/debian/changelog @@ -418,6 +418,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium checking for validity. - src/onmainwindow.cpp: use the new functions in generateKey (). - src/onmainwindow.h: move generateKey () declaration around. + - src/onmainwindow.{cpp,h}: reformat generateKey () only. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 707b6d8..bfc3c0d 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10322,126 +10322,124 @@ std::size_t ONMainWindow::default_size_for_key_type (ONMainWindow::key_types key return (ret); } -QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) -{ - QString stringified_key_type (key_type_to_string (key_type)); - std::size_t key_bits = default_size_for_key_type (key_type); +QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_key) { + QString stringified_key_type (key_type_to_string (key_type)); + std::size_t key_bits = default_size_for_key_type (key_type); - QString ret (""); + QString ret (""); - QString base_dir (homeDir); - QString private_key_file (""); + QString base_dir (homeDir); + QString private_key_file (""); - if (host_key) { - base_dir += "/.x2go/etc/"; - } - else { - base_dir += "/.x2go/ssh/gen/"; - } + if (host_key) { + base_dir += "/.x2go/etc/"; + } + else { + base_dir += "/.x2go/ssh/gen/"; + } - { - QDir dir (homeDir); - if (!(dir.mkpath (base_dir))) { - QMessageBox::critical (this, tr ("SSH key base directory creation error"), - tr ("Unable to create SSH key base directory '%1'.").arg (base_dir) - + "\n" - + tr ("Terminating application.")); - close (); - } + { + QDir dir (homeDir); + if (!(dir.mkpath (base_dir))) { + QMessageBox::critical (this, tr ("SSH key base directory creation error"), + tr ("Unable to create SSH key base directory '%1'.").arg (base_dir) + + "\n" + + tr ("Terminating application.")); + close (); } + } #ifdef Q_OS_WIN - private_key_file = cygwinPath (wapiShortFileName (base_dir)); + private_key_file = cygwinPath (wapiShortFileName (base_dir)); #else - private_key_file = base_dir; + private_key_file = base_dir; #endif - ret = base_dir; + ret = base_dir; - { - QString tmp_to_add (""); + { + QString tmp_to_add (""); - if (host_key) { - tmp_to_add = "/ssh_host_" + stringified_key_type + "_key"; - } - else { - QTemporaryFile temp_file (base_dir + "/key"); - temp_file.open (); + if (host_key) { + tmp_to_add = "/ssh_host_" + stringified_key_type + "_key"; + } + else { + QTemporaryFile temp_file (base_dir + "/key"); + temp_file.open (); - /* Extract base name. */ - QFileInfo tmp_file_info (temp_file.fileName ()); - tmp_to_add = tmp_file_info.fileName (); + /* Extract base name. */ + QFileInfo tmp_file_info (temp_file.fileName ()); + tmp_to_add = tmp_file_info.fileName (); - /* Clean up again. We don't need the temporary file anymore. */ - temp_file.setAutoRemove (false); - temp_file.close (); - temp_file.remove (); - } - - private_key_file += tmp_to_add; - ret += tmp_to_add; + /* Clean up again. We don't need the temporary file anymore. */ + temp_file.setAutoRemove (false); + temp_file.close (); + temp_file.remove (); } - QString public_key_file (private_key_file + ".pub"); + private_key_file += tmp_to_add; + ret += tmp_to_add; + } - if ((!(QFile::exists (private_key_file))) || (!(QFile::exists (public_key_file)))) - { - x2goDebug << "Generating SSH key. Type: " << stringified_key_type.toUpper () - << "; Location: " << private_key_file; + QString public_key_file (private_key_file + ".pub"); - QStringList args; + if ((!(QFile::exists (private_key_file))) || (!(QFile::exists (public_key_file)))) { + x2goDebug << "Generating SSH key. Type: " << stringified_key_type.toUpper () + << "; Location: " << private_key_file; - QString comment = "X2Go Client " + stringified_key_type.toUpper () + " "; + QStringList args; - if (host_key) { - comment += "host"; - } - else { - comment += "user"; - } + QString comment = "X2Go Client " + stringified_key_type.toUpper () + " "; - comment += " key"; + if (host_key) { + comment += "host"; + } + else { + comment += "user"; + } - args << "-t" - << stringified_key_type - << "-b" - << QString::number (key_bits) - << "-N" - << "" - << "-C" - << comment - << "-f" - << private_key_file; + comment += " key"; - const int keygen_ret = QProcess::execute ("ssh-keygen", args); + args << "-t" + << stringified_key_type + << "-b" + << QString::number (key_bits) + << "-N" + << "" + << "-C" + << comment + << "-f" + << private_key_file; - if (-2 == keygen_ret) { - QMessageBox::critical (this, tr ("ssh-keygen launching error"), - tr ("Unable to start the ssh-keygen binary.") - + "\n" - + tr ("Terminating application.")); - close (); - } + const int keygen_ret = QProcess::execute ("ssh-keygen", args); - if (-1 == keygen_ret) { - QMessageBox::critical (this, tr ("ssh-keygen crashed"), - tr ("The ssh-keygen binary crashed.") - + "\n" - + tr ("Terminating application.")); - close (); - } + if (-2 == keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen launching error"), + tr ("Unable to start the ssh-keygen binary.") + + "\n" + + tr ("Terminating application.")); + close (); + } - if (0 != keygen_ret) { - QMessageBox::critical (this, tr ("ssh-keygen program error"), - tr ("The ssh-keygen binary did not exit cleanly.") - + " " - + tr ("It was probably called with unknown arguments.") - + "\n" - + tr ("Terminating application.")); - close (); - } + if (-1 == keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen crashed"), + tr ("The ssh-keygen binary crashed.") + + "\n" + + tr ("Terminating application.")); + close (); } - return (ret); + if (0 != keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen program error"), + tr ("The ssh-keygen binary did not exit cleanly.") + + " " + + tr ("It was probably called with unknown arguments.") + + "\n" + + tr ("Terminating application.")); + close (); + } + } + + return (ret); } bool ONMainWindow::startSshd() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index a952da2..83bb902 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,7 +1219,7 @@ private: key_types check_key_type (key_types key_type); QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); - QString generateKey(key_types key_type, bool host_key = false); + QString generateKey (key_types key_type, bool host_key = false); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8ae02d4d8acd8acafdf69d81ee4599bc883266f1 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:38:51 2016 +0200 src/onmainwindow.{cpp,h}: reformat createRSAKey () only. --- debian/changelog | 1 + src/onmainwindow.cpp | 133 ++++++++++++++++++++++++-------------------------- src/onmainwindow.h | 2 +- 3 files changed, 66 insertions(+), 70 deletions(-) diff --git a/debian/changelog b/debian/changelog index e716d32..bb9293e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -420,6 +420,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.h: move generateKey () declaration around. - src/onmainwindow.{cpp,h}: reformat generateKey () only. - src/onmainwindow.{cpp,h}: move createRSAKey () around. + - src/onmainwindow.{cpp,h}: reformat createRSAKey () only. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index de9d5b9..2c1e88c 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10360,86 +10360,81 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k return (ret); } -QString ONMainWindow::createRSAKey() -{ - /* - * I spent multiple hours on trying to understand this function - * and directory exporting in general, so I'd better document - * this. - * - * This function first generates a new RSA private-public key - * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. - * - * Then, the SSH daemon's public host key is read and appended - * to the *private* SSH key file after a marker looking like - * this: "----BEGIN RSA IDENTITY----" - * - * Later on, this *private* SSH key file is transferred to the - * remote server, which parses it in the "x2gomountdirs" perl - * script and extracts the public key (used for logging in - * to the client machine) and the public *host* key, used to - * circumvent the "untrusted host" message by SSH by - * explicitly giving the aforementioned public *host* key as - * the only element in a fake "authorized_keys" file. Again, - * this is all happening server-side. - * - * The *public* key part generated here is then taken and - * later added to the "authorized_keys" file on the client - * side, to allow auto-logins via the generated and transferred - * private SSH key. - */ - - QString user_key = generateKey (RSA_KEY_TYPE); - - /* - * Now taking the *host* pub key here... - */ - QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); +QString ONMainWindow::createRSAKey () { + /* + * I spent multiple hours on trying to understand this function + * and directory exporting in general, so I'd better document + * this. + * + * This function first generates a new RSA private-public key + * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. + * + * Then, the SSH daemon's public host key is read and appended + * to the *private* SSH key file after a marker looking like + * this: "----BEGIN RSA IDENTITY----" + * + * Later on, this *private* SSH key file is transferred to the + * remote server, which parses it in the "x2gomountdirs" perl + * script and extracts the public key (used for logging in + * to the client machine) and the public *host* key, used to + * circumvent the "untrusted host" message by SSH by + * explicitly giving the aforementioned public *host* key as + * the only element in a fake "authorized_keys" file. Again, + * this is all happening server-side. + * + * The *public* key part generated here is then taken and + * later added to the "authorized_keys" file on the client + * side, to allow auto-logins via the generated and transferred + * private SSH key. + */ + + QString user_key = generateKey (RSA_KEY_TYPE); + + /* + * Now taking the *host* pub key here... + */ + QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); #ifdef Q_OS_WIN - rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); + rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); #endif - if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { - x2goDebug << "Unable to open public host key file."; + if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { + x2goDebug << "Unable to open public host key file."; #ifdef Q_OS_UNIX - x2goDebug << "Creating a new one."; - QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); - generateEtcFiles (); + x2goDebug << "Creating a new one."; + QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); + generateEtcFiles (); - if (!(startSshd ())) { - return (QString::null); - } + if (!(startSshd ())) { + return (QString::null); + } - rsa.setFileName (tmp_file_name + ".pub"); - rsa.open (QIODevice::ReadOnly | QIODevice::Text); + rsa.setFileName (tmp_file_name + ".pub"); + rsa.open (QIODevice::ReadOnly | QIODevice::Text); #else - printSshDError_noHostPubKey (); - return QString::null; + printSshDError_noHostPubKey (); + return (QString::null); #endif - } + } - QByteArray rsa_pub; + QByteArray rsa_pub; - if ( !rsa.atEnd() ) - rsa_pub = rsa.readLine(); - else - { - x2goErrorf(9)<<tr("RSA file empty."); - return QString::null; - } + if (!(rsa.atEnd ())) { + rsa_pub = rsa.readLine (); + else { + x2goErrorf (9) << tr ("RSA file empty."); + return (QString::null); + } - QFile file ( user_key ); - if ( !file.open ( - QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append ) - ) - { - x2goErrorf(10) << tr ("Cannot open key: ") << user_key; - return user_key; - } - QTextStream out ( &file ); - out<<"----BEGIN RSA IDENTITY----"<<rsa_pub; - file.close(); - return user_key; + QFile file (user_key); + if (!(file.open (QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))) { + x2goErrorf (10) << tr ("Cannot open key: ") << user_key; + return (user_key); + } + QTextStream out (&file); + out << "----BEGIN RSA IDENTITY----" << rsa_pub; + file.close (); + return (user_key); } bool ONMainWindow::startSshd() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 222da3e..43b6adc 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,7 +1219,7 @@ private: QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); - QString createRSAKeyBundle(); + QString createRSAKey (); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f50892cda95e2ef7fae650807ff9b5f408d23657 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 23:04:46 2016 +0200 src/onmainwindow.cpp: let startSshd () act as a wrapper and be called multiple times. Check if the OpenSSH Server is already running and return true, otherwise try to start it. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index bb9293e..90648bf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -421,6 +421,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.{cpp,h}: reformat generateKey () only. - src/onmainwindow.{cpp,h}: move createRSAKey () around. - src/onmainwindow.{cpp,h}: reformat createRSAKey () only. + - src/onmainwindow.cpp: let startSshd () act as a wrapper and be called + multiple times. Check if the OpenSSH Server is already running and + return true, otherwise try to start it. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 2c1e88c..5362b3e 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10443,6 +10443,19 @@ bool ONMainWindow::startSshd() { return false; } + + /* Don't start sshd, if it's already running. */ +#ifdef Q_OS_WIN + if (winSshdStarted) +#else /* defined (Q_OS_WIN) */ + if (sshd) +#endif /* defined (Q_OS_WIN) */ + { + if (isServerRunning (clientSshPort.toInt ())) { + return (true); + } + } + clientSshPort = "7022"; QString etcDir=homeDir+"/.x2go/etc"; int port=clientSshPort.toInt(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f4743c8ae9334f4adf13cf3859d42dc7a486dced Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 23:09:18 2016 +0200 src/onmainwindow.cpp: add some comments only to createRSAKey (). --- debian/changelog | 1 + src/onmainwindow.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 90648bf..872641d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -424,6 +424,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: let startSshd () act as a wrapper and be called multiple times. Check if the OpenSSH Server is already running and return true, otherwise try to start it. + - src/onmainwindow.cpp: add some comments only to createRSAKey (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 5362b3e..90cdc64 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10431,7 +10431,15 @@ QString ONMainWindow::createRSAKey () { x2goErrorf (10) << tr ("Cannot open key: ") << user_key; return (user_key); } + + /* Append public host key into private user key file. */ QTextStream out (&file); + + /* + * The string here should be changed, but this requires + * changes to X2Go Server as well. + * As such, I'll be not changing it here for now. + */ out << "----BEGIN RSA IDENTITY----" << rsa_pub; file.close (); return (user_key); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit dba0e4a055df82407c5a03fbc3825490aed205da Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 23:12:15 2016 +0200 src/onmainwindow.{cpp,h}: rename createRSAKey () to the more-appropriate name createKeyBundle (). Also add a key-type parameter and use it to select the required key type (and maybe generate it if necessary.) Also use the new functions to get a stringified version of the key type etc. --- debian/changelog | 4 ++++ src/onmainwindow.cpp | 30 +++++++++++++++++++----------- src/onmainwindow.h | 2 +- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/debian/changelog b/debian/changelog index 872641d..029c3ef 100644 --- a/debian/changelog +++ b/debian/changelog @@ -425,6 +425,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium multiple times. Check if the OpenSSH Server is already running and return true, otherwise try to start it. - src/onmainwindow.cpp: add some comments only to createRSAKey (). + - src/onmainwindow.{cpp,h}: rename createRSAKey () to the more-appropriate + name createKeyBundle (). Also add a key-type parameter and use it to + select the required key type (and maybe generate it if necessary.) Also + use the new functions to get a stringified version of the key type etc. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 90cdc64..0503942 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -7928,7 +7928,7 @@ void ONMainWindow::exportDirs ( QString exports,bool removable ) dr.dirList=exports; - dr.key=createRSAKey(); + dr.key=createKeyBundle(); // Key creation failure or the like. if (dr.key.isEmpty ()) { @@ -10360,7 +10360,7 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k return (ret); } -QString ONMainWindow::createRSAKey () { +QString ONMainWindow::createKeyBundle (key_types key_type) { /* * I spent multiple hours on trying to understand this function * and directory exporting in general, so I'd better document @@ -10388,41 +10388,49 @@ QString ONMainWindow::createRSAKey () { * private SSH key. */ - QString user_key = generateKey (RSA_KEY_TYPE); + QString stringified_key_type (key_type_to_string (key_type)); + + QString user_key = generateKey (key_type); /* * Now taking the *host* pub key here... */ - QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); + const QString host_pub_key_file_name ("ssh_host_" + stringified_key_type + "_key.pub"); + QFile rsa (homeDir + "/.x2go/etc/" + host_pub_key_file_name); #ifdef Q_OS_WIN - rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); + rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\" + host_pub_key_file_name)); #endif if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { x2goDebug << "Unable to open public host key file."; #ifdef Q_OS_UNIX x2goDebug << "Creating a new one."; - QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); + QString tmp_file_name (generateKey (key_type, true)); generateEtcFiles (); - if (!(startSshd ())) { + rsa.setFileName (tmp_file_name + ".pub"); + if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { + x2goErrorf (9) << tr ("Unable to open newly generated %1 public host key file.").arg (stringified_key_type.toUpper ()); return (QString::null); } - - rsa.setFileName (tmp_file_name + ".pub"); - rsa.open (QIODevice::ReadOnly | QIODevice::Text); #else printSshDError_noHostPubKey (); return (QString::null); #endif } + if (!(startSshd ())) { + x2goDebug << "Failed to start OpenSSH Server pro-actively."; + return (QString::null); + } + QByteArray rsa_pub; if (!(rsa.atEnd ())) { rsa_pub = rsa.readLine (); + } else { - x2goErrorf (9) << tr ("RSA file empty."); + x2goErrorf (9) << tr ("%1 public host key file empty.").arg (stringified_key_type.toUpper ()); return (QString::null); } diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 43b6adc..21e6201 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,7 +1219,7 @@ private: QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); - QString createRSAKey (); + QString createKeyBundle (key_types key_type = RSA_KEY_TYPE); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit ac07522a478e5bc05965a04fa57356b974671ec3 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 17:51:18 2016 +0200 macbuild.sh: switch to bundling PA 9.0. --- debian/changelog | 1 + macbuild.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 029c3ef..ef55bb5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -429,6 +429,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium name createKeyBundle (). Also add a key-type parameter and use it to select the required key type (and maybe generate it if necessary.) Also use the new functions to get a stringified version of the key type etc. + - macbuild.sh: switch to bundling PA 9.0. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/macbuild.sh b/macbuild.sh index 5e7b336..90f8afb 100755 --- a/macbuild.sh +++ b/macbuild.sh @@ -178,7 +178,7 @@ NXPROXY="nxproxy" PULSEAUDIO_BINARIES=( "pulseaudio" "esdcompat" "pacat" "pacmd" "pactl" "pamon" "paplay" "parec" "parecord" "pasuspender" ) PULSEAUDIO_LIBRARIES=( "libpulse-simple.0.dylib" - "pulse-8.0" + "pulse-9.0" "pulseaudio" ) RESOURCE_FILES=( "audio/startup.wav" ) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 28f1874a33cebb33734e0f7c95070f9ffeeb93ae Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 17:57:05 2016 +0200 src/onmainwindow.cpp: move QProcess startup check in startSshd () to non-Windows code section and add a listening socket check loop. Windows uses other means of starting the daemon. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 22 ++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index ef55bb5..47427d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -430,6 +430,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium select the required key type (and maybe generate it if necessary.) Also use the new functions to get a stringified version of the key type etc. - macbuild.sh: switch to bundling PA 9.0. + - src/onmainwindow.cpp: move QProcess startup check in startSshd () to + non-Windows code section and add a listening socket check loop. Windows + uses other means of starting the daemon. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 0503942..8b2ece4 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10562,17 +10562,31 @@ bool ONMainWindow::startSshd() etcDir+"/ssh_host_rsa_key"<<"-D"<<"-p"<<clientSshPort; sshd->start (binary, arguments); -#endif /* defined (Q_OS_WIN) */ - // Allow sshd a grace time of 5 seconds to come up. - QTime sleepTime = QTime::currentTime ().addSecs (5); - while (QTime::currentTime () < sleepTime) { + /* Allow sshd a grace time of 5 seconds to come up. */ + QTime sleep_time = QTime::currentTime ().addSecs (5); + while (QTime::currentTime () < sleep_time) { if (QProcess::Running == sshd->state ()) { + /* + * Additionally, spin up to 3 seconds to give sshd + * the opportunity to launch its listening socket. + */ + QTime new_sleep_time = QTime::currentTime ().addSecs (3); + + while (QTime::currentTime () < new_sleep_time) { + if (isServerRunning (clientSshPort.toInt ())) { + break; + } + + QCoreApplication::processEvents (QEventLoop::AllEvents, 100); + } + break; } QCoreApplication::processEvents (QEventLoop::AllEvents, 100); } +#endif /* defined (Q_OS_WIN) */ if (!isServerRunning (clientSshPort.toInt ())) { printSshDError_startupFailure (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d7ce9fa08d7888e6df4cd7f079a6e93f462e8f81 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 17:58:27 2016 +0200 src/onmainwindow.cpp: add comment to last all-in listening check in startSshd (). --- debian/changelog | 2 ++ src/onmainwindow.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index 47427d1..ba20f6d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -433,6 +433,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: move QProcess startup check in startSshd () to non-Windows code section and add a listening socket check loop. Windows uses other means of starting the daemon. + - src/onmainwindow.cpp: add comment to last all-in listening check in + startSshd (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 8b2ece4..9afd46a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10588,6 +10588,7 @@ bool ONMainWindow::startSshd() } #endif /* defined (Q_OS_WIN) */ + /* Check to see if connecting to the listening socket works. */ if (!isServerRunning (clientSshPort.toInt ())) { printSshDError_startupFailure (); x2goDebug << "Failed to start user mode OpenSSH server."; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3ebafa38b3d8405ff753c828bc2ace7bb385e62a Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 18:01:52 2016 +0200 src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). --- debian/changelog | 2 ++ src/onmainwindow.cpp | 43 ++++++++++++++++++++++++++++++------------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/debian/changelog b/debian/changelog index ba20f6d..6659c93 100644 --- a/debian/changelog +++ b/debian/changelog @@ -435,6 +435,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium uses other means of starting the daemon. - src/onmainwindow.cpp: add comment to last all-in listening check in startSshd (). + - src/onmainwindow.cpp: add listening-check loop to the Windows-specific + code of startSshd (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 9afd46a..8821ba1 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10534,20 +10534,37 @@ bool ONMainWindow::startSshd() ZeroMemory ( &sshd, sizeof ( sshd ) ); si.lpDesktop=desktop; si.cb = sizeof ( si ); - CreateProcessA ( NULL, // No module name (use command line) - ( LPSTR ) strm.str().c_str(), // Command line - NULL, // Process handle not inheritable - NULL, // Thread handle not inheritable - TRUE, // Set handle inheritance to FALSE - 0/*CREATE_NO_WINDOW|CREATE_NEW_PROCESS_GROUP*/, - //creation flags - NULL, // Use parent's environment block - clientdir.c_str(), // Starting directory - &si, // Pointer to STARTUPINFO structure - &sshd );// Pointer to PROCESS_INFORMATION structure - /* FIXME: test successful SSH daemon startup */ + const BOOL ret = CreateProcessA ( NULL, // No module name (use command line) + ( LPSTR ) strm.str().c_str(), // Command line + NULL, // Process handle not inheritable + NULL, // Thread handle not inheritable + TRUE, // Set handle inheritance to FALSE + 0/*CREATE_NO_WINDOW|CREATE_NEW_PROCESS_GROUP*/, + //creation flags + NULL, // Use parent's environment block + clientdir.c_str(), // Starting directory + &si, // Pointer to STARTUPINFO structure + &sshd );// Pointer to PROCESS_INFORMATION structure + + /* Test successful SSH daemon startup for at most 5 seconds. */ + if (ret) { + QTime sleep_time = QTime::currentTime ().addSecs (5); + + while (QTime::currentTime () < sleep_time) { + if (isServerRunning (clientSshPort.toInt ())) { + winSshdStarted = true; + + break; + } + + QCoreApplication::processEvents (QEventLoop::AllEvents, 100); + } + } + else { + winSshdStarted = false; + } + delete []desktop; - winSshdStarted=true; #else // defined (Q_OS_WIN) sshd=new QProcess ( this ); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c9b2590877512d69fe0c1af30e152ba00cfce83c Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 18:21:13 2016 +0200 src/onmainwindow.{cpp,h}: make startSshd () private. There's no need to keep it public, as only class-internal functions are using it. --- debian/changelog | 2 ++ src/onmainwindow.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6659c93..7303e10 100644 --- a/debian/changelog +++ b/debian/changelog @@ -437,6 +437,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium startSshd (). - src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). + - src/onmainwindow.{cpp,h}: make startSshd () private. There's no need to + keep it public, as only class-internal functions are using it. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 21e6201..3139efd 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -583,7 +583,6 @@ public: QString internAppName ( const QString& transAppName, bool* found=0l ); void setEmbedSessionActionsEnabled ( bool enable ); - bool startSshd(); QSize getEmbedAreaSize(); #ifdef Q_OS_WIN static QString cygwinPath ( const QString& winPath ); @@ -1220,6 +1219,7 @@ private: std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); QString createKeyBundle (key_types key_type = RSA_KEY_TYPE); + bool startSshd(); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b1d83198e374978240e6a6572c64cbe0c2594e17 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 19:04:50 2016 +0200 src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 7 +++++++ src/onmainwindow.h | 3 +++ 3 files changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7303e10..7cc326d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -439,6 +439,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium code of startSshd (). - src/onmainwindow.{cpp,h}: make startSshd () private. There's no need to keep it public, as only class-internal functions are using it. + - src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter + and setter to WinServerStarter class. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 8821ba1..a530d59 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9968,6 +9968,13 @@ void WinServerStarter::run() } } +void WinServerStarter::set_ssh_key_type (ONMainWindow::key_types key_type) { + ssh_key_type_ = key_type; +} + +ONMainWindow::key_types WinServerStarter::get_ssh_key_type () { + return (ssh_key_type_); +} void ONMainWindow::startWinServers() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 3139efd..f6b365c 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -256,9 +256,12 @@ public: enum daemon {X,SSH}; WinServerStarter ( daemon server, ONMainWindow * par ); void run(); + void set_ssh_key_type (ONMainWindow::key_types key_type); + ONMainWindow::key_types get_ssh_key_type (); private: daemon mode; ONMainWindow* parent; + key_types ssh_key_type_ = RSA_KEY_TYPE; }; #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 58a4964a26eef311d86c03c79648ba383a580424 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 19:09:42 2016 +0200 src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). --- debian/changelog | 1 + src/onmainwindow.cpp | 2 +- src/onmainwindow.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7cc326d..2f2fa02 100644 --- a/debian/changelog +++ b/debian/changelog @@ -441,6 +441,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium keep it public, as only class-internal functions are using it. - src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. + - src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index a530d59..ff0d8e6 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10460,7 +10460,7 @@ QString ONMainWindow::createKeyBundle (key_types key_type) { return (user_key); } -bool ONMainWindow::startSshd() +bool ONMainWindow::startSshd(ONMainWindow::key_types key_type) { if ( embedMode && config.confFS && !config.useFs ) { diff --git a/src/onmainwindow.h b/src/onmainwindow.h index f6b365c..f09d6c3 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1222,7 +1222,7 @@ private: std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); QString createKeyBundle (key_types key_type = RSA_KEY_TYPE); - bool startSshd(); + bool startSshd (key_types key_type = RSA_KEY_TYPE); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 6b073294628be07db2e49973f5d1e525c631591e Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 19:13:15 2016 +0200 src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call in WinServerStarter::run (). --- debian/changelog | 2 ++ src/onmainwindow.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 2f2fa02..2d79b59 100644 --- a/debian/changelog +++ b/debian/changelog @@ -442,6 +442,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. - src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). + - src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call + in WinServerStarter::run (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index ff0d8e6..1cd99cb 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9960,7 +9960,7 @@ void WinServerStarter::run() switch ( mode ) { case SSH: - parent->startSshd(); + parent->startSshd(ssh_key_type_); break; case X: parent->startXOrg(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8d1fc7ffc7dd6e863be76a978947b93301357bc5 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 19:14:20 2016 +0200 src/onmainwindow.cpp: pass key_type parameter to startSshd () in createKeyBundle (). --- debian/changelog | 2 ++ src/onmainwindow.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 2d79b59..8d92432 100644 --- a/debian/changelog +++ b/debian/changelog @@ -444,6 +444,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). - src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call in WinServerStarter::run (). + - src/onmainwindow.cpp: pass key_type parameter to startSshd () in + createKeyBundle (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 1cd99cb..496ea20 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10426,7 +10426,7 @@ QString ONMainWindow::createKeyBundle (key_types key_type) { #endif } - if (!(startSshd ())) { + if (!(startSshd (key_type))) { x2goDebug << "Failed to start OpenSSH Server pro-actively."; return (QString::null); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9f66fa0e2d5f5a420078cc62ad608d98e3bd1341 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 19:18:07 2016 +0200 src/onmainwindow.cpp: add and use key_types parameter to startWinServers (). --- debian/changelog | 2 ++ src/onmainwindow.cpp | 6 ++++-- src/onmainwindow.h | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8d92432..75a3f5d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -446,6 +446,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium in WinServerStarter::run (). - src/onmainwindow.cpp: pass key_type parameter to startSshd () in createKeyBundle (). + - src/onmainwindow.cpp: add and use key_types parameter to + startWinServers (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 496ea20..176db99 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9977,8 +9977,9 @@ ONMainWindow::key_types WinServerStarter::get_ssh_key_type () { } -void ONMainWindow::startWinServers() +void ONMainWindow::startWinServers(ONMainWindow::key_types key_type) { + key_type = check_key_type (key_type); x2goDebug<<"Starting helper servers for Windows ..."; @@ -9994,7 +9995,8 @@ void ONMainWindow::startWinServers() { dr.mkpath ( etcDir ); - UNUSED (generateKey (RSA_KEY_TYPE, true)); + UNUSED (generateKey (key_type, true)); + sshStarter->set_ssh_key_type (key_type); generateEtcFiles(); sshStarter->start(); } diff --git a/src/onmainwindow.h b/src/onmainwindow.h index f09d6c3..f9a9e4b 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1011,7 +1011,7 @@ protected: #else private slots: void slotSetWinServersReady(); - void startWinServers(); + void startWinServers(key_types key_type = RSA_KEY_TYPE); void slotCheckXOrgLog(); void slotCheckXOrgConnection(); void slotStartParec (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c8434021d8f7ba1a406b94ec2a02b8ca15b70b60 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 20:36:14 2016 +0200 src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. --- debian/changelog | 2 ++ src/onmainwindow.h | 35 +++++++++++++++++++---------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8417bda..c468a22 100644 --- a/debian/changelog +++ b/debian/changelog @@ -450,6 +450,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium startWinServers (). - src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. + - src/onmainwindow.h: move WinServerStarter class definition around to + hopefully get the definition of ONMainWindow::key_types. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index f9a9e4b..840ea83 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -247,22 +247,6 @@ class WWrapper : public QPushButton { friend class ONMainWindow; }; -#include <QThread> -#include <QMutex> -class ONMainWindow; -class WinServerStarter: public QThread -{ -public: - enum daemon {X,SSH}; - WinServerStarter ( daemon server, ONMainWindow * par ); - void run(); - void set_ssh_key_type (ONMainWindow::key_types key_type); - ONMainWindow::key_types get_ssh_key_type (); -private: - daemon mode; - ONMainWindow* parent; - key_types ssh_key_type_ = RSA_KEY_TYPE; -}; #endif @@ -1269,4 +1253,23 @@ private slots: ////////////////end of plugin stuff//////////////////// }; +#ifdef Q_OS_WIN +#include <QThread> +#include <QMutex> +class ONMainWindow; +class WinServerStarter: public QThread +{ +public: + enum daemon {X,SSH}; + WinServerStarter ( daemon server, ONMainWindow * par ); + void run(); + void set_ssh_key_type (ONMainWindow::key_types key_type); + ONMainWindow::key_types get_ssh_key_type (); +private: + daemon mode; + ONMainWindow* parent; + ONMainWindow::key_types ssh_key_type_ = RSA_KEY_TYPE; +}; +#endif + #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 21609cac27ae9966d6c0167343743e2aeae881a4 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 19:25:33 2016 +0200 src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 75a3f5d..8417bda 100644 --- a/debian/changelog +++ b/debian/changelog @@ -448,6 +448,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium createKeyBundle (). - src/onmainwindow.cpp: add and use key_types parameter to startWinServers (). + - src/onmainwindow.cpp: actually use key_type parameter in startSshd () + and make selection more generic. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 176db99..0ff7d31 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10469,6 +10469,8 @@ bool ONMainWindow::startSshd(ONMainWindow::key_types key_type) return false; } + const QString stringified_key_type = key_type_to_string (key_type); + /* Don't start sshd, if it's already running. */ #ifdef Q_OS_WIN if (winSshdStarted) @@ -10492,8 +10494,7 @@ bool ONMainWindow::startSshd(ONMainWindow::key_types key_type) std::string clientdir=wapiShortFileName ( appDir ).toStdString(); std::stringstream strm; std::string config="\""+cygwinPath(etcDir+"/sshd_config").toStdString()+"\""; - /* FIXME: make this generic! */ - std::string key="\""+cygwinPath(etcDir+"/ssh_host_rsa_key").toStdString()+"\""; + std::string key="\""+cygwinPath(etcDir+"/ssh_host_" + stringified_key_type + "_key").toStdString()+"\""; // generate a unique sshLog filepath, and create its directory if (debugging) @@ -10583,9 +10584,8 @@ bool ONMainWindow::startSshd(ONMainWindow::key_types key_type) #endif /* !(defined (Q_OS_UNIX)) */ QStringList arguments; - /* FIXME: make key selection more generic! */ arguments<<"-f"<<etcDir +"/sshd_config"<< "-h" << - etcDir+"/ssh_host_rsa_key"<<"-D"<<"-p"<<clientSshPort; + etcDir+"/ssh_host_" + stringified_key_type + "_key"<<"-D"<<"-p"<<clientSshPort; sshd->start (binary, arguments); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 540e813ffe2c6402671dda2e16814b8f62c7b8c0 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 20:37:29 2016 +0200 src/onmainwindow.h: remove WWrapper definition, seems to be unused. --- debian/changelog | 1 + src/onmainwindow.h | 9 --------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index c468a22..623f70e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -452,6 +452,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium and make selection more generic. - src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. + - src/onmainwindow.h: remove WWrapper definition, seems to be unused. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 840ea83..dc3e6ec 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -241,15 +241,6 @@ struct sshKey }; -//wrapper to send mouse events under windows in embedded mode -#ifdef Q_OS_WIN -class WWrapper : public QPushButton -{ - friend class ONMainWindow; -}; -#endif - - class SessTreeView : public QTreeView { Q_OBJECT -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d988a25f559d257ff8e91ac4af7669dce044b5b9 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 20:42:45 2016 +0200 src/onmainwindow.{cpp,h}: don't try to initialize non-static ssh_key_type_ member variable directly, but in the constructor. Also, use the initializer list to initialize the other member variables directly. --- debian/changelog | 4 ++++ src/onmainwindow.cpp | 4 +--- src/onmainwindow.h | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 623f70e..6d61060 100644 --- a/debian/changelog +++ b/debian/changelog @@ -453,6 +453,10 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. - src/onmainwindow.h: remove WWrapper definition, seems to be unused. + - src/onmainwindow.{cpp,h}: don't try to initialize non-static + ssh_key_type_ member variable directly, but in the constructor. Also, + use the initializer list to initialize the other member variables + directly. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 0ff7d31..35aecb9 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9949,10 +9949,8 @@ void ONMainWindow::slotCheckXOrgConnection() } WinServerStarter::WinServerStarter ( daemon server, ONMainWindow * par ) : - QThread ( 0 ) + QThread ( 0 ), ssh_key_type_ (ONMainWindow::RSA_KEY_TYPE), mode (server), parent (par) { - mode=server; - parent=par; } void WinServerStarter::run() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index dc3e6ec..144241f 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1259,7 +1259,7 @@ public: private: daemon mode; ONMainWindow* parent; - ONMainWindow::key_types ssh_key_type_ = RSA_KEY_TYPE; + ONMainWindow::key_types ssh_key_type_; }; #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 13f6832197a292c5cccd872de299456fa0ba140b Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 20:46:08 2016 +0200 src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6d61060..0ee46df 100644 --- a/debian/changelog +++ b/debian/changelog @@ -457,6 +457,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium ssh_key_type_ member variable directly, but in the constructor. Also, use the initializer list to initialize the other member variables directly. + - src/onmainwindow.cpp: re-order initializer list of WinServerStarter + constructor. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 35aecb9..15d15cb 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9949,7 +9949,7 @@ void ONMainWindow::slotCheckXOrgConnection() } WinServerStarter::WinServerStarter ( daemon server, ONMainWindow * par ) : - QThread ( 0 ), ssh_key_type_ (ONMainWindow::RSA_KEY_TYPE), mode (server), parent (par) + QThread ( 0 ), mode (server), parent (par), ssh_key_type_ (ONMainWindow::RSA_KEY_TYPE) { } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8d9d6db86b24e00a0b628acc8fefa3a9cfb909d7 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 20:47:32 2016 +0200 src/onmainwindow.h: actually, we do need startSshd () to be public. Move it back. --- debian/changelog | 2 ++ src/onmainwindow.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 0ee46df..eca23fe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -459,6 +459,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium directly. - src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. + - src/onmainwindow.h: actually, we do need startSshd () to be public. Move + it back. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 144241f..433dfad 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -561,6 +561,7 @@ public: QString internAppName ( const QString& transAppName, bool* found=0l ); void setEmbedSessionActionsEnabled ( bool enable ); + bool startSshd (key_types key_type = RSA_KEY_TYPE); QSize getEmbedAreaSize(); #ifdef Q_OS_WIN static QString cygwinPath ( const QString& winPath ); @@ -1197,7 +1198,6 @@ private: std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); QString createKeyBundle (key_types key_type = RSA_KEY_TYPE); - bool startSshd (key_types key_type = RSA_KEY_TYPE); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 88d23944453f5ee8bb3bbe07109163540cbe8f72 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 21:27:37 2016 +0200 src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in generateKey (). Refactor a bit to drop the now-unnecessary ret variable. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 23 ++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index eca23fe..4cafeb0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -461,6 +461,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium constructor. - src/onmainwindow.h: actually, we do need startSshd () to be public. Move it back. + - src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in + generateKey (). Refactor a bit to drop the now-unnecessary ret variable. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 15d15cb..8559bfb 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10251,8 +10251,6 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k QString stringified_key_type (key_type_to_string (key_type)); std::size_t key_bits = default_size_for_key_type (key_type); - QString ret (""); - QString base_dir (homeDir); QString private_key_file (""); @@ -10274,12 +10272,10 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k } } -#ifdef Q_OS_WIN - private_key_file = cygwinPath (wapiShortFileName (base_dir)); -#else private_key_file = base_dir; +#ifdef Q_OS_WIN + QString private_key_file_cygwin = cygwinPath (wapiShortFileName (base_dir)); #endif - ret = base_dir; { QString tmp_to_add (""); @@ -10302,14 +10298,23 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k } private_key_file += tmp_to_add; - ret += tmp_to_add; +#ifdef Q_OS_WIN + private_key_file_cygwin += tmp_to_add; +#endif } QString public_key_file (private_key_file + ".pub"); if ((!(QFile::exists (private_key_file))) || (!(QFile::exists (public_key_file)))) { x2goDebug << "Generating SSH key. Type: " << stringified_key_type.toUpper () - << "; Location: " << private_key_file; + << "; Location: " + << +#ifdef Q_OS_WIN + private_key_file_cygwin +#else + private_key_file +#endif + ; QStringList args; @@ -10364,7 +10369,7 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k } } - return (ret); + return (private_key_file); } QString ONMainWindow::createKeyBundle (key_types key_type) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 76d422d905a716a83b32f15854a74a3aa78a646a Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 26 22:05:10 2016 +0200 src/onmainwindow.cpp: use QFileInfo to get the key file's basename in exportDirs () instead of the old, potentially faulty string replace dance. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 11 +++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4cafeb0..8b692ef 100644 --- a/debian/changelog +++ b/debian/changelog @@ -463,6 +463,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium it back. - src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in generateKey (). Refactor a bit to drop the now-unnecessary ret variable. + - src/onmainwindow.cpp: use QFileInfo to get the key file's basename in + exportDirs () instead of the old, potentially faulty string replace + dance. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 8559bfb..670872d 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -7965,12 +7965,11 @@ void ONMainWindow::exportDirs ( QString exports,bool removable ) QString uname=getCurrentUname(); - QString dst=dr.key; - QString dhdir=homeDir+"/.x2go"; -#ifdef Q_OS_WIN - dhdir=wapiShortFileName ( dhdir ); -#endif - dst.replace ( dhdir +"/ssh/gen/","" ); + + /* For the destination, fetch the base name only. */ + QFileInfo tmp_file_info (dr.key); + QString dst = tmp_file_info.fileName (); + dst="~"+uname +"/.x2go/ssh/"+dst; dr.dstKey=dst; dr.isRemovable=removable; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git