This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch bugfix/osx in repository x2goclient. discards f6351af src/mediawidget.cpp: add deprecation warning for ESounD. discards 8a8713e src/mediawidget.cpp: add deprecation warning for ARTS. discards 4f5a879 src/mediawidget.cpp: simplify expression. discards 64edec6 src/mediawidget.cpp: unify some redundant code. discards ff6231c src/onmainwindow.cpp: convert piece of code to non-Windows and non-Darwin, so that not only Linux but other operating systems are covered as well. discards 66acb1a src/onmainwindow.{cpp,h}: remove left-over parec references and code. discards 3a48203 src/unix_stdint.h: use same hack to import ssize_t into std namespace. discards f79a1a6 src/pulsemanager.cpp: cast the return value of realloc () to char*, as GCC doesn't seem to like reassigning the pointer otherwise. discards 7679137 src/pulsemanager.cpp: use std::ssize_t for the path length, because it could be -1 and std::size_t is not applicable. discards 2f82839 src/pulsemanager.cpp: fix Linux-based code by fixing a really stupid typo ("erange" instead of "errno") and including the cerrno header. discards 56c4155 src/pulsemanager.h: use unix_stdint.h on non-Windows-platforms to get std::(u)int*_t types without having to use C++11. discards b91e6de src/: create new file unix_stdint.h which imports the (u)int*_t types into the std namespace. discards e7db217 src/unixhelper.cpp: use cstdio instead of stdio.h. discards fb92462 src/x2goutils.cpp: fix add_to_path (). discards 706d8fa src/x2goutils.cpp: add debugging output to add_to_path (). discards 1c48c7f src/onmainwindow.cpp: remove trailing slash from Mageia/SUSE/Arch sftp-server binary search path. discards f185cc8 src/{onmainwindow,pulsemanager}.cpp: actually *use* what we got back from add_to_path ()... discards a63a274 src/onmainwindow.cpp: stop duplicating the list of known sftp-server binary locations. discards 5cc0564 src/onmainwindow.cpp: move generateEtcFiles () call to startSshd (). discards 5280dd7 src/pulsemanager.cpp: fix PA binary searching logic. discards 59d6bfa src/onmainwindow.cpp: fix sshd_config generation on UNIX by searching for the real sftp-server binary path. discards 2b944c4 src/pulsemanager.cpp: refactor PA binary searching code. discards ec37ba9 src/x2goutils.{cpp,h}: make find_binary () and add_to_path () available on all UNIX-based operating systems. discards 5f99392 src/onmainwindow.cpp: use QFileInfo to get the key file's basename in exportDirs () instead of the old, potentially faulty string replace dance. discards e5cf0f1 src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in generateKey (). discards 56afe6a src/onmainwindow.h: actually, we do need startSshd () to be public. Move it back. discards 1890a91 src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. discards 44000d0 src/onmainwindow.{cpp,h}: don't try to initialize non-static ssh_key_type_ member variable directly, but in the constructor. discards 5c17ebf src/onmainwindow.h: remove WWrapper definition, seems to be unused. discards 8a81ce1 src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. discards 16768f5 src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. discards 31c9a39 src/onmainwindow.cpp: add and use key_types parameter to startWinServers (). discards 16f34b2 src/onmainwindow.cpp: pass key_type parameter to startSshd () in createKeyBundle (). discards cc50945 src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call in WinServerStarter::run (). discards 69d74ff src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). discards 3421fde src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. discards fe53ccc src/onmainwindow.{cpp,h}: make startSshd () private. discards 9ec24df src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). discards 511c52f src/onmainwindow.cpp: add comment to last all-in listening check in startSshd (). discards 997f4bd src/onmainwindow.cpp: move QProcess startup check in startSshd () to non-Windows code section and add a listening socket check loop. discards 7702a4e macbuild.sh: switch to bundling PA 9.0. discards 9b8bcdc src/onmainwindow.{cpp,h}: rename createRSAKey () to the more-appropriate name createKeyBundle (). discards fde706f src/onmainwindow.cpp: add some comments only to createRSAKey (). discards d85f9ab src/onmainwindow.cpp: let startSshd () act as a wrapper and be called multiple times. discards 3df30b5 src/onmainwindow.{cpp,h}: reformat createRSAKey () only. discards 5250ae7 src/onmainwindow.{cpp,h}: move createRSAKey () around. discards e4f5bca src/onmainwindow.{cpp,h}: reformat generateKey () only. discards d9e96a2 src/onmainwindow.h: move generateKey () declaration around. discards f37e2be src/onmainwindow.cpp: use the new functions in generateKey (). discards c8d3d86 src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). discards e426f3b src/onmainwindow.{cpp,h}: add new function key_type_to_string (). discards 9e888ee src/onmainwindow.{cpp,h}: add new function check_key_type (). discards 4b1365f src/onmainwindow.cpp: terminate sshd more correctly. discards 4520eb2 src/onmainwindow.cpp: uppercase key type in debug output and comment string in generateKey (). discards 35cbbd5 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 4ef08ea src/{onmainwindow.{cpp,h},configdialog.cpp}: remove userSshd variable and code related to non-user-mode-sshd setups. discards 1a02765 src/onmainwindow.cpp: fix up a few debug strings. discards 367533c src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. discards c1dd082 src/onmainwindow.{cpp,h}: rewrite generateKey () function to actually also generate user keys. discards a05f7ce src/onmainwindow.cpp: refactor generateKey () a little bit to compact it. discards 56ea9b9 src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () and add a boolean parameter with a default of false to request a public key. discards 95bbce4 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 1a81f49 src/onmainwindow.cpp: document createRSAKey () because what it does is completely non-obvious. discards f329073 src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. discards 05a949b src/unixhelper.cpp: code cleanup. discards 91aa49b src/pulsemanager.cpp: remove unused variables. discards c760abd src/unixhelper.{cpp,h}: rewrite kill_pgroup () to act as a wrapper around real_kill_pgroup (). discards e40b782 src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () into a new function called real_kill_pgroup (). discards 2d01c8e src/unixhelper.h: style and general fixes within comments. discards 57384ec src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. discards f27e5e9 src/pulsemanager.cpp: fix PA version fetching on OS X again. discards 25e1eaf 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 ae430fd 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 2b6901d src/pulsemanager.h: include accidentally omitted wapi.h header file. discards 5d3096b 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 1a28ff2 src/onmainwindow.cpp: fix compile error on Windows after moving some code around. discards c64a0fc src/onmainwindow.cpp: add another pair of braces to in_addr-type variable initialization on Windows to silence compiler warning. discards a6cb9e8 src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable initialization in Windows-only code. discards 55957a1 src/onmainwindow.cpp: drop obsolete pulseVersionTest variable initialization in Windows-only code. discards cdce725 src/onmainwindow.cpp: short out code parts unconditionally checking for the userSshd variable. discards f219df2 src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint otherwise. discards 6facff6 src/: new file windows_stdint.h for Windows-compatibility when using std::(u)int*_t types. discards fb25e26 nsis/x2goclient.nsi: add startup.wav to installer package. discards af687ca src/x2goutils.cpp: add some debug logging to find_binary (). discards 403a294 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 a2286ab src/pulsemanager.cpp: remove extraneous newlines from debug output. discards 086da73 src/pulsemanager.cpp: add warning message boxes where appropriate. discards a4e9688 src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. discards d28ef9e src/pulsemanager.cpp: fix startup when using the system-PA version. discards 019ab8a src/pulsemanager.cpp: fix compile error on Windows. discards 3bda534 debian/changelog: fix typo in function name. discards 7121d44 src/x2goutils.h: fix compile error due to typo. discards c0319a2 src/pulsemanager.cpp: add error message boxes throughout PulseManager. discards e175dfa src/x2goutils.{cpp,h}: add application modality parameter to show_RichText_Generic_MsgBox () and its wrappers. discards d7c84b8 src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. discards fbaf43b src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. discards b26af8d src/x2goutils.cpp: fix compile error. discards 51db83e src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). discards 7de9075 src/pulsemanager.cpp: add comments to Qt 4 code part. discards 7f074fe src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. discards 7c99f21 src/x2goutils.{cpp,h}: add new function find_binary (). discards 77c64d0 src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. discards 8a1f3ce src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables into environment as used by PulseManager. discards ba02068 src/pulsemanager.cpp: don't insert stray newline into config.pa. discards 3b4f2a8 src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. discards 81b035d src/pulsemanager.{cpp,h}: rename on_pulse_finished () to slot_on_pulse_finished (). discards 40946d9 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 8f38efe src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). discards 95470de macbuild.sh: save return value of parse_otool_output (). discards d0bfe8e macbuild.sh: don't error out while executing parse_otool_output (). discards c98836c macbuild.sh: also add PA binaries to deduplication fixup list. discards ea8074b macbuild.sh: fix copying of resource files. discards 6afa621 res: rename "sound" to "audio". discards 9f2a2dc macbuild.sh: add support for copying resource files. discards dd0434d src/pulsemanager.cpp: don't time out while trying to start PA or paplay. discards 7d2aae2 res/sound: add startup.wav sound to be played back when starting the PA daemon in debug mode. discards 357a246 src/pulsemanager.h: fix compile error due to mismatching function declaration for set_debug (). discards 6bb994a src/onmainwindow.cpp: port to new debugging feature of PulseManager. discards 5f76771 src/pulsemanager.{cpp,h}: port to new debugging feature. discards 8338f7e src/pulsemanager.{cpp,h}: add debugging setter and private variable. discards a8dcfc4 src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. discards c8b4eb2 src/pulsemanager.cpp: fix compile error due to typo. discards 694c927 src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. discards 9a276f0 src/onmainwindow.cpp: convert QDir object to QString for further processing. discards b05b8d9 src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. discards 2251929 src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. discards c7f5373 src/onmainwindow.cpp: fix compile errors due to misspelled function names. discards 6c7ec46 src/configdialog.cpp: fix compile error by removing obsolete (and now faulty) line for removed restart message. discards decda14 src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly to stdout. discards 762b5ca src/pulsemanager.h: move x2gologdebug.h inclusion into implementation file. discards 34a6f95 src/mediawidget.cpp: reflect new capabilities through PulseManager. discards 6945270 src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. discards d406a31 src/configdialog.cpp: whitespace only. discards 22e799f src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) discards 4afe913 src/pulsemanager.cpp: backport fix for 422. discards 0954be8 src/pulsemanager.cpp: backport fix for 526. discards feef7c1 src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) discards af5653c src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. discards fe0dfbc src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the (OS-dependent) PulseAudio config and cookie directory. discards 1f55d80 pulsemanager.cpp: remove config.pa while doing post-exit cleanups. discards c3fb546 macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". discards f82c679 macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. discards f0380a9 pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. discards a6dbe5b pulsemanager.cpp: use record and playback member variables. discards fa41daf pulsemanager.h: more moving around. discards a397293 pulsemanager.cpp: fix compile error in startup sound function. discards 1b21056 pulsemanager.cpp: reorder member variables in initializer list. discards ae8738f pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. discards 53390d1 pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is not currently running. discards 237c026 pulsemanager.cpp: add algorithm for actually extracting PA version number. discards f9c45b1 pulsemanager.h: reformat a bit by adding newlines and moving lines in a (hopefully) logical fashion. discards 99529e5 pulsemanager.{cpp,h}: some older PA versions used the major, minor and micro numbering scheme together with a descriptive string. discards 5d3ff29 pulsemanager.cpp: fix some error messages by removing redundant newlines. discards e71dc40 pulsemanager.cpp: re-initialize buffer string on each run while getting CWD on Linux. discards 13ea68a pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () with first skeleton. discards bcda83c pulsemanager.cpp: generate platform-dependent values for member variables server_working_dir_ and server_binary_ in constructor. discards 5bae684 pulsemanager.cpp: add "dummy" start_linux () function. discards 769c58a pulsemanager.cpp: reorder member variables in initialization list. discards 1e849b2 pulsemanager.cpp: another typo fix: findPort -> find_port. discards e9838d5 pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). discards 84857c2 pulsemanager.cpp: fix compile errors in find_port () by renaming the ret or port variable to search_port. discards 900ef5f pulsemanager.{cpp,h}: find_port () actually returns a value, fix declaration accordingly. discards 98d42ab pulsemanager.cpp: typo fix in member variable name server_working_dir_. discards d50f0d8 pulsemanager.h: whitespace only. discards 8477bc9 pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. discards c6f84c5 pulsemanager.cpp: only play startup sound if DEBUG macro is defined. discards aa0add6 pulsemanager.cpp: make generate_client_config () Windows-compatible. discards a591c69 pulsemanager.cpp: make generate_server_config () Windows-compatible. discards cdad141 pulsemanager.cpp: also load module-esound-protocol-tcp module. discards 475da8f pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. discards 095249b pulsemanager.cpp: let start_osx () use start_generic (). discards 7628775 pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. discards 5dc6671 pulsemanager.cpp: add Windows stuff to initial env in constructor. discards 7ce83ca pulsemanager.cpp: add cleanup support to on_pulse_finished (). discards b204f1a pulsemanager.cpp: add Windows support to shutdown (). discards fd3228a pulsemanager.{cpp,h}: new function create_client_dir (). discards e4a35e0 pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. discards edb803b pulsemanager.{cpp,h}: add server_args_, server_binary_ and server_working_dir_ class variables. discards 94d0125 pulsemanager.{cpp,h}: fixup preprocessor usage. discards cd55fac pulsemanager.cpp: reformat only. discards 992c472 pulsemanager.{cpp,h}: rename relaunch () to restart (). discards 3a521d9 pulsemanager.{cpp,h}: add ESD support. discards 5bb2800 pulsemanager.h: add std:: namespace selector for uint32_t version variables. discards aa35383 pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. discards b4a1704 pulsemanager.cpp: reformat only. discards 7d9e715 pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. discards 73c7c73 pulsemanager.cpp: use initializer list for constructor. discards 6093d43 pulsemanager.{cpp,h}: reformat only. discards 936a135 pulsemanager.cpp: minor non-behavior changing fixes. discards e2bf78f pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. discards a50d229 macbuild.sh: rewrite ID line detection algorithm. discards c3e6484 macbuild.sh: copy "special" files, so that they can be removed later on. discards 2fb7826 macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. discards c18fb0a macbuild.sh: more debug messages and a whitespace change. discards 6f45d0f macbuild.sh: spelling fix. discards ce32eb0 macbuild.sh: merge deduplicate.sh content in. discards f12d046 deduplicate.sh: replace tabs with two spaces. No functional changes. discards c8e9820 macbuild.sh: replace tabs with two spaces. No functional changes. discards e75c5aa deduplicate.sh: remove some noisy debug output. discards 51a94f0 deduplicate.sh: add WARNING to status message. discards 60ca1ce deduplicate.sh: fix wrong return value capture. discards 0ebdd78 deduplicate.sh: remove a bit of noisy debug output, but turn on parse_otool_output debugging. discards a285096 deduplicate.sh: cleanup as announced in the last commit - using lazy_canonical_path. discards 8ccb0dd deduplicate.sh: surprisingly, it turned out that only checking the duplicate's basename against the current dependency's basename is not good enough. discards b29ee94 deduplicate.sh: more temporary debugging output in fixup section. discards 4c6fa50 deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. discards c4be529 deduplicate.sh: save dependency format base string as a readonly variable and use that instead of repeating a fixed string. discards 3e34237 deduplicate.sh: actually include file name in install_name_tool pseudo output. discards ebd1446 deduplicate.sh: parse_otool_output: jump over first matching entry, which is - hopefully - the id line. discards a712c0d deduplicate.sh: unstub fixup section. discards 3628739 deduplicate.sh: add more useful information in fixup section's error message. discards b1165d0 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 3e62da1 deduplicate.sh: prevent word splitting when parsing otool's output. discards 7c63814 deduplicate.sh: debug parse_otool_output fiercely for the time being. discards 9e7ff84 deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. discards e8548c0 deduplicate.sh: change exit to return in parse_otool_output. discards bd3eb17 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 9364868 deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word splitting. discards 7004f4b deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle "sparse" arrays correctly. discards c93b513 deduplicate.sh: correctly unset an array element. discards 2db3174 deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. discards b2a54e8 deduplicate.sh: non-functional: change WARNING to ERROR in error messages. discards 18b2411 deduplicate.sh: new function for parsing otool's output and printing library dependencies if no error occurred. discards 795f4e5 deduplicate.sh: add missed local variable declaration. discards 0807242 deduplicate.sh: add duplicates-to-real mapping. discards d0230a3 deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. discards 8a6f46b macbuild.sh: also install libraries into staging area with intermediate library path. discards 051ecb1 macbuild.sh: fix echo call to also show the intermediate lib dir, not just the library file name. discards 23ce3f2 macbuild.sh: when actually bundling libraries, use @executable_path instead of @loader_path. discards 6134138 macbuild.sh: add the correct file path to the library bundling array. discards 50743fe macbuild.sh: check current file name against regex, not a (now) full path. discards 717972f macbuild.sh: use while-read-loop and find to actually recurse through directories. discards 83fb43a macbuild.sh: remove libpulse and libpulsecore from libraries to be bundled, as something else will bundle them anyway. discards 0763ea2 macbuild.sh: add some more debugging output. discards eb6b6fb macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. discards 3f8d6eb macbuild.sh: add Linux library file name scheme regex as a precaution. discards 1d56609 macbuild.sh: add work-in-progress PulseAudio bundling. discards b1b258c macbuild.sh: add phase output for bundling nxproxy. discards 4fbc0eb macbuild.sh: copy PulseAudio libraries and binaries. discards 6682197 macbuild.sh: define PulseAudio libraries and binaries to be later copied. discards 8966d53 macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. discards 347cab0 macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. discards f720d1f macbuild.sh: add new repeat_str() helper function. discards 572ec9c macbuild.sh: add new get_nesting_level() helper function. discards 62587c3 macbuild.sh: add new lazy_canonical_path() helper function. discards 3575bbb macbuild.sh: add new dependency_error() helper function. discards 0c5e5c1 macbuild.sh: add new MACPORTS_PREFIX detection/variable. discards 746616a x2goclient.pro{maemo}: reference new pulsemanager.{cpp,h} files. discards 83ed0cd pulsemanager.{cpp,h}: new class for PulseAudio management. discards 848fd9c compat.h: include QtCore/qglobal.h for Q_OS_... macros. discards 15629bf compat.{cpp,h}: remove inline keyword, because function is not defined in header file. discards 198b5ce 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 7eec91a onmainwindow.cpp: correctly use ~/.x2go/.ssh as ssh directory when starting sshd in user mode. discards 62adaa3 appdialog.cpp: initialize parent in default case. Another GCC compile warning fix. discards 9426f0b {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile warnings with GCC. Fix a few whitespace issues. discards 164bdcc x2goclient.cpp: fix failing exec() call for the UNIX helper utility: correctly terminate arguments vector. discards 550436d unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and SIGUSR2. discards 8eca258 {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to parent PID polling. discards f7bf3fe unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period to 10 seconds. discards 2d12de7 x2goclient.cpp: create new argv array on the heap instead of on the stack. discards d834425 x2goclient.cpp: fix string comparison. discards a790599 x2goclient.cpp: fix compile problems introduced with the last commit. discards a94f0a6 x2goclient.cpp: don't start the UNIX cleanup helper process right after forking. discards 7f63e8c x2goclient.cpp: clean up. discards 909ed77 unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. discards 38f4777 unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. discards 60c13c0 unixhelper.cpp: kill process group on error. discards 1c4a123 x2goclient.cpp: return return value of unixhelper::unix_cleanup(). discards 31a031c unixhelper.{cpp,h}: add documentation/comments. discards af81f56 unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. discards 999db47 unixhelper.h: forgot to declare type of unix_cleanup() function. discards 415e635 unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. discards 2c95bc8 x2goclient.cpp: fix std::edit -> std::exit typo. discards d190941 x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. discards 3d8a385 x2goclient.cpp: add myself to copyright header. discards af08f84 x2goclient.cpp: use setsid() on UNIX to become session and process group leader. discards 5d7cef1 x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup helper. discards 09d814b x2goclient.cpp: wrap X2Go Client main function and use that. discards 4843924 unixhelper.{cpp,h}: implement cleanup program for process group. discards bc2fa04 {unixhelper.{cpp,h},x2goclient.pro{maemo}}: add unixhelper stub. adds be1355b {res/img/svg/,res/resources.qrc}: add new file hamburger.svg, a custom-created hamburger icon. adds 585fb93 src/sessionbutton.cpp: replace drop down menu button on session buttons again with the custom-created hamburger icon. adds c092262 src/onmainwindow.{cpp,h}: add new function images_resource_path (), similar to iconsPath () but without explicitly referring to icons. adds 707f990 src/sessionbutton.cpp: we cannot use ".." in resource paths to move up one level, so use images_resource_path () instead and hope that we finally get a yummy hamburger. adds cd36a75 src/onmainwindow.{cpp,h}: let iconsPath () take a const-reference instead of an object and make it a const member function. adds 5eca0cf src/onmainwindow.{cpp,h}: let images_resource_path () take a new, optional "base" parameter, that might be empty and is put in-between the fixed resource path string and the filename parameter. adds 7f48257 src/onmainwindow.cpp: use images_resource_path () in iconsPath (). adds b04960e src/sessionbutton.cpp: instead of using the hamburger.svg file directly, render it to a raster image and use this Pixmap as the icon file - otherwise the icon will not show up. new 1740675 {unixhelper.{cpp,h},x2goclient.pro{maemo}}: add unixhelper stub. new 71b8fa7 unixhelper.{cpp,h}: implement cleanup program for process group. new 4630575 x2goclient.cpp: wrap X2Go Client main function and use that. new b6dae74 x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup helper. new 7119325 x2goclient.cpp: use setsid() on UNIX to become session and process group leader. new 99e06df x2goclient.cpp: add myself to copyright header. new ab46352 x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. new b0a4e8a x2goclient.cpp: fix std::edit -> std::exit typo. new ea5a459 unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. new 6a97413 unixhelper.h: forgot to declare type of unix_cleanup() function. new ab82e0a unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. new 521aec8 unixhelper.{cpp,h}: add documentation/comments. new 971f61d x2goclient.cpp: return return value of unixhelper::unix_cleanup(). new 88ee873 unixhelper.cpp: kill process group on error. new 395d9bc unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. new df64bd4 unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. new 7a1ea91 x2goclient.cpp: clean up. new 184a757 x2goclient.cpp: don't start the UNIX cleanup helper process right after forking. new c224af3 x2goclient.cpp: fix compile problems introduced with the last commit. new 3404eb0 x2goclient.cpp: fix string comparison. new 1c274a8 x2goclient.cpp: create new argv array on the heap instead of on the stack. new ddd92ff unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period to 10 seconds. new b0e8602 {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to parent PID polling. new 874b923 unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and SIGUSR2. new 0d0788f x2goclient.cpp: fix failing exec() call for the UNIX helper utility: correctly terminate arguments vector. new 7cec536 {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile warnings with GCC. Fix a few whitespace issues. new ead8507 appdialog.cpp: initialize parent in default case. Another GCC compile warning fix. new 536e614 onmainwindow.cpp: correctly use ~/.x2go/.ssh as ssh directory when starting sshd in user mode. new 732d343 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 7b54b79 compat.{cpp,h}: remove inline keyword, because function is not defined in header file. new 1ba8caf compat.h: include QtCore/qglobal.h for Q_OS_... macros. new aa1727b pulsemanager.{cpp,h}: new class for PulseAudio management. new 758b4ba x2goclient.pro{maemo}: reference new pulsemanager.{cpp,h} files. new e874dc3 macbuild.sh: add new MACPORTS_PREFIX detection/variable. new 59812f4 macbuild.sh: add new dependency_error() helper function. new f3d3640 macbuild.sh: add new lazy_canonical_path() helper function. new ca9c9d2 macbuild.sh: add new get_nesting_level() helper function. new 015d810 macbuild.sh: add new repeat_str() helper function. new c9c5f3c macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. new 783628e macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. new 3740f47 macbuild.sh: define PulseAudio libraries and binaries to be later copied. new 6da5640 macbuild.sh: copy PulseAudio libraries and binaries. new 200fe5b macbuild.sh: add phase output for bundling nxproxy. new fbc4ac8 macbuild.sh: add work-in-progress PulseAudio bundling. new e521d3f macbuild.sh: add Linux library file name scheme regex as a precaution. new fb74e67 macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. new d78c5b9 macbuild.sh: add some more debugging output. new 1ea7af4 macbuild.sh: remove libpulse and libpulsecore from libraries to be bundled, as something else will bundle them anyway. new bd6d3fd macbuild.sh: use while-read-loop and find to actually recurse through directories. new 6e59f60 macbuild.sh: check current file name against regex, not a (now) full path. new 583d588 macbuild.sh: add the correct file path to the library bundling array. new 2cd9333 macbuild.sh: when actually bundling libraries, use @executable_path instead of @loader_path. new d416c5e macbuild.sh: fix echo call to also show the intermediate lib dir, not just the library file name. new 3c487eb macbuild.sh: also install libraries into staging area with intermediate library path. new b7704e9 deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. new e05c465 deduplicate.sh: add duplicates-to-real mapping. new f900a7d deduplicate.sh: add missed local variable declaration. new c78f27d deduplicate.sh: new function for parsing otool's output and printing library dependencies if no error occurred. new d495a0a deduplicate.sh: non-functional: change WARNING to ERROR in error messages. new 2ecf444 deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. new 209d167 deduplicate.sh: correctly unset an array element. new f498ad4 deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle "sparse" arrays correctly. new 1bdbd9a deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word splitting. new f70b4fd 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 bb20604 deduplicate.sh: change exit to return in parse_otool_output. new cbb174e deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. new 12ee219 deduplicate.sh: debug parse_otool_output fiercely for the time being. new c9f9888 deduplicate.sh: prevent word splitting when parsing otool's output. new 9f8b79d 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 1079389 deduplicate.sh: add more useful information in fixup section's error message. new a3c50f7 deduplicate.sh: unstub fixup section. new 5146821 deduplicate.sh: parse_otool_output: jump over first matching entry, which is - hopefully - the id line. new 5c88593 deduplicate.sh: actually include file name in install_name_tool pseudo output. new 4df76a3 deduplicate.sh: save dependency format base string as a readonly variable and use that instead of repeating a fixed string. new e23dc88 deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. new ff427a9 deduplicate.sh: more temporary debugging output in fixup section. new 73475de deduplicate.sh: surprisingly, it turned out that only checking the duplicate's basename against the current dependency's basename is not good enough. new 90e5d02 deduplicate.sh: cleanup as announced in the last commit - using lazy_canonical_path. new 4ef1268 deduplicate.sh: remove a bit of noisy debug output, but turn on parse_otool_output debugging. new e52d7eb deduplicate.sh: fix wrong return value capture. new 7ad9134 deduplicate.sh: add WARNING to status message. new a84a817 deduplicate.sh: remove some noisy debug output. new f4cd198 macbuild.sh: replace tabs with two spaces. No functional changes. new a058c82 deduplicate.sh: replace tabs with two spaces. No functional changes. new 92b73d6 macbuild.sh: merge deduplicate.sh content in. new 5575ccc macbuild.sh: spelling fix. new da99597 macbuild.sh: more debug messages and a whitespace change. new c7be38a macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. new 1459742 macbuild.sh: copy "special" files, so that they can be removed later on. new 823e495 macbuild.sh: rewrite ID line detection algorithm. new ede7d81 pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. new baafffc pulsemanager.cpp: minor non-behavior changing fixes. new ebdeaef pulsemanager.{cpp,h}: reformat only. new 57b8b72 pulsemanager.cpp: use initializer list for constructor. new 93d56b8 pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. new ef7ccd4 pulsemanager.cpp: reformat only. new 18e3858 pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. new 6c2e4eb pulsemanager.h: add std:: namespace selector for uint32_t version variables. new 724bab1 pulsemanager.{cpp,h}: add ESD support. new d3eb996 pulsemanager.{cpp,h}: rename relaunch () to restart (). new 26b054d pulsemanager.cpp: reformat only. new 53df4ba pulsemanager.{cpp,h}: fixup preprocessor usage. new 0389589 pulsemanager.{cpp,h}: add server_args_, server_binary_ and server_working_dir_ class variables. new 2fb2ad6 pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. new 2e43da4 pulsemanager.{cpp,h}: new function create_client_dir (). new 7b48132 pulsemanager.cpp: add Windows support to shutdown (). new a577194 pulsemanager.cpp: add cleanup support to on_pulse_finished (). new 44d2d61 pulsemanager.cpp: add Windows stuff to initial env in constructor. new 9038551 pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. new 7e5fd58 pulsemanager.cpp: let start_osx () use start_generic (). new fde3b88 pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. new 9146491 pulsemanager.cpp: also load module-esound-protocol-tcp module. new 52e1e0d pulsemanager.cpp: make generate_server_config () Windows-compatible. new 00c6f79 pulsemanager.cpp: make generate_client_config () Windows-compatible. new 7070895 pulsemanager.cpp: only play startup sound if DEBUG macro is defined. new e3fc560 pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. new 4a4bea9 pulsemanager.h: whitespace only. new e4ad215 pulsemanager.cpp: typo fix in member variable name server_working_dir_. new 77fd710 pulsemanager.{cpp,h}: find_port () actually returns a value, fix declaration accordingly. new 6602b15 pulsemanager.cpp: fix compile errors in find_port () by renaming the ret or port variable to search_port. new 97b32a9 pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). new 47fbb31 pulsemanager.cpp: another typo fix: findPort -> find_port. new 2b546a3 pulsemanager.cpp: reorder member variables in initialization list. new 3344476 pulsemanager.cpp: add "dummy" start_linux () function. new 547aeff pulsemanager.cpp: generate platform-dependent values for member variables server_working_dir_ and server_binary_ in constructor. new 9d28e79 pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () with first skeleton. new c50e429 pulsemanager.cpp: re-initialize buffer string on each run while getting CWD on Linux. new a508d02 pulsemanager.cpp: fix some error messages by removing redundant newlines. new 066c8cb pulsemanager.{cpp,h}: some older PA versions used the major, minor and micro numbering scheme together with a descriptive string. new 7cd6b80 pulsemanager.h: reformat a bit by adding newlines and moving lines in a (hopefully) logical fashion. new f345591 pulsemanager.cpp: add algorithm for actually extracting PA version number. new 1d19c5d pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is not currently running. new 2cbf5bb pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. new f92ee5c pulsemanager.cpp: reorder member variables in initializer list. new 1c95b06 pulsemanager.cpp: fix compile error in startup sound function. new 8fd429e pulsemanager.h: more moving around. new 649e739 pulsemanager.cpp: use record and playback member variables. new ca08199 pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. new c628cd7 macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. new a036bce macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". new 54bd8cf pulsemanager.cpp: remove config.pa while doing post-exit cleanups. new 1a85a09 src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the (OS-dependent) PulseAudio config and cookie directory. new c8ac3db src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. new ee43b4c src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) new a5d45b3 src/pulsemanager.cpp: backport fix for 526. new 7921f0d src/pulsemanager.cpp: backport fix for 422. new 8173f20 src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) new e266f8f src/configdialog.cpp: whitespace only. new f2f849b src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. new 822ac31 src/mediawidget.cpp: reflect new capabilities through PulseManager. new 9b0e1bd src/pulsemanager.h: move x2gologdebug.h inclusion into implementation file. new 78f998a src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly to stdout. new 5a2ce74 src/configdialog.cpp: fix compile error by removing obsolete (and now faulty) line for removed restart message. new b356a80 src/onmainwindow.cpp: fix compile errors due to misspelled function names. new 0e276ad src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. new b613baf src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. new 6b08295 src/onmainwindow.cpp: convert QDir object to QString for further processing. new 841ebb0 src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. new f91bb55 src/pulsemanager.cpp: fix compile error due to typo. new 2ff420e src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. new e1a2016 src/pulsemanager.{cpp,h}: add debugging setter and private variable. new 9356691 src/pulsemanager.{cpp,h}: port to new debugging feature. new e068a55 src/onmainwindow.cpp: port to new debugging feature of PulseManager. new 203aede src/pulsemanager.h: fix compile error due to mismatching function declaration for set_debug (). new e4691a2 res/sound: add startup.wav sound to be played back when starting the PA daemon in debug mode. new 7865b56 src/pulsemanager.cpp: don't time out while trying to start PA or paplay. new 796b5b6 macbuild.sh: add support for copying resource files. new 1fccb2d res: rename "sound" to "audio". new 066655a macbuild.sh: fix copying of resource files. new 015b521 macbuild.sh: also add PA binaries to deduplication fixup list. new d94eadf macbuild.sh: don't error out while executing parse_otool_output (). new 8db27c1 macbuild.sh: save return value of parse_otool_output (). new 56171d7 src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). new f206423 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 4192bab src/pulsemanager.{cpp,h}: rename on_pulse_finished () to slot_on_pulse_finished (). new d987d6d src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. new 665823a src/pulsemanager.cpp: don't insert stray newline into config.pa. new 967a839 src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables into environment as used by PulseManager. new a0bc125 src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. new 9f298d9 src/x2goutils.{cpp,h}: add new function find_binary (). new 1a34ea4 src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. new 3417610 src/pulsemanager.cpp: add comments to Qt 4 code part. new 86c9541 src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). new 239ede4 src/x2goutils.cpp: fix compile error. new 01dde02 src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. new 7b4d671 src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. new 5f0e2cb src/x2goutils.{cpp,h}: add application modality parameter to show_RichText_Generic_MsgBox () and its wrappers. new fa0c8de src/pulsemanager.cpp: add error message boxes throughout PulseManager. new 861f990 src/x2goutils.h: fix compile error due to typo. new ebc5bdd debian/changelog: fix typo in function name. new 1318656 src/pulsemanager.cpp: fix compile error on Windows. new 7768dfc src/pulsemanager.cpp: fix startup when using the system-PA version. new 126e4a8 src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. new 6719756 src/pulsemanager.cpp: add warning message boxes where appropriate. new 4dec14f src/pulsemanager.cpp: remove extraneous newlines from debug output. new 38e6efd 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 a279b70 src/x2goutils.cpp: add some debug logging to find_binary (). new 23d0e4e nsis/x2goclient.nsi: add startup.wav to installer package. new dc56238 src/: new file windows_stdint.h for Windows-compatibility when using std::(u)int*_t types. new 62fffcf src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint otherwise. new 37c2f8b src/onmainwindow.cpp: short out code parts unconditionally checking for the userSshd variable. new 73dc547 src/onmainwindow.cpp: drop obsolete pulseVersionTest variable initialization in Windows-only code. new 5862ae1 src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable initialization in Windows-only code. new d0b0af4 src/onmainwindow.cpp: add another pair of braces to in_addr-type variable initialization on Windows to silence compiler warning. new 90c0da3 src/onmainwindow.cpp: fix compile error on Windows after moving some code around. new cbdb450 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 b4bef6a src/pulsemanager.h: include accidentally omitted wapi.h header file. new 1b466dc 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 0620fd7 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 1e7bc07 src/pulsemanager.cpp: fix PA version fetching on OS X again. new 0518893 src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. new c0d1921 src/unixhelper.h: style and general fixes within comments. new a193a4c src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () into a new function called real_kill_pgroup (). new 8c011d9 src/unixhelper.{cpp,h}: rewrite kill_pgroup () to act as a wrapper around real_kill_pgroup (). new e04e71a src/pulsemanager.cpp: remove unused variables. new 6fe0ef0 src/unixhelper.cpp: code cleanup. new 5078b83 src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. new cf97425 src/onmainwindow.cpp: document createRSAKey () because what it does is completely non-obvious. new 34fa207 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 2685544 src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () and add a boolean parameter with a default of false to request a public key. new 994a129 src/onmainwindow.cpp: refactor generateKey () a little bit to compact it. new e94e94e src/onmainwindow.{cpp,h}: rewrite generateKey () function to actually also generate user keys. new 0eaec37 src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. new 1111f95 src/onmainwindow.cpp: fix up a few debug strings. new fc842aa src/{onmainwindow.{cpp,h},configdialog.cpp}: remove userSshd variable and code related to non-user-mode-sshd setups. new 88134de 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 5307708 src/onmainwindow.cpp: uppercase key type in debug output and comment string in generateKey (). new a0ee3c1 src/onmainwindow.cpp: terminate sshd more correctly. new 33c23e0 src/onmainwindow.{cpp,h}: add new function check_key_type (). new cb59e62 src/onmainwindow.{cpp,h}: add new function key_type_to_string (). new 8f652e7 src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). new b8878c2 src/onmainwindow.cpp: use the new functions in generateKey (). new 59da4b8 src/onmainwindow.h: move generateKey () declaration around. new 4ee6820 src/onmainwindow.{cpp,h}: reformat generateKey () only. new 07bcb15 src/onmainwindow.{cpp,h}: move createRSAKey () around. new 3b43148 src/onmainwindow.{cpp,h}: reformat createRSAKey () only. new 299f4e1 src/onmainwindow.cpp: let startSshd () act as a wrapper and be called multiple times. new e3439e4 src/onmainwindow.cpp: add some comments only to createRSAKey (). new bb16e81 src/onmainwindow.{cpp,h}: rename createRSAKey () to the more-appropriate name createKeyBundle (). new 4455230 macbuild.sh: switch to bundling PA 9.0. new 290987c src/onmainwindow.cpp: move QProcess startup check in startSshd () to non-Windows code section and add a listening socket check loop. new e5c6396 src/onmainwindow.cpp: add comment to last all-in listening check in startSshd (). new 40b7fda src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). new 5391148 src/onmainwindow.{cpp,h}: make startSshd () private. new 9bce12a src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. new da7833b src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). new c6567c1 src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call in WinServerStarter::run (). new 7826b3d src/onmainwindow.cpp: pass key_type parameter to startSshd () in createKeyBundle (). new fc24102 src/onmainwindow.cpp: add and use key_types parameter to startWinServers (). new 8c2bb96 src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. new 5dc534f src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. new 1f7051e src/onmainwindow.h: remove WWrapper definition, seems to be unused. new e78ee21 src/onmainwindow.{cpp,h}: don't try to initialize non-static ssh_key_type_ member variable directly, but in the constructor. new 4f4e1a3 src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. new c3c8bdf src/onmainwindow.h: actually, we do need startSshd () to be public. Move it back. new 642e4c5 src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in generateKey (). new efb8da2 src/onmainwindow.cpp: use QFileInfo to get the key file's basename in exportDirs () instead of the old, potentially faulty string replace dance. new 1cfcd80 src/x2goutils.{cpp,h}: make find_binary () and add_to_path () available on all UNIX-based operating systems. new 4cd32bc src/pulsemanager.cpp: refactor PA binary searching code. new ae89ac6 src/onmainwindow.cpp: fix sshd_config generation on UNIX by searching for the real sftp-server binary path. new 6e986e2 src/pulsemanager.cpp: fix PA binary searching logic. new e440f47 src/onmainwindow.cpp: move generateEtcFiles () call to startSshd (). new 777cec1 src/onmainwindow.cpp: stop duplicating the list of known sftp-server binary locations. new 2779177 src/{onmainwindow,pulsemanager}.cpp: actually *use* what we got back from add_to_path ()... new 818163d src/onmainwindow.cpp: remove trailing slash from Mageia/SUSE/Arch sftp-server binary search path. new 201f9dd src/x2goutils.cpp: add debugging output to add_to_path (). new 44bdd1a src/x2goutils.cpp: fix add_to_path (). new 4499dc9 src/unixhelper.cpp: use cstdio instead of stdio.h. new a13b92c src/: create new file unix_stdint.h which imports the (u)int*_t types into the std namespace. new cb661f8 src/pulsemanager.h: use unix_stdint.h on non-Windows-platforms to get std::(u)int*_t types without having to use C++11. new 51d13bb src/pulsemanager.cpp: fix Linux-based code by fixing a really stupid typo ("erange" instead of "errno") and including the cerrno header. new 6d186eb src/pulsemanager.cpp: use std::ssize_t for the path length, because it could be -1 and std::size_t is not applicable. new 15ff67d src/pulsemanager.cpp: cast the return value of realloc () to char*, as GCC doesn't seem to like reassigning the pointer otherwise. new 856b009 src/unix_stdint.h: use same hack to import ssize_t into std namespace. new 882adda src/onmainwindow.{cpp,h}: remove left-over parec references and code. new c1b1a67 src/onmainwindow.cpp: convert piece of code to non-Windows and non-Darwin, so that not only Linux but other operating systems are covered as well. new 9c61957 src/mediawidget.cpp: unify some redundant code. new 8a5e3e5 src/mediawidget.cpp: simplify expression. new 6648940 src/mediawidget.cpp: add deprecation warning for ARTS. new 34e372f src/mediawidget.cpp: add deprecation warning for ESounD. 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 (f6351af) \ N -- N -- N refs/heads/bugfix/osx (34e372f) 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 280 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 | 20 ++++++++++++++++++++ res/img/svg/hamburger.svg | 18 ++++++++++++++++++ res/resources.qrc | 1 + src/onmainwindow.cpp | 38 ++++++++++++++++++++++++++++++++++++-- src/onmainwindow.h | 3 ++- src/sessionbutton.cpp | 24 ++++++++++++++++++++---- 6 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 res/img/svg/hamburger.svg -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 174067588714897dba02b44a219401ffbbc6dc00 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 e3b968a..f4be657 100644 --- a/debian/changelog +++ b/debian/changelog @@ -35,6 +35,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium render it to a raster image and use this Pixmap as the icon file - otherwise the icon will not show up. Also change the icon size back to 16x16 px, that's big enough. + - {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 4630575947f14c65cf3e964fd08234060a4a03b9 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 785dccb..54ccb76 100644 --- a/debian/changelog +++ b/debian/changelog @@ -37,6 +37,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium 16x16 px, that's big enough. - {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 b6dae74cf8e449f6417fe6dde7165ad074817c30 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 54ccb76..e018c09 100644 --- a/debian/changelog +++ b/debian/changelog @@ -38,6 +38,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 71b8fa7745a32855152e5847028eec4cd6d19d9a 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 f4be657..785dccb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -36,6 +36,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium otherwise the icon will not show up. Also change the icon size back to 16x16 px, that's big enough. - {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 b0a4e8abe02339dbdeade141c23997d7f57994cc 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 30acaff..3cc77dc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -47,6 +47,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 6a9741324f61ca87a0f6b8245540d8a7b5643045 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 f7d51cf..ce07ef5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -50,6 +50,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 ab82e0a69262678c8dbf3745edd868d8df64b293 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 ce07ef5..d6b694e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -51,6 +51,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 7119325b209f631a22eabb51b920034b07200e0e 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 e018c09..32d26eb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -40,6 +40,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 ab46352dca2a9ba75ae374422fd41844d98c1bcd 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 abd8742..30acaff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -45,6 +45,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 99e06df2bc2a00d631a7563a3065b8f5756eb100 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 32d26eb..abd8742 100644 --- a/debian/changelog +++ b/debian/changelog @@ -44,6 +44,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 ea5a459909c496e8651236d318a75950397751fc 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 3cc77dc..f7d51cf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -48,6 +48,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 df64bd4a773ccea1df67bccf2b92bab8f3273d1d 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 4cf6b16..d9b268e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -58,6 +58,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 521aec85288a07bdc035e2dbef0767ca0e39a317 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 d6b694e..9ba3eb4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -53,6 +53,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 971f61d46c20aee11fa5ea86333ab310cbadc63e 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 9ba3eb4..743609a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -54,6 +54,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 88ee873db409ef8a6cd78a53ad888a23d7630746 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 743609a..c3b9257 100644 --- a/debian/changelog +++ b/debian/changelog @@ -55,6 +55,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 395d9bca00ccfa8ecfb264be65c46986d8651878 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 c3b9257..4cf6b16 100644 --- a/debian/changelog +++ b/debian/changelog @@ -56,6 +56,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 7a1ea917f33f04651f3661770c149378d258be8e 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 d9b268e..ab0ab2a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -59,6 +59,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 ddd92ffae784b8629aa4f6ceac4aa8d1d292ba82 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 e8bcaeb..6f20c2d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -73,6 +73,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 c224af36088b827cbada0d4ffc72d8701fa4f3f5 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 1804ace..eba3dca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -68,6 +68,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 184a757b3d0bb650f63df5ae6d7143b21192a160 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 ab0ab2a..1804ace 100644 --- a/debian/changelog +++ b/debian/changelog @@ -63,6 +63,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 3404eb01b8f5e9116f5cbac7b1d555035ab76187 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 eba3dca..c169d00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -69,6 +69,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 1c274a86e97330f43b89073ba9a8c205a57b6049 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 c169d00..e8bcaeb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -70,6 +70,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 b0e86022f5f62b14fd90e530b7b1b28a7e51e67a 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 6f20c2d..98e7cad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -75,6 +75,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 874b9237f4ff252ee4128fa0f6a6d82313e708c9 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 98e7cad..fd9f4b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -77,6 +77,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 7cec536dcb115706445e631998aac3d39827b752 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 03049f1..2b0a7ac 100644 --- a/debian/changelog +++ b/debian/changelog @@ -81,6 +81,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 f234e2f..cd98920 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -4330,8 +4330,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"; @@ -11018,6 +11020,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 0d0788fa212a20a6e0aee974491a9e311766268b 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 fd9f4b9..03049f1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -79,6 +79,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 536e6149c3421d7bce54acc3f395ffdc206f3fe9 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 | 187 +++++++++++++++++++++++++++++++++----------------- 2 files changed, 128 insertions(+), 63 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3bc8a08..3e85471 100644 --- a/debian/changelog +++ b/debian/changelog @@ -85,6 +85,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 cd98920..5d12913 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8279,43 +8279,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"); } @@ -9546,41 +9557,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(); @@ -10363,20 +10423,21 @@ 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"); - varDir=cygwinPath (varDir); - x2goDebug<<varDir<<" cygwin var path"; -#endif + authKeyPath = cygwinPath (authKeyPath); + authKeyPath.replace (wapiGetUserName (), "%u"); + varDir = cygwinPath (varDir); + x2goDebug << varDir << " cygwin var path"; +#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 732d343a337381a9cd7cae34cdeb6e76897b4413 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 3e85471..ba575a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -89,6 +89,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 7b54b79a5805f26462d2b73a2068fab9d4f892ba 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 ba575a6..ecb17b3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -91,6 +91,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 ead8507c274b859c7fb9565d4a00fb71b8bb2b86 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 2b0a7ac..3bc8a08 100644 --- a/debian/changelog +++ b/debian/changelog @@ -83,6 +83,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 1ba8cafa3c4f35b10b610c0f5961f028961884bc 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 ecb17b3..e982f4e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -93,6 +93,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 e874dc372848d3e2a29ac057c4db633e5855d1be 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 68b96be..1187ce9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -96,6 +96,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 758b4ba681017f5a308ad773768f460821ff19be 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 f406011..68b96be 100644 --- a/debian/changelog +++ b/debian/changelog @@ -95,6 +95,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 aa1727b6712f43b57cfffe50b625af34d10a693b 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 e982f4e..f406011 100644 --- a/debian/changelog +++ b/debian/changelog @@ -94,6 +94,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 59812f47b16260baf7933f072471386d7d873375 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 1187ce9..fa15117 100644 --- a/debian/changelog +++ b/debian/changelog @@ -97,6 +97,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 f3d36408c1c7b54b19e642317196b17b1a88ba3d 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 fa15117..7fdccaf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -98,6 +98,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 ca9c9d28c4ef828a2b7bed8c39e445dea7917305 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 7fdccaf..2b5e611 100644 --- a/debian/changelog +++ b/debian/changelog @@ -99,6 +99,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 c9c5f3cdb7485fe0ca0859798d1e409458cf76e3 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 d379e91..40f0c95 100644 --- a/debian/changelog +++ b/debian/changelog @@ -101,6 +101,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 015d810e63a94fc4dcaa0fe0d6be208ad1e4719c 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 2b5e611..d379e91 100644 --- a/debian/changelog +++ b/debian/changelog @@ -100,6 +100,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 783628eac554c5aa5d028c21d9c0d7970c1c696a 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 40f0c95..6b92a5b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -102,6 +102,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 3740f47d52ffafee5f34dd6ea78970a4b16d179d 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 6b92a5b..1ac8fb9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -104,6 +104,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 6da56405d40f21033bf33de6a32f1bf0ef084b9f 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 1ac8fb9..5ca427e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -107,6 +107,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 e521d3f215b48fee0862120ef255ce0db940d61f 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 4372eb2..7ce8268 100644 --- a/debian/changelog +++ b/debian/changelog @@ -112,6 +112,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 200fe5b1e25644a6d9eb300eae99ab735fbc7aba 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 5ca427e..bf0caee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -108,6 +108,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 fb74e6763e04c6a67288b20fb5f4c284ed9d0d7d 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 7ce8268..5e0f71a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -113,6 +113,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 fbc4ac86dda36d57d51edbef185252d8fd44a953 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 bf0caee..4372eb2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -109,6 +109,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 d78c5b90a3103f5c4e675c4009242cb429af4a51 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 5e0f71a..6cc4a65 100644 --- a/debian/changelog +++ b/debian/changelog @@ -115,6 +115,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 bd6d3fddd5814b030d3205206f9e654dd498cf3e 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 099bf84..36a1cb5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -118,6 +118,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 6e59f603f3a53473307e7241e77fc8cf4cb7c499 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 36a1cb5..e9a0344 100644 --- a/debian/changelog +++ b/debian/changelog @@ -120,6 +120,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 583d588a5c2b12aaf5045e11629acf15c8594e9f 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 e9a0344..5213558 100644 --- a/debian/changelog +++ b/debian/changelog @@ -122,6 +122,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 1ea7af417ccea8052a0a54a5afdfc8e2e75745af 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 6cc4a65..099bf84 100644 --- a/debian/changelog +++ b/debian/changelog @@ -116,6 +116,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 b7704e9b8e964fa5fdf9f7d9d8af78a58d56e216 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 bdcfe77..adfc747 100644 --- a/debian/changelog +++ b/debian/changelog @@ -129,6 +129,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 d416c5e0895f948f9468d027c16b615d9af7635d 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 b9a41ad..9b3be05 100644 --- a/debian/changelog +++ b/debian/changelog @@ -125,6 +125,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 2cd93338374f881edfc9b8ba961ac1493a56f934 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 5213558..b9a41ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -123,6 +123,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 3c487eb512ddbfd19be64427f5159fd136b9ee8c 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 9b3be05..bdcfe77 100644 --- a/debian/changelog +++ b/debian/changelog @@ -127,6 +127,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 d495a0a3769221632ec1c05cef8c483c698dea43 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 b77c1a9..07bdf19 100644 --- a/debian/changelog +++ b/debian/changelog @@ -135,6 +135,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 2ecf4449705a1d39a614b23fba6fe380482cff73 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 07bdf19..36d93b3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -137,6 +137,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 c78f27d55fe08d0d44bf2e391a1f78d9dd07142a 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 6c8832c..b77c1a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -133,6 +133,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 f900a7dfc9c80d613b1f4f5169f584f633d6c1db 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 00af13e..6c8832c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -132,6 +132,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 e05c46594ca5097ad3db9da8d963723627c680b2 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 adfc747..00af13e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -131,6 +131,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 209d167753b2ae3966fc3c16260265f0e86b40e1 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 36d93b3..a0e6134 100644 --- a/debian/changelog +++ b/debian/changelog @@ -139,6 +139,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 f70b4fd3a9773978d16c23e0fc03defb04adb8c3 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 02af83c..911bfc2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -144,6 +144,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 1bdbd9a6a4d4d99b1b2e3b7c584f79d074bd91b4 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 be34e19..02af83c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -142,6 +142,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 f498ad4f46fe916b987884c1520dcb909bc9768a 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 a0e6134..be34e19 100644 --- a/debian/changelog +++ b/debian/changelog @@ -140,6 +140,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 cbb174edbe20b1943e8798be136ea0698257f0f3 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 408e0d9..0b0a929 100644 --- a/debian/changelog +++ b/debian/changelog @@ -148,6 +148,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 c9f9888073d06e01745cb977408b497218f79cd7 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 7ab7321..73f4c2e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -151,6 +151,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 12ee21900b890b654c7722acf86501546a0b1a84 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 0b0a929..7ab7321 100644 --- a/debian/changelog +++ b/debian/changelog @@ -150,6 +150,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 bb20604ef8bd283968c6f1b7ab5a639d7d9a4ab4 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 911bfc2..408e0d9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -147,6 +147,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 514682137400e2f3dcb8b39abe29eb11e6490b04 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 48755d1..9d81cee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -159,6 +159,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 1079389f1a1248b7a342401f76f4411c74fb3b5b 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 de230e8..38f8c69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -156,6 +156,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 a3c50f7080988707f52a779df81efc4cdfa06598 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 38f8c69..48755d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -158,6 +158,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 9f8b79d86e1706739763fab0edcbc248910638ef 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 73f4c2e..de230e8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -153,6 +153,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 5c88593b3b21a61f6fda076c0f2536aa33a820f5 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 9d81cee..24eb86d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -161,6 +161,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 4df76a3258936c986d366322b54e318e3e246794 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 24eb86d..a464a10 100644 --- a/debian/changelog +++ b/debian/changelog @@ -163,6 +163,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 e23dc8838ab35554a0d5661590e26fcb1601a2b1 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 a464a10..ef71d68 100644 --- a/debian/changelog +++ b/debian/changelog @@ -165,6 +165,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 90e5d0283675830fb2848d2e2f3f073d7a3a7fe0 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 3f2de94..2654f76 100644 --- a/debian/changelog +++ b/debian/changelog @@ -173,6 +173,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 e52d7eb6660ef29f251e93c92e30c7034977e9b4 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 b820a81..b2f056c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -177,6 +177,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 4ef1268800cf29e105cb5b8203c76cd1927f536c 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 2654f76..b820a81 100644 --- a/debian/changelog +++ b/debian/changelog @@ -175,6 +175,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 73475de6210ba03775bfdfb2d86c33872e4a520a 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 562e6fb..3f2de94 100644 --- a/debian/changelog +++ b/debian/changelog @@ -168,6 +168,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 ff427a904ea7c81d1a95ec9d7289802be89ff372 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 ef71d68..562e6fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -167,6 +167,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 a058c82d2c282bcceeca74fc7f063cf134f20be8 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 d3fc655..e0a74ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -182,6 +182,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 a84a8173e04b821f8de3f5b64ee9780354de4529 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 6a7b929..9bd2379 100644 --- a/debian/changelog +++ b/debian/changelog @@ -180,6 +180,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 7ad913407e15e283f25ef262cf7ef013729dc5b2 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 b2f056c..6a7b929 100644 --- a/debian/changelog +++ b/debian/changelog @@ -179,6 +179,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 92b73d6ccf7b22df3b2b60be9fa2f1c85cb0eeef 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 e0a74ff..f1bba43 100644 --- a/debian/changelog +++ b/debian/changelog @@ -183,6 +183,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 f4cd198183dff7a42e54a8a637d89d7ca2632298 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 9bd2379..d3fc655 100644 --- a/debian/changelog +++ b/debian/changelog @@ -181,6 +181,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 823e49546c6814f80de44af006fff8e378676461 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 cc9632e..8d8f66f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -190,6 +190,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 5575ccca5a7dd274a3121eac286ee0b4abc9db06 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 f1bba43..4a91518 100644 --- a/debian/changelog +++ b/debian/changelog @@ -185,6 +185,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 da9959723e7df544f4a34d7e54283a2805235e12 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 4a91518..6a0d1ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -186,6 +186,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 c7be38ad919f2fe61c67750299e13cc9bd993a20 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 6a0d1ba..5dd4bac 100644 --- a/debian/changelog +++ b/debian/changelog @@ -187,6 +187,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 14597423e927b03b554f7a6412b81e67f0790956 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 5dd4bac..cc9632e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -189,6 +189,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 ede7d81a8af081028bcea5bfd3677d9b7aae0f71 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 8d8f66f..8ac430f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -193,6 +193,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 baafffcd4165be19f6f564a3ed93135b887baa7f 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 8ac430f..3a82b73 100644 --- a/debian/changelog +++ b/debian/changelog @@ -195,6 +195,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 57b8b721ef2e6bb750bace46f9e7a7091143682b 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 06e8853..3291f59 100644 --- a/debian/changelog +++ b/debian/changelog @@ -197,6 +197,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 ebdeaef325bca2ff1f70e657c76a7dc7019ad4c2 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 3a82b73..06e8853 100644 --- a/debian/changelog +++ b/debian/changelog @@ -196,6 +196,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 93d56b8d665023dfac661688d1566cfbbf9e5174 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 3291f59..ce0a1ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -198,6 +198,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 6c2e4eb29ec46c5abc14b33c56b57f479bf98006 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 2ad5607..9700fea 100644 --- a/debian/changelog +++ b/debian/changelog @@ -201,6 +201,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 18e38589af74b8b41f9d074c8d6360f41fdc891a 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 37e8659..2ad5607 100644 --- a/debian/changelog +++ b/debian/changelog @@ -200,6 +200,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 ef7ccd44f61bb04971fb00204d913cf126d20649 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 ce0a1ca..37e8659 100644 --- a/debian/changelog +++ b/debian/changelog @@ -199,6 +199,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 26b054dfcb8211d592a5080cb10b2484560928ba 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 76f92bb..deeb425 100644 --- a/debian/changelog +++ b/debian/changelog @@ -205,6 +205,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 724bab15bf14946e20ee57991e83f21381a1d12e 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 9700fea..76da597 100644 --- a/debian/changelog +++ b/debian/changelog @@ -203,6 +203,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 d3eb996d9e88ad7f7bc44d90f44a82d57b3e5d80 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 76da597..76f92bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -204,6 +204,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 2e43da4f790678bfb97e19a0356a5879ecc7ba5e 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 14f7ea2..1c5c704 100644 --- a/debian/changelog +++ b/debian/changelog @@ -211,6 +211,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 0389589eec744e95e84436e9b4f167099fb0f2a5 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 b933999..0bc1f29 100644 --- a/debian/changelog +++ b/debian/changelog @@ -207,6 +207,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 53df4bac26050bb1cd00e6c9ca0899ddbbfee993 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 deeb425..b933999 100644 --- a/debian/changelog +++ b/debian/changelog @@ -206,6 +206,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 2fb2ad64feee8444ea263013c1ece560fc4d97d4 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 0bc1f29..14f7ea2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -209,6 +209,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 a57719494dcac31ac34ad67288eb4071b02f51af 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 954a228..6ea4684 100644 --- a/debian/changelog +++ b/debian/changelog @@ -213,6 +213,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 7e5fd58ea74b0adabfddecce60d473a397487b04 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 cab1eb5..5f147dc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -217,6 +217,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 90385513dbb02bf48811224faea4ce6714f7868a 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 9980d64..cab1eb5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -215,6 +215,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 44d2d6184af8a83aa7471ffea88ef12a0fddd66e 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 6ea4684..9980d64 100644 --- a/debian/changelog +++ b/debian/changelog @@ -214,6 +214,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 7b481329769a8edcfc608f38e73a841c4aad5646 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 1c5c704..954a228 100644 --- a/debian/changelog +++ b/debian/changelog @@ -212,6 +212,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 00c6f79828ab56499407ca667dcbbf1bd59e798e 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 1662ea8..5300b1c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -222,6 +222,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 91464916310d1021a61592c50c95eb076b4a472c 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 d9bc2ed..af96b48 100644 --- a/debian/changelog +++ b/debian/changelog @@ -220,6 +220,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 52e1e0d0b7367e83d172c9f3e37ee2f6ffdd9604 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 af96b48..1662ea8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -221,6 +221,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 fde3b88c68ca781224ddfd7c216f8e6541e09d7d 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 5f147dc..d9bc2ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -218,6 +218,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 70708958f733622bce6364827e0402052ed44101 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 5300b1c..11f4c95 100644 --- a/debian/changelog +++ b/debian/changelog @@ -223,6 +223,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 e3fc560383b2806e2aea56573c6ba551d7bdb68b 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 11f4c95..1dbff60 100644 --- a/debian/changelog +++ b/debian/changelog @@ -224,6 +224,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 4a4bea99e07a3d5913fd87af382f1a2d01653d4e 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 6602b1559c575ddaeb70c68ed6bd1cf9b5223b0a 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 b376431..98bbb73 100644 --- a/debian/changelog +++ b/debian/changelog @@ -229,6 +229,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 e4ad2152cbb9a878952c92684666b7166b6cb074 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 1dbff60..9bfbfac 100644 --- a/debian/changelog +++ b/debian/changelog @@ -226,6 +226,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 97b32a92af5a98af1799317b31f763e450dfeae9 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 98bbb73..8a9c587 100644 --- a/debian/changelog +++ b/debian/changelog @@ -231,6 +231,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 77fd710b6e85a01759ba013f39ed0074510cd641 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 9bfbfac..b376431 100644 --- a/debian/changelog +++ b/debian/changelog @@ -227,6 +227,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 47fbb31c584335362aa3f86bd9f71c53aed7829f 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 8a9c587..9566419 100644 --- a/debian/changelog +++ b/debian/changelog @@ -233,6 +233,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 3344476200b618273275f0042d0ebe0faf07b287 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 2b3c36b..cee3ffe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -234,8 +234,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 2b546a3091f203520af43424a89247538500be6c 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 9566419..2b3c36b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -234,6 +234,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 547aeff862aae7a1e013fc0721d54595b66e0355 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 cee3ffe..219a691 100644 --- a/debian/changelog +++ b/debian/changelog @@ -237,6 +237,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 9d28e79cbc59dde54c9a09319665cd34a6611281 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 219a691..3cd812d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -240,6 +240,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 066c8cb53e0b352e6eb925dddee2f3476eed8f48 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 831e1fa..dcb1ad1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -246,6 +246,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 a508d02d971e23761b030c00e78187c24634340b 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 a1aea8b..831e1fa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -244,6 +244,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 c50e4294d6a8c6e2e2ee1598b2fa91d6735f4c51 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 3cd812d..a1aea8b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -242,6 +242,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 2cbf5bb074ee481d18c41c21b3fa5af4b204edc0 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 935660c..f21cbdc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -255,6 +255,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 7cd6b80a7e1e3cbc6c6564b7adf918147b003c9f 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 dcb1ad1..e604022 100644 --- a/debian/changelog +++ b/debian/changelog @@ -249,6 +249,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 f3455914b8a5b6df8e9891345f4fe21886dcfbd7 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 e604022..b796427 100644 --- a/debian/changelog +++ b/debian/changelog @@ -251,6 +251,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 1d19c5d806684758a9ab011e117d98720e140296 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 b796427..935660c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -253,6 +253,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 f92ee5c1600d887b20f5837713ffc142a1df5908 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 f21cbdc..cbf49b8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -257,6 +257,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 1c95b06a436225f887ee99b9b018d327daa6be8a 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 cbf49b8..a09ea5b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -258,6 +258,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 649e73933733e9f5b531770b256245daac89d80b 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 f80585e..ca18cf3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -260,6 +260,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 8fd429e363214fc965264081c977e534e50adb67 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 a09ea5b..f80585e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -259,6 +259,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 c628cd796f397e037f70b67181fc2a44d47d2955 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 a418d8b..ae0ca00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -263,6 +263,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 a036bcef5fdb1bdd8e18a72f1082e73923e367bb 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 ae0ca00..abb41b2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -264,6 +264,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 ca08199381debc61de3985e5c71e0962543593d0 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 ca18cf3..a418d8b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -261,6 +261,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 c8ac3dbd2ff5f4e1db9c7b95fa4eac1bc0cd5d06 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 45d8670..15e1141 100644 --- a/debian/changelog +++ b/debian/changelog @@ -269,6 +269,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 54bd8cf1f4ae475357bf96d184f9d381ab5638ef 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 abb41b2..0744fd2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -266,6 +266,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 1a85a0964999b4427d41f4c3cf060b464640dd87 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 0744fd2..45d8670 100644 --- a/debian/changelog +++ b/debian/changelog @@ -267,6 +267,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 ee43b4c7aaa9a973be2500a6860d34e4c702f611 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 15e1141..fe33df6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -271,6 +271,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 7921f0dd3edd71a2f978d157296f231cb9124a41 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 d76bec3..eed5012 100644 --- a/debian/changelog +++ b/debian/changelog @@ -273,6 +273,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 8173f2026713b2777cc4f9b7218d0243d186fa88 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 eed5012..f87534b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -274,6 +274,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 a5d45b31e2899be63ff034fb17a82226e6010d7e 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 fe33df6..d76bec3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -272,6 +272,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 822ac31c18ba641b83e7145e21514922caa14f76 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 deccfa5..8ee6d44 100644 --- a/debian/changelog +++ b/debian/changelog @@ -279,6 +279,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 9b0e1bdfb3fe9eb314ea3f4725fa4eed290cc120 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 8ee6d44..7cfdcfc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -280,6 +280,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 f2f849b002d34c01ae6a8bdabc8144485463260b 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 b1e8095..deccfa5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -277,6 +277,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 5d12913..34d05c8 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(); @@ -2148,11 +2143,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 ) @@ -5014,9 +5029,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; @@ -5053,9 +5068,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(); @@ -5066,7 +5081,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 ) @@ -5081,25 +5096,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; @@ -5310,7 +5324,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"; } @@ -5324,49 +5338,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+ @@ -5377,11 +5379,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; @@ -6515,6 +6517,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() { @@ -10084,15 +10109,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 ) ) { @@ -10101,14 +10122,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; @@ -10182,177 +10196,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 45c096d..1fb1e8e 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: @@ -584,7 +589,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() @@ -840,14 +844,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; @@ -857,14 +854,6 @@ private: bool cyEntry; - QString pulseDir; - QString pulseBaseDir; - QString pulseRuntimeDir; - QString pulseCookieArg; - int pulsePort; - bool pulseNoRecord; - - int esdPort; bool maximizeProxyWin; int proxyWinWidth; int proxyWinHeight; @@ -877,6 +866,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; @@ -1020,9 +1015,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 e266f8fe52cd65f5c2ff2787e375aa1cc2800436 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 f87534b..b1e8095 100644 --- a/debian/changelog +++ b/debian/changelog @@ -276,6 +276,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 0e276adfd5c60e4dffe777d4826e35e95a367340 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 eeb83d2..e050dbc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -288,6 +288,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 5a2ce749b64a701276161ac3dc34ac86396cc4c8 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 a9a0659..920ce77 100644 --- a/debian/changelog +++ b/debian/changelog @@ -284,6 +284,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 b356a80825a6e3041d9501d0d940bfeeebbb12f0 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 920ce77..eeb83d2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -286,6 +286,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 34d05c8..6645679 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5107,10 +5107,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 78f998a072d46b89bcea5d6ec985bb826cb46260 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 7cfdcfc..a9a0659 100644 --- a/debian/changelog +++ b/debian/changelog @@ -282,6 +282,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 6b082952c31fc147642113d8c6ce47953f1ee851 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 a81b814..1187992 100644 --- a/debian/changelog +++ b/debian/changelog @@ -291,6 +291,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 b34dd92..7a4c65b 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5339,7 +5339,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+ @@ -5356,7 +5356,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 b613baf752c93b4300809648e31aa57e5dc7d824 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 e050dbc..a81b814 100644 --- a/debian/changelog +++ b/debian/changelog @@ -290,6 +290,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 6645679..b34dd92 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 841ebb08c9cf8bdf8f5e24959265b03e0d6a304b 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 1187992..9cf8167 100644 --- a/debian/changelog +++ b/debian/changelog @@ -293,6 +293,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 7a4c65b..a2c017a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5101,7 +5101,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 f91bb5598491b9d2ccf311b88c1762cd579ddf8c 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 9cf8167..b1c9e98 100644 --- a/debian/changelog +++ b/debian/changelog @@ -295,6 +295,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 e1a201655ee4cb80370865b7ef48f031eea3fee3 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 32f04ca..0a60466 100644 --- a/debian/changelog +++ b/debian/changelog @@ -298,6 +298,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 9356691acae22b02eda5c32c4d7a1c9361e17351 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 0a60466..12d95da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -299,6 +299,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 2ff420e8655a2e802c70be08d5532ee1aecca6bd 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 b1c9e98..32f04ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -296,6 +296,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 203aede245ae3a1d51d0832306000a8ea1fd3ed8 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 73c9c9d..ab97661 100644 --- a/debian/changelog +++ b/debian/changelog @@ -301,6 +301,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 e068a558aaf4e5dd547526431ee53f19e04c3992 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 12d95da..73c9c9d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -300,6 +300,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 a2c017a..4aa5da7 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -2163,7 +2163,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) */ @@ -6531,6 +6536,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 796b5b697af8fc1a3b4b5d0da67d358a20da6d63 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 b53fb76..fb85cb3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -307,6 +307,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 e4691a283c03a727f7e0f6bed4d2689012e0f946 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 ab97661..3651a65 100644 --- a/debian/changelog +++ b/debian/changelog @@ -303,6 +303,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 7865b567cb567622a2661d37684a3a9779b07a73 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 3651a65..b53fb76 100644 --- a/debian/changelog +++ b/debian/changelog @@ -305,6 +305,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 066655aa16db6632f5b7909bb6b7f3a5ee441eee 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 6bf0680..ae1dce7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -310,6 +310,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 1fccb2dc88c6ba217af2afb8a9c47474231b3c34 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 fb85cb3..6bf0680 100644 --- a/debian/changelog +++ b/debian/changelog @@ -309,6 +309,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 015b521c04da53dd544cafb374793f00d222ac1d 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 ae1dce7..cc947e9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -311,6 +311,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 56171d78a21f61350f01c53189cbfc82d86ad873 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 f89e75a..745b217 100644 --- a/debian/changelog +++ b/debian/changelog @@ -315,6 +315,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 d94eadfb530fec8557fc36fd8af5e8b37a970f9a 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 cc947e9..5651818 100644 --- a/debian/changelog +++ b/debian/changelog @@ -312,6 +312,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 8db27c13190c868221da4be478dfb956340e982c 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 5651818..f89e75a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -313,6 +313,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 f206423941d6963509e3f1e02940196edf48de3b 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 745b217..3b6aac6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -318,6 +318,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 d987d6d55031059a90bd07ea4c10474ca12584f2 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 074c1a4..c7fd8ec 100644 --- a/debian/changelog +++ b/debian/changelog @@ -323,6 +323,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 4192babac1db4788d3a3c0c2c908840e7186034e 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 3b6aac6..074c1a4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -321,6 +321,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 665823a35e09f1a53b16b564c90523523d8a9563 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 c7fd8ec..e466ffa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -325,6 +325,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 967a839289be0a144849b3f119eeb521534270fc 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 e466ffa..2b66337 100644 --- a/debian/changelog +++ b/debian/changelog @@ -326,6 +326,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 9f298d98313bdea86cb5302fe1c0d3e056904b7a 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 b2a2c0d..21e247a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -331,6 +331,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 9f3b382..f6978c5 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" @@ -287,4 +288,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 a0bc1253a06cc9657a2e6e6613f7e9f1b9c0591c 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 2b66337..b2a2c0d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -329,6 +329,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 1a34ea4615b568ca9ec7c0909fa0c9a22f0a9fb9 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 21e247a..0c54830 100644 --- a/debian/changelog +++ b/debian/changelog @@ -334,6 +334,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 86c95419b90bdc128b5f843041fffe4a4a439861 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 6cc950f..7df9f36 100644 --- a/debian/changelog +++ b/debian/changelog @@ -337,6 +337,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 34176107b21666c4aad98b88240ffdaf65fbab79 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 0c54830..6cc950f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -336,6 +336,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 239ede45d8dd62c18a25c1dc17371ea15139ac7b 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 7df9f36..15eba00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -339,6 +339,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 f6978c5..1861443 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -302,7 +302,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 5f0e2cbc115bdc0ce1cf9e05c5c201abe4493377 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 153aacb..87aa20c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -344,6 +344,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 1861443..f58a436 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -99,7 +99,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)); @@ -107,16 +107,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 01dde02cdbd6a890e60c6dd547d1cdbb93ad80fb 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 15eba00..0a49996 100644 --- a/debian/changelog +++ b/debian/changelog @@ -340,6 +340,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 7b4d671ad73dc255a212d9135d42ba37a9170649 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 0a49996..153aacb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -342,6 +342,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 fa0c8dedcdbffe4c018622d180e5f7ab1d6ae7bd 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 87aa20c..f3eb446 100644 --- a/debian/changelog +++ b/debian/changelog @@ -346,6 +346,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 861f990aab14cf33ed69ce8e122b631fbe11c5c9 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 f3eb446..028d556 100644 --- a/debian/changelog +++ b/debian/changelog @@ -348,6 +348,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 f58a436..99739e2 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -118,7 +118,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 131865644d6c3125b2b7b047073d8bbad627bef2 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 db81def..5dd0f34 100644 --- a/debian/changelog +++ b/debian/changelog @@ -349,6 +349,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 ebc5bdd17d3eebc790c89bf3d7f02ab722b4d735 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 028d556..db81def 100644 --- a/debian/changelog +++ b/debian/changelog @@ -338,7 +338,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 126e4a83b4efcaf6d9f01c5e6cb8609a18fc9359 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 2b3e953..fc1b18e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -351,6 +351,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 7768dfc236242305a3d4612c69b1b959a6ad1f9d 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 5dd0f34..2b3e953 100644 --- a/debian/changelog +++ b/debian/changelog @@ -350,6 +350,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 67197568c0e6283511e6e9bb57e5147120e91d7e 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 fc1b18e..e5d7202 100644 --- a/debian/changelog +++ b/debian/changelog @@ -353,6 +353,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 38e6efdbbfa012eecd2c63aa782a576e6e018331 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 18ba0e2..ea09661 100644 --- a/debian/changelog +++ b/debian/changelog @@ -355,6 +355,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 99739e2..74b2918 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -303,7 +303,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 4dec14f5f0be1de20dc4e4cc832370c7971bccc3 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 e5d7202..18ba0e2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -354,6 +354,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 a279b70e2c77af003d7f9eaef65b64d567d50d2d 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 ea09661..5831120 100644 --- a/debian/changelog +++ b/debian/changelog @@ -357,6 +357,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 74b2918..f218355 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -326,6 +326,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 23d0e4ea44279e7f3a2a49c920c6f251b71787d5 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 5831120..6aeec72 100644 --- a/debian/changelog +++ b/debian/changelog @@ -358,6 +358,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 dc56238a424e98d6f34826ab22b1adbe559ae206 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 6aeec72..594b604 100644 --- a/debian/changelog +++ b/debian/changelog @@ -359,6 +359,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 62fffcf3487ec58ab4daf9e8fcd14574a6a60770 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 594b604..d358fdd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -362,6 +362,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 5862ae15355fa20b17e623abfbb6d4fbacc18fc1 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 b369c8c..7e07abb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -370,6 +370,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 d9cc6f6..4f749c3 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 37c2f8be0812a6d3a22972949fd0fbc531c0757a 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 d358fdd..bf72d63 100644 --- a/debian/changelog +++ b/debian/changelog @@ -364,6 +364,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 4aa5da7..e69daa2 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8321,8 +8321,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/"); } @@ -9599,15 +9604,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 73dc5470a1d9403556e3132025a69bab057af711 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 bf72d63..b369c8c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -368,6 +368,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 e69daa2..d9cc6f6 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 d0b0af4a97eb31e9482a7d261bd159a63af8c40a 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 7e07abb..2c91924 100644 --- a/debian/changelog +++ b/debian/changelog @@ -372,6 +372,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 4f749c3..3eba34c 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9863,7 +9863,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 90c0da3fba1eea29e2247c5c5ad651e0a10a1c99 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 2c91924..16ea631 100644 --- a/debian/changelog +++ b/debian/changelog @@ -374,6 +374,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 3eba34c..180c785 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10302,7 +10302,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 b4bef6a9af0b308b2fd0b710ecd3fa5c20a492b8 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 cd25212..b74b31d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -379,6 +379,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 cbdb45077cbae82f37a7da7172727bb249c4388a 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 16ea631..cd25212 100644 --- a/debian/changelog +++ b/debian/changelog @@ -376,6 +376,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 180c785..b7ae1ed 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9863,7 +9863,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 1b466dc4e10efbb6e2c0e26d7d735c601813f8bc 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 b74b31d..6ccbdbf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -380,6 +380,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 1e7bc0725f6f55e01b32e828cc79697b9f81709a 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 f462fca..bc99c89 100644 --- a/debian/changelog +++ b/debian/changelog @@ -390,6 +390,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 0620fd713cf27cfa3a10f0f2ea6fcb3b029ad0ac 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 6ccbdbf..f462fca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -386,6 +386,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 0518893718ca85e0651f604bcead697619e9000e 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 bc99c89..6370fc6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -391,6 +391,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 a193a4c5118806f1ec2428520e8b628e31d35b42 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 0617768..bdf2764 100644 --- a/debian/changelog +++ b/debian/changelog @@ -393,6 +393,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 c0d19217b67a468923df700af538b6393ad4f661 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 6370fc6..0617768 100644 --- a/debian/changelog +++ b/debian/changelog @@ -392,6 +392,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 8c011d9117a381ef03cc04cb068ccbca577ba4c5 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 bdf2764..6eac2b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -395,6 +395,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 6fe0ef07acd920fc79c99e6a32d1d67daa54bf67 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 a2f9e4f..6ab6c81 100644 --- a/debian/changelog +++ b/debian/changelog @@ -400,6 +400,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 e04e71a2e30855177f8129800bd27774b1ca2f95 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 6eac2b9..a2f9e4f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -399,6 +399,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 5078b83dd8fe7871f99681bad2dbd985bcec4979 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 6ab6c81..f5a10fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -401,6 +401,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 cf97425015f597aa5066808ff0e0f0f791487202 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 f5a10fb..dafe06e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -402,6 +402,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 b7ae1ed..363c7f6 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8113,6 +8113,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 ); @@ -8128,6 +8155,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(" "); @@ -8140,6 +8170,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 34fa207b2c08679404b8c5501c45481d9c313e42 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 dafe06e..2001a78 100644 --- a/debian/changelog +++ b/debian/changelog @@ -404,6 +404,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 363c7f6..38f942f 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10356,26 +10356,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) { @@ -10402,6 +10409,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 2685544d7ae5833a8cb8854c87c5e64a420f6906 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 2001a78..c132511 100644 --- a/debian/changelog +++ b/debian/changelog @@ -407,6 +407,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 38f942f..eef7633 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8208,7 +8208,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 ()) { @@ -10173,7 +10173,7 @@ void ONMainWindow::startWinServers() { dr.mkpath ( etcDir ); - generateHostKey(RSA_KEY_TYPE); + generateKey(RSA_KEY_TYPE, true); generateEtcFiles(); sshStarter->start(); } @@ -10352,7 +10352,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 1fb1e8e..38c22c3 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1206,7 +1206,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 994a1290f80933f6f3963076a79694f5a9854c30 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 c132511..e1bff32 100644 --- a/debian/changelog +++ b/debian/changelog @@ -410,6 +410,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 eef7633..e3802f5 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10391,21 +10391,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 0eaec37ac0faaad3537d8905195021b6c2b3b641 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 1f3e47c..4a939fd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -418,6 +418,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 69d6573..183231a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10383,6 +10383,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 (); } } @@ -10446,7 +10447,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 e94e94e6b9fa3abba2008d403cf21ddb4c7ce336 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 e1bff32..1f3e47c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -412,6 +412,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 e3802f5..69d6573 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8140,35 +8140,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... @@ -8208,14 +8180,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(); @@ -8233,18 +8205,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) @@ -10173,7 +10145,7 @@ void ONMainWindow::startWinServers() { dr.mkpath ( etcDir ); - generateKey(RSA_KEY_TYPE, true); + UNUSED (generateKey (RSA_KEY_TYPE, true)); generateEtcFiles(); sshStarter->start(); } @@ -10352,11 +10324,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; @@ -10386,28 +10359,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" @@ -10415,11 +10443,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 38c22c3..64624cc 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1206,7 +1206,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 fc842aa7f5639e0e684535b88ab84b75417032ce 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 | 234 ++++++++++---------------------------------------- src/onmainwindow.h | 1 - 4 files changed, 48 insertions(+), 211 deletions(-) diff --git a/debian/changelog b/debian/changelog index e965339..c1f6787 100644 --- a/debian/changelog +++ b/debian/changelog @@ -421,6 +421,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 eb67ef6..f514cf6 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(); @@ -8145,52 +8139,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_rsa_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 } @@ -8320,21 +8288,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"); /* @@ -9603,30 +9558,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)) { @@ -9703,7 +9640,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 ( "=" ); @@ -9714,11 +9655,6 @@ void ONMainWindow::startX2goMount() break; } } -#else - cuser="user"; -#endif -#ifdef Q_OS_WIN - cuser=wapiGetUserName(); #endif QString cmd; QString dirs=dir->dirList; @@ -10398,7 +10334,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"); @@ -10486,17 +10422,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 @@ -10507,6 +10433,7 @@ bool ONMainWindow::startSshd() 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()+"\""; // generate a unique sshLog filepath, and create its directory @@ -10572,21 +10499,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); @@ -12027,67 +11953,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."); @@ -12105,50 +11988,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 64624cc..4b4de51 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -838,7 +838,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 1111f956607f9be579711f7b3a75b7e76441bd8e 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 4a939fd..e965339 100644 --- a/debian/changelog +++ b/debian/changelog @@ -420,6 +420,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 183231a..eb67ef6 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8307,7 +8307,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(); @@ -9692,7 +9692,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 88134de430813ef191c134ed81feb501e961167d 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 c1f6787..9496a33 100644 --- a/debian/changelog +++ b/debian/changelog @@ -425,6 +425,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 f514cf6..adf354c 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10514,9 +10514,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 53077089d76f695c23625382b9e8f5f501867fdc 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 9496a33..211af30 100644 --- a/debian/changelog +++ b/debian/changelog @@ -428,6 +428,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 adf354c..b1d8bcb 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10358,11 +10358,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 a0ee3c1848c6c4c1f23f3be42bd1d7dcc5aa06dc 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 211af30..d0b46f6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -430,6 +430,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 b1d8bcb..0ec51ef 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 33c23e0eb940ad5c3341dc00625e0f3f7b4bb975 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 d0b46f6..7d71ba4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -432,6 +432,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 0ec51ef..03ad641 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10282,6 +10282,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 4b4de51..b21e417 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1218,6 +1218,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 cb59e62402fe2a878cd6598ef1796ebe9fb23020 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 7d71ba4..c9018b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -434,6 +434,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 03ad641..1557222 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10309,6 +10309,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 b21e417..0d3fb49 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,6 +1219,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 8f652e787dbd5b6a81055d72ab57c2f9eaa7a0ca 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 c9018b9..98d89e3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -437,6 +437,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 1557222..663591b 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10333,6 +10333,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 0d3fb49..bf4ed80 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1220,6 +1220,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 b8878c2c5bd2584f5cdfa735515ee1d2728afa55 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 98d89e3..434a998 100644 --- a/debian/changelog +++ b/debian/changelog @@ -440,6 +440,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 663591b..932f66b 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10360,45 +10360,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 59da4b83b58549a4aeaddb2f5430eb3f01a35203 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 434a998..f5b11ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -441,6 +441,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 bf4ed80..08c3833 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1205,7 +1205,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(); @@ -1221,6 +1220,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 4ee6820231bb8406c82d902b4148293a3c73cfa7 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 f5b11ed..45b6fe4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -442,6 +442,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 932f66b..7548d7a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10358,126 +10358,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 08c3833..47ef1e7 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1220,7 +1220,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 07bcb150df74e3ab6ffe790134cb3f0bdec9d84c 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 45b6fe4..164056a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -443,6 +443,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 7548d7a..6f7a87a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8127,88 +8127,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); @@ -10478,6 +10396,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 47ef1e7..2df3afa 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -956,7 +956,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 ); @@ -1221,6 +1220,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 3b431486757fd68bc17b7ff52c20991207da9d71 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 | 129 ++++++++++++++++++++++++-------------------------- src/onmainwindow.h | 2 +- 3 files changed, 64 insertions(+), 68 deletions(-) diff --git a/debian/changelog b/debian/changelog index 164056a..d09f6ef 100644 --- a/debian/changelog +++ b/debian/changelog @@ -444,6 +444,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 6f7a87a..17cfec5 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10396,86 +10396,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 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); + QString user_key = generateKey (RSA_KEY_TYPE); - /* - * Now taking the *host* pub key here... - */ - QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); + /* + * 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 2df3afa..abfb019 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1220,7 +1220,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 299f4e12b7e6a57e84e4d0479879f79ca3efb270 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 d09f6ef..40d09c2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -445,6 +445,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 17cfec5..cb65b1e 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10479,6 +10479,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 e3439e4b3f0c18c84aec9667714cca3f2cc638d1 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 40d09c2..150dedd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -448,6 +448,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 cb65b1e..1ecc214 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10467,7 +10467,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 bb16e8186081bdd6ef5d0ef08bf32bbb8564d773 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 150dedd..c279451 100644 --- a/debian/changelog +++ b/debian/changelog @@ -449,6 +449,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 1ecc214..601195f 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -7962,7 +7962,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 ()) { @@ -10396,7 +10396,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 @@ -10424,41 +10424,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 abfb019..f556f85 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1220,7 +1220,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 44552302847b9f4df94b740e391c30710e75c4d2 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 c279451..5192474 100644 --- a/debian/changelog +++ b/debian/changelog @@ -453,6 +453,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 290987c374db90cde3b8e7637cc4bab017995654 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 5192474..f5c0c7a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -454,6 +454,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 601195f..d971259 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10598,17 +10598,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 e5c6396e77cb597136bdac8703c4bede7ca49bb7 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 f5c0c7a..a719ab5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -457,6 +457,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 d971259..9dbe555 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10624,6 +10624,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 40b7fda9a8149b1ff3fd3bb44c7e1b0626e9f93a 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 a719ab5..65ff80e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -459,6 +459,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 9dbe555..77c37db 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10570,20 +10570,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 53911487e9d26e8824a3930e7c8ccafce910a45d 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 65ff80e..cc64a50 100644 --- a/debian/changelog +++ b/debian/changelog @@ -461,6 +461,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 f556f85..9046349 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -584,7 +584,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 ); @@ -1221,6 +1220,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 9bce12a84f7e0030da87838996308aba05fcba0e 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 cc64a50..fe96d58 100644 --- a/debian/changelog +++ b/debian/changelog @@ -463,6 +463,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 77c37db..f8b8507 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10002,6 +10002,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 9046349..2e2da7f 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 da7833be0960767d2e1d85f0ec7dd2ea701c42d7 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 fe96d58..3caa469 100644 --- a/debian/changelog +++ b/debian/changelog @@ -465,6 +465,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 f8b8507..2567b33 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10496,7 +10496,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 2e2da7f..c6c785b 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1223,7 +1223,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 c6567c137704880e28b0f27f94f2dee0eb176307 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 3caa469..b39d666 100644 --- a/debian/changelog +++ b/debian/changelog @@ -466,6 +466,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 2567b33..bfedac0 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9994,7 +9994,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 7826b3d52bb493d3c1faf15f9cdad775a93b4a97 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 b39d666..9182006 100644 --- a/debian/changelog +++ b/debian/changelog @@ -468,6 +468,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 bfedac0..ba1adc0 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10462,7 +10462,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 fc2410230794365c83aca3ba6107721970f09eed 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 9182006..3f85fed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -470,6 +470,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 ba1adc0..d1e4c93 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10011,8 +10011,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 ..."; @@ -10028,7 +10029,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 c6c785b..14240e5 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1012,7 +1012,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 8c2bb96157572ba2751430989ecb0a22fcc9ffc6 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 3f85fed..9354f5c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -472,6 +472,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 d1e4c93..7de4eb0 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10505,6 +10505,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) @@ -10528,8 +10530,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) @@ -10619,9 +10620,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 5dc534f91c0cd7fc598c24023da09eb46c6c2db6 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 9354f5c..eea55ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -474,6 +474,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 14240e5..bf721a6 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 @@ -1270,4 +1254,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 4f4e1a3658d7c3428b5fc16ab3b69b47c9bfefb0 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 af81ca2..222063b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -481,6 +481,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 7795224..e0a90f4 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9983,7 +9983,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 c3c8bdf8270edad66e6113107ae6eaca22256b76 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 222063b..f0cb88c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -483,6 +483,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 61c66de..e0f9d56 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -562,6 +562,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 ); @@ -1198,7 +1199,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 e78ee215eb4fa7508a80a82d1a0b2d8ce9be964f 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 bb90744..af81ca2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -477,6 +477,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 7de4eb0..7795224 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9983,10 +9983,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 cbf4118..61c66de 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1260,7 +1260,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 1f7051ee2e4ddcbf19beaac0c0db5426185f8561 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 eea55ca..bb90744 100644 --- a/debian/changelog +++ b/debian/changelog @@ -476,6 +476,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 bf721a6..cbf4118 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 642e4c557c44350363c488a3ee0f7ab0e5271c2b 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 f0cb88c..89de484 100644 --- a/debian/changelog +++ b/debian/changelog @@ -485,6 +485,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 e0a90f4..21fd521 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10287,8 +10287,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 (""); @@ -10310,12 +10308,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 (""); @@ -10338,14 +10334,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; @@ -10400,7 +10405,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 1cfcd80793362f99d450128d78d8a0c23ae829b9 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 28 16:33:38 2016 +0100 src/x2goutils.{cpp,h}: make find_binary () and add_to_path () available on all UNIX-based operating systems. We will need it for sftp-server discovery. --- debian/changelog | 3 +++ src/x2goutils.cpp | 4 +++- src/x2goutils.h | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index e60504b..61f0801 100644 --- a/debian/changelog +++ b/debian/changelog @@ -490,6 +490,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: use QFileInfo to get the key file's basename in exportDirs () instead of the old, potentially faulty string replace dance. + - src/x2goutils.{cpp,h}: make find_binary () and add_to_path () available + on all UNIX-based operating systems. We will need it for sftp-server + discovery. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index f218355..542ae7e 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -207,7 +207,9 @@ void show_XQuartz_generic_error (const QString &main_error, const QString &addit "or\n" "<center><b>/Applications/Utilities/XQuartz.app</b></center>")); } +#endif /* defined (Q_OS_DARWIN) */ +#ifdef Q_OS_UNIX QString add_to_path (const QString &orig_path, const QStringList &add, const bool back) { QString ret = orig_path; std::vector<bool> found; @@ -335,4 +337,4 @@ QString find_binary (const QString &path, const QString &binary_name) { return (ret); } -#endif /* defined (Q_OS_DARWIN) */ +#endif /* defined (Q_OS_UNIX) */ diff --git a/src/x2goutils.h b/src/x2goutils.h index dd7613c..f489439 100644 --- a/src/x2goutils.h +++ b/src/x2goutils.h @@ -45,7 +45,9 @@ bool font_is_monospaced (const QFont &font); void show_XQuartz_not_found_error (); void show_XQuartz_start_error (); void show_XQuartz_generic_error (const QString &main_error, const QString &additional_info); +#endif /* defined (Q_OS_DARWIN) */ +#ifdef Q_OS_UNIX /* * Add a list of strings to a PATH value. * @@ -65,6 +67,6 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo * 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 (Q_OS_UNIX) */ #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 efb8da200208f53e6e9888a81ba4efe24e37c9f9 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 89de484..e60504b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -487,6 +487,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 21fd521..63983f3 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -7999,12 +7999,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
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4cd32bc07b10accb997973233da4053eadce4f7d Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 28 17:33:36 2016 +0100 src/pulsemanager.cpp: refactor PA binary searching code. Less duplication now. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 48 ++++++++++++++---------------------------------- 2 files changed, 16 insertions(+), 34 deletions(-) diff --git a/debian/changelog b/debian/changelog index 61f0801..c27b966 100644 --- a/debian/changelog +++ b/debian/changelog @@ -493,6 +493,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/x2goutils.{cpp,h}: make find_binary () and add_to_path () available on all UNIX-based operating systems. We will need it for sftp-server discovery. + - src/pulsemanager.cpp: refactor PA binary searching code. Less + duplication now. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 93c83b3..d7b6d72 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -79,21 +79,6 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), 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."; - 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 { - system_pulse_ = true; - } } #else /* QT_VERSION < 0x050000 */ QStringList search_paths; @@ -117,30 +102,25 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), 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."; - 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 (); - } } } + } +#endif /* QT_VERSION < 0x050000 */ - /* - * 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. - */ + if (server_binary_.isEmpty ()) { + x2goErrorf (29) << "Unable to find the PulseAudio binary. Neither bundled, nor found in $PATH nor additional directories."; + show_RichText_ErrorMsgBox (tr ("Unable to find the 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 { system_pulse_ = true; } -#endif /* QT_VERSION < 0x050000 */ QFileInfo tmp_file_info = QFileInfo (server_binary_); server_working_dir_ = tmp_file_info.canonicalPath (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit ae89ac6cdf9278b4a41f3637106bf3b48d1ef0bb Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 28 17:38:57 2016 +0100 src/onmainwindow.cpp: fix sshd_config generation on UNIX by searching for the real sftp-server binary path. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 79 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index c27b966..00eacf6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -495,6 +495,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium discovery. - src/pulsemanager.cpp: refactor PA binary searching code. Less duplication now. + - src/onmainwindow.cpp: fix sshd_config generation on UNIX by searching + for the real sftp-server binary path. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 63983f3..d3b4a5b 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10186,14 +10186,81 @@ void ONMainWindow::generateEtcFiles() out<<"StrictModes no\n"<< "UsePrivilegeSeparation no\n"<< "PidFile \"" + varDir + "/sshd.pid\"\n" << - "AuthorizedKeysFile \"" << authKeyPath << "\"\n" << + "AuthorizedKeysFile \"" << authKeyPath << "\"\n"; #ifdef Q_OS_WIN - "Subsystem shell "<< wapiShortFileName ( appDir) +"/sh"+"\n"<< - "Subsystem sftp "<< wapiShortFileName ( appDir) +"/sftp-server"+"\n"; + out << "Subsystem shell "<< wapiShortFileName ( appDir) +"/sh"+"\n"<< + "Subsystem sftp "<< wapiShortFileName ( appDir) +"/sftp-server"+"\n"; #else - "Subsystem sftp " - /* This may need some sanitization, i.e., appDir could potentially include whitespace. */ - <<appDir<<"/sftp-server\n"; + /* + * We need to find the sftp-server binary. + * This turns out to be surprisingly difficult, because there is no standard place + * for this binary. Instead, every distribution installs it where they see fit. + * Needless to say, we're screwed... + */ + + QString sftp_binary; + +#if QT_VERSION < 0x050000 + QProcessEnvironment tmp_env = QProcessEnvironment::systemEnvironment (); + QString path_val = tmp_env.value ("PATH"); + + QStringList to_back; + to_back << "/usr/lib/openssh" /* Debian and Ubuntu */ + << "/usr/libexec/openssh" /* Fedora, CentOS, hopefully also RHEL */ + << "/usr/lib/ssh/" /* Mageia, OpenSUSE, SLE{S,D} < 12 x86, SLE{S,D} 12, Arch */ + << "/usr/lib64/ssh" /* SLE{S,D} < 12 x86_64 */ + << "/usr/lib/misc" /* Gentoo */ + << "/usr/libexec"; /* Slackware, OS X */ + + add_to_path (path_val, to_back); + + /* Just in case we bundle sftp-server ourselves. */ + sftp_binary = find_binary (appDir, "sftp-server"); + + if (sftp_binary.isEmpty ()) { + sftp_binary = find_binary (path_val, "sftp-server"); + } +#else /* QT_VERSION < 0x050000 */ + QStringList search_paths; + search_paths << appDir; + + sftp_binary = QStandardPaths::findExecutable ("sftp-binary", search_paths); + + if (sftp_binary.isEmpty ()) { + search_paths = QStringList (); + + sftp_binary = QStandardPaths::findExecutable ("sftp-binary", search_paths); + + if (sftp_binary.isEmpty ()) { + search_paths = QStringList (); + search_paths << "/usr/lib/openssh" /* Debian and Ubuntu */ + << "/usr/libexec/openssh" /* Fedora, CentOS, hopefully also RHEL */ + << "/usr/lib/ssh/" /* Mageia, OpenSUSE, SLE{S,D} < 12 x86, SLE{S,D} 12, Arch */ + << "/usr/lib64/ssh" /* SLE{S,D} < 12 x86_64 */ + << "/usr/lib/misc" /* Gentoo */ + << "/usr/libexec"; /* Slackware, OS X */ + + sftp_binary = QStandardPaths::findExecutable ("sftp-server", search_paths); + } + } +#endif /* QT_VERSION < 0x050000 */ + + if (sftp_binary.isEmpty ()) { + x2goErrorf (31) << "Unable to find the sftp-server binary. Neither bundled, nor found in $PATH nor additional directories."; + show_RichText_ErrorMsgBox (tr ("Unable to find the sftp-server binary. Neither bundled, nor found in $PATH nor additional directories."), + tr ("If you are using a Linux-based operating system, please ask your system administrator " + "to install the package containing the sftp-server binary. Common names are <b>openssh</b>, " + "<b>openssh-server</b> or <b>openssh-sftp-server</b> depending upon distribution.\n\n" + "If the sftp-server binary is installed on your system, please report a bug " + "mentioning its path 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 (); + } + + out << "Subsystem sftp " << sftp_binary << "\n"; #endif /* The log file in startSshd() is specific to Windows. */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 6e986e2d375175214fefa3e0edacfdddf8586d3a Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 28 18:09:53 2016 +0100 src/pulsemanager.cpp: fix PA binary searching logic. We don't want to unconditionally set system_pulse_ to true if we found a binary... it might as well be the bundled one... --- debian/changelog | 3 +++ src/pulsemanager.cpp | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 00eacf6..f92e7ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -497,6 +497,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium duplication now. - src/onmainwindow.cpp: fix sshd_config generation on UNIX by searching for the real sftp-server binary path. + - src/pulsemanager.cpp: fix PA binary searching logic. We don't want to + unconditionally set system_pulse_ to true if we found a binary... it + might as well be the bundled one... [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index d7b6d72..a956054 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -79,6 +79,10 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), if (server_binary_.isEmpty ()) { server_binary_ = find_binary (path_val, "pulseaudio"); + + if (!(server_binary_.isEmpty ())) { + system_pulse_ = true; + } } #else /* QT_VERSION < 0x050000 */ QStringList search_paths; @@ -102,8 +106,18 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), search_paths << "/usr/local/bin"; /* Homebrew or random stuff. Probably even both intermingled... */ server_binary_ = QStandardPaths::findExecutable ("pulseaudio", search_paths); + + if (!(server_binary_.isEmpty ())) { + system_pulse_ = true; + } + } + else { + system_pulse_ = true; } } + else { + system_pulse_ = true; + } } #endif /* QT_VERSION < 0x050000 */ @@ -118,9 +132,6 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), true); abort (); } - else { - system_pulse_ = true; - } QFileInfo tmp_file_info = QFileInfo (server_binary_); server_working_dir_ = tmp_file_info.canonicalPath (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e440f47b099aac2bddcfa5e47d2e08b2e46005af Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Dec 9 16:51:47 2016 +0100 src/onmainwindow.cpp: move generateEtcFiles () call to startSshd (). We must make sure that the sshd_config file exists and is up-to-date, so let's always do it right before starting the sshd binary. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f92e7ba..81a770d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -500,6 +500,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: fix PA binary searching logic. We don't want to unconditionally set system_pulse_ to true if we found a binary... it might as well be the bundled one... + - src/onmainwindow.cpp: move generateEtcFiles () call to startSshd (). We + must make sure that the sshd_config file exists and is up-to-date, so + let's always do it right before starting the sshd binary. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index d3b4a5b..35febad 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10028,7 +10028,6 @@ void ONMainWindow::startWinServers(ONMainWindow::key_types key_type) dr.mkpath ( etcDir ); UNUSED (generateKey (key_type, true)); sshStarter->set_ssh_key_type (key_type); - generateEtcFiles(); sshStarter->start(); } @@ -10520,7 +10519,6 @@ QString ONMainWindow::createKeyBundle (key_types key_type) { #ifdef Q_OS_UNIX x2goDebug << "Creating a new one."; QString tmp_file_name (generateKey (key_type, true)); - generateEtcFiles (); rsa.setFileName (tmp_file_name + ".pub"); if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { @@ -10588,6 +10586,12 @@ bool ONMainWindow::startSshd(ONMainWindow::key_types key_type) } } + /* + * Pro-actively (re-)create sshd_config file, we'll need it for sshd + * and more importantly make sure that it's up-to-date. + */ + generateEtcFiles (); + 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 777cec199e8e69e28fa9cf52ce47fcb0736b3224 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Dec 9 16:52:51 2016 +0100 src/onmainwindow.cpp: stop duplicating the list of known sftp-server binary locations. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 25 +++++++++---------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/debian/changelog b/debian/changelog index 81a770d..4174a9b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -503,6 +503,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: move generateEtcFiles () call to startSshd (). We must make sure that the sshd_config file exists and is up-to-date, so let's always do it right before starting the sshd binary. + - src/onmainwindow.cpp: stop duplicating the list of known sftp-server + binary locations. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 35febad..3a5e020 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10198,20 +10198,19 @@ void ONMainWindow::generateEtcFiles() */ QString sftp_binary; + QStringList common_sftp_dirs; + common_sftp_dirs << "/usr/lib/openssh" /* Debian and Ubuntu */ + << "/usr/libexec/openssh" /* Fedora, CentOS, hopefully also RHEL */ + << "/usr/lib/ssh/" /* Mageia, OpenSUSE, SLE{S,D} < 12 x86, SLE{S,D} 12, Arch */ + << "/usr/lib64/ssh" /* SLE{S,D} < 12 x86_64 */ + << "/usr/lib/misc" /* Gentoo */ + << "/usr/libexec"; /* Slackware, OS X */ #if QT_VERSION < 0x050000 QProcessEnvironment tmp_env = QProcessEnvironment::systemEnvironment (); QString path_val = tmp_env.value ("PATH"); - QStringList to_back; - to_back << "/usr/lib/openssh" /* Debian and Ubuntu */ - << "/usr/libexec/openssh" /* Fedora, CentOS, hopefully also RHEL */ - << "/usr/lib/ssh/" /* Mageia, OpenSUSE, SLE{S,D} < 12 x86, SLE{S,D} 12, Arch */ - << "/usr/lib64/ssh" /* SLE{S,D} < 12 x86_64 */ - << "/usr/lib/misc" /* Gentoo */ - << "/usr/libexec"; /* Slackware, OS X */ - - add_to_path (path_val, to_back); + add_to_path (path_val, common_sftp_dirs); /* Just in case we bundle sftp-server ourselves. */ sftp_binary = find_binary (appDir, "sftp-server"); @@ -10231,13 +10230,7 @@ void ONMainWindow::generateEtcFiles() sftp_binary = QStandardPaths::findExecutable ("sftp-binary", search_paths); if (sftp_binary.isEmpty ()) { - search_paths = QStringList (); - search_paths << "/usr/lib/openssh" /* Debian and Ubuntu */ - << "/usr/libexec/openssh" /* Fedora, CentOS, hopefully also RHEL */ - << "/usr/lib/ssh/" /* Mageia, OpenSUSE, SLE{S,D} < 12 x86, SLE{S,D} 12, Arch */ - << "/usr/lib64/ssh" /* SLE{S,D} < 12 x86_64 */ - << "/usr/lib/misc" /* Gentoo */ - << "/usr/libexec"; /* Slackware, OS X */ + search_paths = common_sftp_dirs; sftp_binary = QStandardPaths::findExecutable ("sftp-server", search_paths); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2779177a5291df1c805178bd04e4e9b34822c5f8 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Dec 9 16:54:33 2016 +0100 src/{onmainwindow,pulsemanager}.cpp: actually *use* what we got back from add_to_path ()... Fixes a few bugs here and there. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 2 +- src/pulsemanager.cpp | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4174a9b..2e3450f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -505,6 +505,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium let's always do it right before starting the sshd binary. - src/onmainwindow.cpp: stop duplicating the list of known sftp-server binary locations. + - src/{onmainwindow,pulsemanager}.cpp: actually *use* what we got back + from add_to_path ()... Fixes a few bugs here and there. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 3a5e020..db739ba 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10210,7 +10210,7 @@ void ONMainWindow::generateEtcFiles() QProcessEnvironment tmp_env = QProcessEnvironment::systemEnvironment (); QString path_val = tmp_env.value ("PATH"); - add_to_path (path_val, common_sftp_dirs); + path_val = add_to_path (path_val, common_sftp_dirs); /* Just in case we bundle sftp-server ourselves. */ sftp_binary = find_binary (appDir, "sftp-server"); diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index a956054..8b2e736 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -72,8 +72,8 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), 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); + path_val = add_to_path (path_val, to_back); + path_val = add_to_path (path_val, to_front, false); server_binary_ = find_binary (server_working_dir_, "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 818163d8b6ebcd730b13468aee96e141caa92475 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Dec 9 18:48:07 2016 +0100 src/onmainwindow.cpp: remove trailing slash from Mageia/SUSE/Arch sftp-server binary search path. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 2e3450f..fcfd9f1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -507,6 +507,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium binary locations. - src/{onmainwindow,pulsemanager}.cpp: actually *use* what we got back from add_to_path ()... Fixes a few bugs here and there. + - src/onmainwindow.cpp: remove trailing slash from Mageia/SUSE/Arch + sftp-server binary search path. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index db739ba..a3c9b9c 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10201,7 +10201,7 @@ void ONMainWindow::generateEtcFiles() QStringList common_sftp_dirs; common_sftp_dirs << "/usr/lib/openssh" /* Debian and Ubuntu */ << "/usr/libexec/openssh" /* Fedora, CentOS, hopefully also RHEL */ - << "/usr/lib/ssh/" /* Mageia, OpenSUSE, SLE{S,D} < 12 x86, SLE{S,D} 12, Arch */ + << "/usr/lib/ssh" /* Mageia, OpenSUSE, SLE{S,D} < 12 x86, SLE{S,D} 12, Arch */ << "/usr/lib64/ssh" /* SLE{S,D} < 12 x86_64 */ << "/usr/lib/misc" /* Gentoo */ << "/usr/libexec"; /* Slackware, OS X */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4499dc9c4da176696f6f36a9527b6b82aecfdc89 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 10 14:36:07 2016 +0100 src/unixhelper.cpp: use cstdio instead of stdio.h. It's the C++ header and imports functions into the std namespace. --- debian/changelog | 2 ++ src/unixhelper.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3862555..b5a7ff6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -515,6 +515,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium encountered. Also, better don't compare a value from the original path value to itself, but rather to the things we want to add in order to remove duplicates, not remove most of the list of elements to add... + - src/unixhelper.cpp: use cstdio instead of stdio.h. It's the C++ header + and imports functions into the std namespace. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unixhelper.cpp b/src/unixhelper.cpp index 406cdda..98597c1 100644 --- a/src/unixhelper.cpp +++ b/src/unixhelper.cpp @@ -30,7 +30,7 @@ #include <cerrno> #include <vector> #include <cstdlib> -#include <stdio.h> +#include <cstdio> /* For documentation please see 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 201f9ddcc3f70679fb2c6c08d6992ac611cadf17 Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Dec 9 18:49:18 2016 +0100 src/x2goutils.cpp: add debugging output to add_to_path (). --- debian/changelog | 1 + src/x2goutils.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index fcfd9f1..bb51fa2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -509,6 +509,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium from add_to_path ()... Fixes a few bugs here and there. - src/onmainwindow.cpp: remove trailing slash from Mageia/SUSE/Arch sftp-server binary search path. + - src/x2goutils.cpp: add debugging output to add_to_path (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 542ae7e..0a01b62 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -216,6 +216,8 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo QStringList orig_path_list = orig_path.split (":"); + x2goDebug << "path value at beginning: " << orig_path; + /* * Clean up add list. We want to make sure no entry ends in a slash * and skip empty entries. @@ -236,6 +238,8 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo } } + x2goDebug << "tmp_clean_add: " << tmp_clean_add; + /* Nothing to add, really... */ if (tmp_clean_add.isEmpty ()) { return (ret); @@ -262,6 +266,8 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo } } + x2goDebug << "clean_add: " << clean_add; + /* Nothing to add. */ if (clean_add.isEmpty ()) { return (ret); @@ -280,6 +286,10 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo } } + for (std::size_t i = 0; i < found.size (); ++i) { + x2goDebug << "found entry i (" << i << ") in orig_path_list (" << clean_add[i] << "): " << found[i]; + } + if (back) { for (int i = 0; i < clean_add.size (); ++i) { if (!found[i]) { @@ -295,6 +305,8 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo } } + x2goDebug << "return value at end: " << ret; + 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 44bdd1a61ddc60abce8d780d335ce7e39e80120c Author: Mihai Moldovan <ionic@ionic.de> Date: Fri Dec 9 18:51:15 2016 +0100 src/x2goutils.cpp: fix add_to_path (). We want to remove trailing slashes from elements-to-add, not just fetch a trailing slash if encountered. Also, better don't compare a value from the original path value to itself, but rather to the things we want to add in order to remove duplicates, not remove most of the list of elements to add... --- debian/changelog | 5 +++++ src/x2goutils.cpp | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index bb51fa2..3862555 100644 --- a/debian/changelog +++ b/debian/changelog @@ -510,6 +510,11 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: remove trailing slash from Mageia/SUSE/Arch sftp-server binary search path. - src/x2goutils.cpp: add debugging output to add_to_path (). + - src/x2goutils.cpp: fix add_to_path (). We want to remove trailing + slashes from elements-to-add, not just fetch a trailing slash if + encountered. Also, better don't compare a value from the original path + value to itself, but rather to the things we want to add in order to + remove duplicates, not remove most of the list of elements to add... [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 0a01b62..d076c74 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -226,7 +226,8 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo for (int i = 0; i < add.size (); ++i) { if (!(add[i].isEmpty ())) { if (add[i].right (1) == "/") { - QString tmp_elem = add[i].right (1); + QString tmp_elem = add[i]; + tmp_elem.chop (1); if (!(tmp_elem.isEmpty ())) { tmp_clean_add.append (tmp_elem); @@ -254,7 +255,7 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo bool tmp_found = false; for (QStringList::const_iterator cit2 = cit + 1; cit2 != end; ++cit2) { - if (*cit == *cit) { + if (*cit == *cit2) { tmp_found = true; 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 a13b92ccdd456355b2ed10011a0dfbcf9b3ae4fb Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 10 14:38:02 2016 +0100 src/: create new file unix_stdint.h which imports the (u)int*_t types into the std namespace. --- debian/changelog | 2 ++ src/unix_stdint.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/debian/changelog b/debian/changelog index b5a7ff6..b4d3176 100644 --- a/debian/changelog +++ b/debian/changelog @@ -517,6 +517,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium remove duplicates, not remove most of the list of elements to add... - src/unixhelper.cpp: use cstdio instead of stdio.h. It's the C++ header and imports functions into the std namespace. + - src/: create new file unix_stdint.h which imports the (u)int*_t types + into the std namespace. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unix_stdint.h b/src/unix_stdint.h new file mode 100644 index 0000000..633ecec --- /dev/null +++ b/src/unix_stdint.h @@ -0,0 +1,46 @@ +/*************************************************************************** + * Copyright (C) 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 UNIX_STDINT_H +#define UNIX_STDINT_H + +#ifdef Q_OS_UNIX + +#include <stdint.h> + +/* + * We need this ugly hack because the cstdint header is C++11-only + * (or available with extensions we can't portably use) + * and stdint.h won't put these types into the std namespace. + */ +namespace std { + using ::int8_t; + using ::int16_t; + using ::int32_t; + using ::int64_t; + using ::uint8_t; + using ::uint16_t; + using ::uint32_t; + using ::uint64_t; +} + +#endif /* defined (Q_OS_UNIX) */ + + +#endif /* !defined (UNIX_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 cb661f850fa14ec8ed905da70a974fc61d48c846 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 10 14:40:08 2016 +0100 src/pulsemanager.h: use unix_stdint.h on non-Windows-platforms to get std::(u)int*_t types without having to use C++11. --- debian/changelog | 2 ++ src/pulsemanager.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b4d3176..6d452fc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -519,6 +519,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium and imports functions into the std namespace. - src/: create new file unix_stdint.h which imports the (u)int*_t types into the std namespace. + - src/pulsemanager.h: use unix_stdint.h on non-Windows-platforms to get + std::(u)int*_t types without having to use C++11. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.h b/src/pulsemanager.h index 0b1ae3c..0aa5c6a 100644 --- a/src/pulsemanager.h +++ b/src/pulsemanager.h @@ -34,7 +34,7 @@ #ifdef Q_OS_WIN #include "windows_stdint.h" #else /* defined (Q_OS_WIN) */ -#include <cstdint> +#include "unix_stdint.h" #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 51d13bb1db94e850321dbe035381c2eb8159b02f Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 10 14:48:45 2016 +0100 src/pulsemanager.cpp: fix Linux-based code by fixing a really stupid typo ("erange" instead of "errno") and including the cerrno header. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6d452fc..56cc7fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -521,6 +521,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium into the std namespace. - src/pulsemanager.h: use unix_stdint.h on non-Windows-platforms to get std::(u)int*_t types without having to use C++11. + - src/pulsemanager.cpp: fix Linux-based code by fixing a really stupid + typo ("erange" instead of "errno") and including the cerrno header. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 8b2e736..6e8df01 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -19,6 +19,7 @@ #include <unistd.h> #include <stdlib.h> +#include <cerrno> #include <QSysInfo> #if QT_VERSION >= 0x050000 @@ -163,7 +164,7 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), memset (buf, 0, path_len); ptr = getcwd (buf, path_len); - if ((NULL == ptr) && (ERANGE != erange)) { + if ((NULL == ptr) && (ERANGE != errno)) { int saved_errno = errno; x2goErrorf (17) << "getcwd() failed: " << QString (strerror (saved_errno)); show_RichText_ErrorMsgBox (tr ("getcwd() failed!"), -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 6d186eb04e6a1a31e2de1ff08b76d5d5bbae3a2e Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 10 14:57:17 2016 +0100 src/pulsemanager.cpp: use std::ssize_t for the path length, because it could be -1 and std::size_t is not applicable. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 56cc7fb..8ee1853 100644 --- a/debian/changelog +++ b/debian/changelog @@ -523,6 +523,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium std::(u)int*_t types without having to use C++11. - src/pulsemanager.cpp: fix Linux-based code by fixing a really stupid typo ("erange" instead of "errno") and including the cerrno header. + - src/pulsemanager.cpp: use std::ssize_t for the path length, because it + could be -1 and std::size_t is not applicable. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 6e8df01..1878b60 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -144,7 +144,7 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), 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); + std::ssize_t path_len = pathconf (".", _PC_PATH_MAX); if (-1 == path_len) { path_len = 1024; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 15ff67daba3d61552780e2e58789c8e5cd5c867a Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 10 14:59:09 2016 +0100 src/pulsemanager.cpp: cast the return value of realloc () to char*, as GCC doesn't seem to like reassigning the pointer otherwise. --- debian/changelog | 2 ++ src/pulsemanager.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 8ee1853..3066cfa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -525,6 +525,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium typo ("erange" instead of "errno") and including the cerrno header. - src/pulsemanager.cpp: use std::ssize_t for the path length, because it could be -1 and std::size_t is not applicable. + - src/pulsemanager.cpp: cast the return value of realloc () to char*, as + GCC doesn't seem to like reassigning the pointer otherwise. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/pulsemanager.cpp b/src/pulsemanager.cpp index 1878b60..203ab29 100644 --- a/src/pulsemanager.cpp +++ b/src/pulsemanager.cpp @@ -153,7 +153,7 @@ PulseManager::PulseManager () : app_dir_ (QApplication::applicationDirPath ()), char *buf, *ptr; for (buf = ptr = NULL; ptr == NULL; path_len += 20) { - if (NULL == (buf = realloc (buf, path_len))) { + if (NULL == (buf = static_cast<char *> (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 (), -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 856b009f0cae4551644d1ba16a30dbc78b163e76 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 10 15:11:36 2016 +0100 src/unix_stdint.h: use same hack to import ssize_t into std namespace. --- debian/changelog | 1 + src/unix_stdint.h | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 3066cfa..d175389 100644 --- a/debian/changelog +++ b/debian/changelog @@ -527,6 +527,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium could be -1 and std::size_t is not applicable. - src/pulsemanager.cpp: cast the return value of realloc () to char*, as GCC doesn't seem to like reassigning the pointer otherwise. + - src/unix_stdint.h: use same hack to import ssize_t into std namespace. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/unix_stdint.h b/src/unix_stdint.h index 633ecec..db59edf 100644 --- a/src/unix_stdint.h +++ b/src/unix_stdint.h @@ -40,6 +40,11 @@ namespace std { using ::uint64_t; } +/* Same issue with unistd's ssize_t type. */ +namespace std { + using ::ssize_t; +} + #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 882adda9506dd97cd5809c98ebe328de4b0a2502 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 15 09:29:40 2016 +0100 src/onmainwindow.{cpp,h}: remove left-over parec references and code. --- debian/changelog | 1 + src/onmainwindow.cpp | 41 +---------------------------------------- src/onmainwindow.h | 3 --- 3 files changed, 2 insertions(+), 43 deletions(-) diff --git a/debian/changelog b/debian/changelog index d175389..19e131c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -528,6 +528,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: cast the return value of realloc () to char*, as GCC doesn't seem to like reassigning the pointer otherwise. - src/unix_stdint.h: use same hack to import ssize_t into std namespace. + - src/onmainwindow.{cpp,h}: remove left-over parec references and code. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index a3c9b9c..7e0b714 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5369,7 +5369,6 @@ void ONMainWindow::slotRetResumeSess ( bool result, "/.pulse-cookie"; sshConnection->copyFile(cooFile, destFile, this, SLOT ( slotPCookieReady ( bool, QString,int ))); - parecTunnelOk=true; #endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ } } @@ -5405,18 +5404,10 @@ void ONMainWindow::slotRetResumeSess ( bool result, #endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ if ( sshSndTunnel ) { - const char* okSlot=0; -#ifdef Q_OS_WIN /* FIXME: Do we need explicit parec support in PulseManager? */ - if ( sndSystem==PULSE ) - { - parecTunnelOk=false; - okSlot=SLOT ( slotSndTunOk() ); - } -#endif sndTunnel=sshConnection->startTunnel ( "localhost", resumingSession.sndPort.toInt(),"127.0.0.1", - sndPort.toInt(),true,this,okSlot, SLOT ( + sndPort.toInt(),true,this,NULL, SLOT ( slotSndTunnelFailed ( bool, QString, int ) )); @@ -12231,43 +12222,13 @@ void ONMainWindow::printSshDError_noAuthorizedKeysFile() QMessageBox::Ok,QMessageBox::NoButton ); } -#ifdef Q_OS_WIN -void ONMainWindow::slotStartParec () -{ - - if ( !parecTunnelOk ) - { -// wait 1 sec and try again - QTimer::singleShot ( 1000, this, SLOT ( slotStartParec() ) ); - return; - } - QString passwd=getCurrentPass(); - QString user=getCurrentUname(); - QString host=resumingSession.server; - QString scmd="PULSE_CLIENTCONFIG=\"${HOME}/.x2go/C-"+ - resumingSession.sessionId+ - "/.pulse-client.conf\" "+ - "parec 1> /dev/null & sleep 1 && kill %1"; -} -#endif - -void ONMainWindow::slotSndTunOk() -{ - parecTunnelOk=true; -} - void ONMainWindow::slotPCookieReady ( bool result, QString , int ) { -#ifdef Q_OS_WIN - if ( result ) - slotStartParec(); -#else /* Silence warning. */ UNUSED (result); -#endif /* defined (Q_OS_WIN) */ } diff --git a/src/onmainwindow.h b/src/onmainwindow.h index e0f9d56..b23245c 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -777,7 +777,6 @@ private: bool runStartApp; bool ldapOnly; bool isScDaemonOk; - bool parecTunnelOk; #ifdef Q_OS_LINUX bool directRDP; #endif @@ -991,7 +990,6 @@ private slots: void startWinServers(key_types key_type = RSA_KEY_TYPE); void slotCheckXOrgLog(); void slotCheckXOrgConnection(); - void slotStartParec (); #endif #if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) @@ -1128,7 +1126,6 @@ private slots: void slotAttachProxyWindow(); void slotEmbedIntoParentWindow(); void slotEmbedWindow(); - void slotSndTunOk(); void slotPCookieReady ( bool result,QString output, int proc ); void slotEmbedToolBar(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c1b1a67e11687baef8fb0f072cd88d4e2c78f67d Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Dec 15 09:44:17 2016 +0100 src/onmainwindow.cpp: convert piece of code to non-Windows and non-Darwin, so that not only Linux but other operating systems are covered as well. --- debian/changelog | 3 +++ src/onmainwindow.cpp | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 19e131c..bfda58f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -529,6 +529,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium GCC doesn't seem to like reassigning the pointer otherwise. - src/unix_stdint.h: use same hack to import ssize_t into std namespace. - src/onmainwindow.{cpp,h}: remove left-over parec references and code. + - src/onmainwindow.cpp: convert piece of code to non-Windows and + non-Darwin, so that not only Linux but other operating systems are + covered as well. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 7e0b714..803c529 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5374,10 +5374,10 @@ void ONMainWindow::slotRetResumeSess ( bool result, } if ( sndSystem==ESD ) { -#ifdef Q_OS_LINUX +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) sshConnection->copyFile(homeDir+"/.esd_auth", "$HOME/.esd_auth" ); -#else /* defined (Q_OS_LINUX) */ +#else /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir ().absolutePath () + "/.esd_auth").absolutePath ()); QString destFile="$HOME/.esd_auth"; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9c61957c40851a45dc7729ac3c74f8fc6ffcd9b5 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 31 01:38:10 2016 +0100 src/mediawidget.cpp: unify some redundant code. --- debian/changelog | 1 + src/mediawidget.cpp | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index bfda58f..64067d4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -532,6 +532,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.cpp: convert piece of code to non-Windows and non-Darwin, so that not only Linux but other operating systems are covered as well. + - src/mediawidget.cpp: unify some redundant code. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/mediawidget.cpp b/src/mediawidget.cpp index c937ba4..16d837a 100644 --- a/src/mediawidget.cpp +++ b/src/mediawidget.cpp @@ -155,16 +155,13 @@ void MediaWidget::slot_sndSysSelected ( int system ) } case ESD: { + rbStartSnd->hide (); + rbNotStartSnd->hide (); + cbSndSshTun->show (); #ifdef Q_OS_WIN - rbStartSnd->hide(); - rbNotStartSnd->hide(); - cbSndSshTun->show(); cbSndSshTun->setEnabled ( false ); cbSndSshTun->setChecked ( true ); #elif defined (Q_OS_DARWIN) - rbStartSnd->hide (); - rbNotStartSnd->hide (); - cbSndSshTun->show (); cbSndSshTun->setEnabled (true); #endif /* defined (Q_OS_WIN) */ sbSndPort->setValue ( 16001 ); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8a5e3e5643b7002d703685005d1eeb02339376af Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 31 01:41:02 2016 +0100 src/mediawidget.cpp: simplify expression. --- debian/changelog | 1 + src/mediawidget.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 64067d4..7f4e8ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -533,6 +533,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium non-Darwin, so that not only Linux but other operating systems are covered as well. - src/mediawidget.cpp: unify some redundant code. + - src/mediawidget.cpp: simplify expression. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/mediawidget.cpp b/src/mediawidget.cpp index 16d837a..15971d6 100644 --- a/src/mediawidget.cpp +++ b/src/mediawidget.cpp @@ -210,7 +210,7 @@ void MediaWidget::slot_sndStartClicked() { lSndPort->setEnabled ( true ); sbSndPort->setEnabled ( true ); - cbDefSndPort->setEnabled ( true &&sound->isChecked()); + cbDefSndPort->setEnabled (sound->isChecked()); } 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 66489408f1943e6d349092f95e2b96bed38c95a4 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 31 01:41:54 2016 +0100 src/mediawidget.cpp: add deprecation warning for ARTS. --- debian/changelog | 1 + src/mediawidget.cpp | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7f4e8ed..b5be90d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -534,6 +534,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium covered as well. - src/mediawidget.cpp: unify some redundant code. - src/mediawidget.cpp: simplify expression. + - src/mediawidget.cpp: add deprecation warning for ARTS. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/mediawidget.cpp b/src/mediawidget.cpp index 15971d6..57f5b84 100644 --- a/src/mediawidget.cpp +++ b/src/mediawidget.cpp @@ -151,6 +151,11 @@ void MediaWidget::slot_sndSysSelected ( int system ) cbDefSndPort->setChecked ( false ); cbDefSndPort->setEnabled ( false ); sbSndPort->setValue ( 20221 ); + QMessageBox::warning (NULL, tr ("Deprecation Warning"), + tr ("ARTS support is scheduled to be removed soon.\n\n" + + "Please upgrade to PulseAudio."), + QMessageBox::Ok, QMessageBox::NoButton); break; } case 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 34e372ff35e7f99682ebf170980f3c753876b791 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Dec 31 01:43:45 2016 +0100 src/mediawidget.cpp: add deprecation warning for ESounD. --- debian/changelog | 1 + src/mediawidget.cpp | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index b5be90d..544fbc2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -535,6 +535,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/mediawidget.cpp: unify some redundant code. - src/mediawidget.cpp: simplify expression. - src/mediawidget.cpp: add deprecation warning for ARTS. + - src/mediawidget.cpp: add deprecation warning for ESounD. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/mediawidget.cpp b/src/mediawidget.cpp index 57f5b84..d5d1b37 100644 --- a/src/mediawidget.cpp +++ b/src/mediawidget.cpp @@ -169,6 +169,14 @@ void MediaWidget::slot_sndSysSelected ( int system ) #elif defined (Q_OS_DARWIN) cbSndSshTun->setEnabled (true); #endif /* defined (Q_OS_WIN) */ + +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) + QMessageBox::warning (NULL, tr ("Deprecation Warning"), + tr ("ESounD support is scheduled to be removed soon.\n\n" + + "Please upgrade to PulseAudio."), + QMessageBox::Ok, QMessageBox::NoButton); +#endif sbSndPort->setValue ( 16001 ); break; } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git