This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch bugfix/osx in repository x2goclient. discards 1f77873 src/x2goutils.cpp: fix add_to_path (). discards c2dd19a src/x2goutils.cpp: add debugging output to add_to_path (). discards 99d1ac6 src/onmainwindow.cpp: remove trailing slash from Mageia/SUSE/Arch sftp-server binary search path. discards 6c1c6eb src/{onmainwindow,pulsemanager}.cpp: actually *use* what we got back from add_to_path ()... discards 3e0a07f src/onmainwindow.cpp: stop duplicating the list of known sftp-server binary locations. discards 7d15adb src/onmainwindow.cpp: move generateEtcFiles () call to startSshd (). discards 582c00a src/pulsemanager.cpp: fix PA binary searching logic. discards 6907623 src/onmainwindow.cpp: fix sshd_config generation on UNIX by searching for the real sftp-server binary path. discards 69f58e2 src/pulsemanager.cpp: refactor PA binary searching code. discards 80ae90f src/x2goutils.{cpp,h}: make find_binary () and add_to_path () available on all UNIX-based operating systems. discards 76d422d src/onmainwindow.cpp: use QFileInfo to get the key file's basename in exportDirs () instead of the old, potentially faulty string replace dance. discards 88d2394 src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in generateKey (). discards 8d9d6db src/onmainwindow.h: actually, we do need startSshd () to be public. Move it back. discards 13f6832 src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. discards d988a25 src/onmainwindow.{cpp,h}: don't try to initialize non-static ssh_key_type_ member variable directly, but in the constructor. discards 540e813 src/onmainwindow.h: remove WWrapper definition, seems to be unused. discards c843402 src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. discards 21609ca src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. discards 9f66fa0 src/onmainwindow.cpp: add and use key_types parameter to startWinServers (). discards 8d1fc7f src/onmainwindow.cpp: pass key_type parameter to startSshd () in createKeyBundle (). discards 6b07329 src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call in WinServerStarter::run (). discards 58a4964 src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). discards b1d8319 src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. discards c9b2590 src/onmainwindow.{cpp,h}: make startSshd () private. discards 3ebafa3 src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). discards d7ce9fa src/onmainwindow.cpp: add comment to last all-in listening check in startSshd (). discards 28f1874 src/onmainwindow.cpp: move QProcess startup check in startSshd () to non-Windows code section and add a listening socket check loop. discards ac07522 macbuild.sh: switch to bundling PA 9.0. discards dba0e4a src/onmainwindow.{cpp,h}: rename createRSAKey () to the more-appropriate name createKeyBundle (). discards f4743c8 src/onmainwindow.cpp: add some comments only to createRSAKey (). discards f50892c src/onmainwindow.cpp: let startSshd () act as a wrapper and be called multiple times. discards 8ae02d4 src/onmainwindow.{cpp,h}: reformat createRSAKey () only. discards 4f140be src/onmainwindow.{cpp,h}: move createRSAKey () around. discards 07fe44f src/onmainwindow.{cpp,h}: reformat generateKey () only. discards 2e77d1a src/onmainwindow.h: move generateKey () declaration around. discards 5950e49 src/onmainwindow.cpp: use the new functions in generateKey (). discards 65a6d0b src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). discards 9fcbc90 src/onmainwindow.{cpp,h}: add new function key_type_to_string (). discards 8634fab src/onmainwindow.{cpp,h}: add new function check_key_type (). discards d6af8b1 src/onmainwindow.cpp: terminate sshd more correctly. discards ba36025 src/onmainwindow.cpp: uppercase key type in debug output and comment string in generateKey (). discards 5d97c1c src/onmainwindow.cpp: when starting sshd on Unix-based plattforms, raise maximum startup time to 5 seconds and break out early, if the process went into running state earlier. discards 1a03e60 src/{onmainwindow.{cpp,h},configdialog.cpp}: remove userSshd variable and code related to non-user-mode-sshd setups. discards 198d2a2 src/onmainwindow.cpp: fix up a few debug strings. discards 51743a4 src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. discards e7a25be src/onmainwindow.{cpp,h}: rewrite generateKey () function to actually also generate user keys. discards 6f850ff src/onmainwindow.cpp: refactor generateKey () a little bit to compact it. discards 83a1834 src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () and add a boolean parameter with a default of false to request a public key. discards a19169d src/onmainwindow.cpp: add support for explicitly setting the private key bit size based on type and use values (currently) regarded as secure to generateHostKey (). discards 0743219 src/onmainwindow.cpp: document createRSAKey () because what it does is completely non-obvious. discards 0ffaac8 src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. discards f93863a src/unixhelper.cpp: code cleanup. discards cf405a7 src/pulsemanager.cpp: remove unused variables. discards 8d78f15 src/unixhelper.{cpp,h}: rewrite kill_pgroup () to act as a wrapper around real_kill_pgroup (). discards 09073eb src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () into a new function called real_kill_pgroup (). discards 452f902 src/unixhelper.h: style and general fixes within comments. discards d52cd15 src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. discards e665df5 src/pulsemanager.cpp: fix PA version fetching on OS X again. discards bce2e25 src/pulsemanager.cpp: make sure that wherever we interface with non-Qt functions, paths are in native form (i.e., containing empty separators, instead of the "generic" slash UNIX-style separator.) discards b060ae9 src/pulsemanager.cpp: make PA version parsing function more generic and don't expect that a number is always terminated with a period or dash. discards 26591ec src/pulsemanager.h: include accidentally omitted wapi.h header file. discards fd9956d src/onmainwindow.cpp: use correct C++ universal initializer for initializing in_addr-type variable, the C-style universal zero initializer won't cut it here. discards 745c43f src/onmainwindow.cpp: fix compile error on Windows after moving some code around. discards bc42bbd src/onmainwindow.cpp: add another pair of braces to in_addr-type variable initialization on Windows to silence compiler warning. discards 8995f24 src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable initialization in Windows-only code. discards eff0185 src/onmainwindow.cpp: drop obsolete pulseVersionTest variable initialization in Windows-only code. discards a905c66 src/onmainwindow.cpp: short out code parts unconditionally checking for the userSshd variable. discards db57937 src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint otherwise. discards 62e5f74 src/: new file windows_stdint.h for Windows-compatibility when using std::(u)int*_t types. discards 09fef55 nsis/x2goclient.nsi: add startup.wav to installer package. discards 4425447 src/x2goutils.cpp: add some debug logging to find_binary (). discards 3a2b712 src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the given path to CWD iff it's actually empty. Not the other way around. discards aff320b src/pulsemanager.cpp: remove extraneous newlines from debug output. discards 06e2b08 src/pulsemanager.cpp: add warning message boxes where appropriate. discards 2160cba src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. discards 14d2cf0 src/pulsemanager.cpp: fix startup when using the system-PA version. discards a3eef0e src/pulsemanager.cpp: fix compile error on Windows. discards c2d0c7f debian/changelog: fix typo in function name. discards 7ca5522 src/x2goutils.h: fix compile error due to typo. discards 7c14ca3 src/pulsemanager.cpp: add error message boxes throughout PulseManager. discards 7c04060 src/x2goutils.{cpp,h}: add application modality parameter to show_RichText_Generic_MsgBox () and its wrappers. discards 7b448d0 src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. discards 4df5514 src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. discards e99c477 src/x2goutils.cpp: fix compile error. discards e8b73a1 src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). discards 445046a src/pulsemanager.cpp: add comments to Qt 4 code part. discards b4c08f5 src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. discards 8f1257f src/x2goutils.{cpp,h}: add new function find_binary (). discards 0957842 src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. discards 142d1e8 src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables into environment as used by PulseManager. discards 82a10f8 src/pulsemanager.cpp: don't insert stray newline into config.pa. discards 5e395fb src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. discards 8823e11 src/pulsemanager.{cpp,h}: rename on_pulse_finished () to slot_on_pulse_finished (). discards 13c0e2d src/pulsemanager.cpp: don't overwrite the temporary string variable for the current line with what was supposed to hold new data in fetch_pulseaudio_version (). discards 0844739 src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). discards 557d115 macbuild.sh: save return value of parse_otool_output (). discards 2c1c5ed macbuild.sh: don't error out while executing parse_otool_output (). discards a145e81 macbuild.sh: also add PA binaries to deduplication fixup list. discards 2081035 macbuild.sh: fix copying of resource files. discards 3df2544 res: rename "sound" to "audio". discards 0f2cc9f macbuild.sh: add support for copying resource files. discards 770d950 src/pulsemanager.cpp: don't time out while trying to start PA or paplay. discards 218b721 res/sound: add startup.wav sound to be played back when starting the PA daemon in debug mode. discards d250d3e src/pulsemanager.h: fix compile error due to mismatching function declaration for set_debug (). discards 275922e src/onmainwindow.cpp: port to new debugging feature of PulseManager. discards dbcd77a src/pulsemanager.{cpp,h}: port to new debugging feature. discards b24ee88 src/pulsemanager.{cpp,h}: add debugging setter and private variable. discards e162d32 src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. discards 491ddad src/pulsemanager.cpp: fix compile error due to typo. discards 4204765 src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. discards 466594b src/onmainwindow.cpp: convert QDir object to QString for further processing. discards 37dd92d src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. discards 1f9ccfe src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. discards 5e200e3 src/onmainwindow.cpp: fix compile errors due to misspelled function names. discards 5ad0560 src/configdialog.cpp: fix compile error by removing obsolete (and now faulty) line for removed restart message. discards 2d83e15 src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly to stdout. discards dadd922 src/pulsemanager.h: move x2gologdebug.h inclusion into implementation file. discards 0b0f3dd src/mediawidget.cpp: reflect new capabilities through PulseManager. discards a32068d src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. discards 90f999b src/configdialog.cpp: whitespace only. discards dd9a04f src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) discards 9e6405d src/pulsemanager.cpp: backport fix for 422. discards d475eab src/pulsemanager.cpp: backport fix for 526. discards 1f7a7e5 src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) discards 4fe9215 src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. discards 1ad19cf src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the (OS-dependent) PulseAudio config and cookie directory. discards ecd4d31 pulsemanager.cpp: remove config.pa while doing post-exit cleanups. discards 061fc07 macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". discards 2d83ce9 macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. discards 718a34e pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. discards f6791d2 pulsemanager.cpp: use record and playback member variables. discards 5f8adce pulsemanager.h: more moving around. discards b4908ab pulsemanager.cpp: fix compile error in startup sound function. discards 520ba30 pulsemanager.cpp: reorder member variables in initializer list. discards 18aec60 pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. discards 24a2e27 pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is not currently running. discards b3fd942 pulsemanager.cpp: add algorithm for actually extracting PA version number. discards 9c3cfc5 pulsemanager.h: reformat a bit by adding newlines and moving lines in a (hopefully) logical fashion. discards bf1d6b3 pulsemanager.{cpp,h}: some older PA versions used the major, minor and micro numbering scheme together with a descriptive string. discards 1734146 pulsemanager.cpp: fix some error messages by removing redundant newlines. discards 2ca5063 pulsemanager.cpp: re-initialize buffer string on each run while getting CWD on Linux. discards da58773 pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () with first skeleton. discards 91cebd4 pulsemanager.cpp: generate platform-dependent values for member variables server_working_dir_ and server_binary_ in constructor. discards 38c1962 pulsemanager.cpp: add "dummy" start_linux () function. discards b9f7781 pulsemanager.cpp: reorder member variables in initialization list. discards efe3919 pulsemanager.cpp: another typo fix: findPort -> find_port. discards abaee6d pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). discards 9670689 pulsemanager.cpp: fix compile errors in find_port () by renaming the ret or port variable to search_port. discards 4e542e7 pulsemanager.{cpp,h}: find_port () actually returns a value, fix declaration accordingly. discards 311d3b1 pulsemanager.cpp: typo fix in member variable name server_working_dir_. discards a2c30c6 pulsemanager.h: whitespace only. discards c37e419 pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. discards 00fc298 pulsemanager.cpp: only play startup sound if DEBUG macro is defined. discards d055cad pulsemanager.cpp: make generate_client_config () Windows-compatible. discards 562a526 pulsemanager.cpp: make generate_server_config () Windows-compatible. discards 0501d80 pulsemanager.cpp: also load module-esound-protocol-tcp module. discards 392c626 pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. discards c6ba017 pulsemanager.cpp: let start_osx () use start_generic (). discards 95605ef pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. discards 300c0d8 pulsemanager.cpp: add Windows stuff to initial env in constructor. discards 0d489c9 pulsemanager.cpp: add cleanup support to on_pulse_finished (). discards f9595ca pulsemanager.cpp: add Windows support to shutdown (). discards 6e3ef4f pulsemanager.{cpp,h}: new function create_client_dir (). discards 5baed0b pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. discards a83c5fa pulsemanager.{cpp,h}: add server_args_, server_binary_ and server_working_dir_ class variables. discards 616d25c pulsemanager.{cpp,h}: fixup preprocessor usage. discards 85ba63c pulsemanager.cpp: reformat only. discards 03ae3ef pulsemanager.{cpp,h}: rename relaunch () to restart (). discards ab7b8df pulsemanager.{cpp,h}: add ESD support. discards 60f6177 pulsemanager.h: add std:: namespace selector for uint32_t version variables. discards 7b5de3d pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. discards 84182dd pulsemanager.cpp: reformat only. discards 35e239b pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. discards c7ece0b pulsemanager.cpp: use initializer list for constructor. discards 51bf43a pulsemanager.{cpp,h}: reformat only. discards d84b717 pulsemanager.cpp: minor non-behavior changing fixes. discards e66e439 pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. discards c9abccd macbuild.sh: rewrite ID line detection algorithm. discards c4e2264 macbuild.sh: copy "special" files, so that they can be removed later on. discards b786ac5 macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. discards 34f28b2 macbuild.sh: more debug messages and a whitespace change. discards a66475d macbuild.sh: spelling fix. discards 2e9018f macbuild.sh: merge deduplicate.sh content in. discards c90871e deduplicate.sh: replace tabs with two spaces. No functional changes. discards 7379e5c macbuild.sh: replace tabs with two spaces. No functional changes. discards b478c0a deduplicate.sh: remove some noisy debug output. discards f8409eb deduplicate.sh: add WARNING to status message. discards bf97b01 deduplicate.sh: fix wrong return value capture. discards e35da59 deduplicate.sh: remove a bit of noisy debug output, but turn on parse_otool_output debugging. discards e9c24c8 deduplicate.sh: cleanup as announced in the last commit - using lazy_canonical_path. discards 6d54016 deduplicate.sh: surprisingly, it turned out that only checking the duplicate's basename against the current dependency's basename is not good enough. discards cf33355 deduplicate.sh: more temporary debugging output in fixup section. discards 0382d7b deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. discards a2201e5 deduplicate.sh: save dependency format base string as a readonly variable and use that instead of repeating a fixed string. discards ea47a12 deduplicate.sh: actually include file name in install_name_tool pseudo output. discards 397d580 deduplicate.sh: parse_otool_output: jump over first matching entry, which is - hopefully - the id line. discards 4eef623 deduplicate.sh: unstub fixup section. discards c92ad68 deduplicate.sh: add more useful information in fixup section's error message. discards 203692f deduplicate.sh: switch to range-based for loop in fixup section for duplicate array walking as we need to access the same element index in the replacement array. discards 7f9518e deduplicate.sh: prevent word splitting when parsing otool's output. discards 8dccd33 deduplicate.sh: debug parse_otool_output fiercely for the time being. discards 944ecef deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. discards 4f8ef40 deduplicate.sh: change exit to return in parse_otool_output. discards 03a21de deduplicate.sh: fix parse_otool_output: we want to return failure only iff any of the strings are present in otool's output and actually handle the failure string *ARRAY* correctly as that. discards b53bbe8 deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word splitting. discards 0bbe20a deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle "sparse" arrays correctly. discards 0beb8f3 deduplicate.sh: correctly unset an array element. discards 2e678ca deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. discards 4509f9e deduplicate.sh: non-functional: change WARNING to ERROR in error messages. discards 3cde4ad deduplicate.sh: new function for parsing otool's output and printing library dependencies if no error occurred. discards 991fb8b deduplicate.sh: add missed local variable declaration. discards 12a048f deduplicate.sh: add duplicates-to-real mapping. discards 1f4609b deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. discards 96c188c macbuild.sh: also install libraries into staging area with intermediate library path. discards 5e92088 macbuild.sh: fix echo call to also show the intermediate lib dir, not just the library file name. discards c584f1b macbuild.sh: when actually bundling libraries, use @executable_path instead of @loader_path. discards 3964e2e macbuild.sh: add the correct file path to the library bundling array. discards 67b9a50 macbuild.sh: check current file name against regex, not a (now) full path. discards 63a2b7a macbuild.sh: use while-read-loop and find to actually recurse through directories. discards 155d804 macbuild.sh: remove libpulse and libpulsecore from libraries to be bundled, as something else will bundle them anyway. discards 21843e8 macbuild.sh: add some more debugging output. discards 848da9a macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. discards c061146 macbuild.sh: add Linux library file name scheme regex as a precaution. discards 45aade3 macbuild.sh: add work-in-progress PulseAudio bundling. discards e64f2ca macbuild.sh: add phase output for bundling nxproxy. discards 850339b macbuild.sh: copy PulseAudio libraries and binaries. discards 5cf57ef macbuild.sh: define PulseAudio libraries and binaries to be later copied. discards 92669a0 macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. discards b34c4be macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. discards 402dddf macbuild.sh: add new repeat_str() helper function. discards 022c1b3 macbuild.sh: add new get_nesting_level() helper function. discards bc816f1 macbuild.sh: add new lazy_canonical_path() helper function. discards 8c5236b macbuild.sh: add new dependency_error() helper function. discards 518d973 macbuild.sh: add new MACPORTS_PREFIX detection/variable. discards e52da11 x2goclient.pro{maemo}: reference new pulsemanager.{cpp,h} files. discards 59df0d6 pulsemanager.{cpp,h}: new class for PulseAudio management. discards 2778e19 compat.h: include QtCore/qglobal.h for Q_OS_... macros. discards b387a7f compat.{cpp,h}: remove inline keyword, because function is not defined in header file. discards f189d3e compat.{cpp,h}: new files. Implements strndup on OS X 10.6 and below. Add to x2goclient.cpp, x2goclient.pro and x2goclient.pro.maemo. discards 3dbd27e onmainwindow.cpp: correctly use ~/.x2go/.ssh as ssh directory when starting sshd in user mode. discards c958dd9 appdialog.cpp: initialize parent in default case. Another GCC compile warning fix. discards d67815e {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile warnings with GCC. Fix a few whitespace issues. discards 5dc5188 x2goclient.cpp: fix failing exec() call for the UNIX helper utility: correctly terminate arguments vector. discards 7aed6a5 unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and SIGUSR2. discards 140f9c4 {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to parent PID polling. discards fa2386e unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period to 10 seconds. discards da9cef8 x2goclient.cpp: create new argv array on the heap instead of on the stack. discards 1f23c5d x2goclient.cpp: fix string comparison. discards bff78a5 x2goclient.cpp: fix compile problems introduced with the last commit. discards 70a0f26 x2goclient.cpp: don't start the UNIX cleanup helper process right after forking. discards 4bf8d95 x2goclient.cpp: clean up. discards 9c8496c unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. discards d442044 unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. discards 1253b51 unixhelper.cpp: kill process group on error. discards 3d111f3 x2goclient.cpp: return return value of unixhelper::unix_cleanup(). discards 097bd6f unixhelper.{cpp,h}: add documentation/comments. discards 254dd48 unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. discards 6ad5812 unixhelper.h: forgot to declare type of unix_cleanup() function. discards 97e0119 unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. discards 7ef7537 x2goclient.cpp: fix std::edit -> std::exit typo. discards 17e2502 x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. discards 9e5c12a x2goclient.cpp: add myself to copyright header. discards 3f9a062 x2goclient.cpp: use setsid() on UNIX to become session and process group leader. discards 548bb3d x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup helper. discards d55fd54 x2goclient.cpp: wrap X2Go Client main function and use that. discards ca9419d unixhelper.{cpp,h}: implement cleanup program for process group. discards fb1b709 {unixhelper.{cpp,h},x2goclient.pro{maemo}}: add unixhelper stub. adds a518050 Fix SSHFS on Windows client. adds 08a070b debian/changelog: fixup latest entry and add closure for #1105. adds 9494117 src/sharewidget.cpp: fix compile on UNIX-like platforms by defaulting to ISO-8859-1 not just on Linux but also other platforms. Fixes:#1124. new 5e76081 {unixhelper.{cpp,h},x2goclient.pro{maemo}}: add unixhelper stub. new 9589522 unixhelper.{cpp,h}: implement cleanup program for process group. new 70e4f2d x2goclient.cpp: wrap X2Go Client main function and use that. new d5816aa x2goclient.cpp: add fork_helper() function to start up the UNIX cleanup helper. new 8da9830 x2goclient.cpp: use setsid() on UNIX to become session and process group leader. new f582858 x2goclient.cpp: add myself to copyright header. new 19c7f03 x2goclient.cpp: add legacy <sys/types.h> header needed for old operating systems. new a0eefcb x2goclient.cpp: fix std::edit -> std::exit typo. new 713c26e unixhelper.{h,cpp}: also include <QtCore/qglobal.h> to have Q_OS_UNIX defined on UNIX-based platforms. Move guards around. new 2c69549 unixhelper.h: forgot to declare type of unix_cleanup() function. new f3002fb unixhelper.{cpp,h},x2goclient.cpp}: unixhelper should really be a (module) namespace, not a class. new 1a89afd unixhelper.{cpp,h}: add documentation/comments. new 0599ea7 x2goclient.cpp: return return value of unixhelper::unix_cleanup(). new d54b0ab unixhelper.cpp: kill process group on error. new bd1c090 unixhelper.{cpp,h}: implement signal unblocking in unixhelper::unix_cleanup(). Update documentation. new c8df8a7 unixhelper.cpp: port from std::signal() to sigaction(). Handle errors. new c867460 x2goclient.cpp: clean up. new f6c5d4e x2goclient.cpp: don't start the UNIX cleanup helper process right after forking. new 8dbcbfd x2goclient.cpp: fix compile problems introduced with the last commit. new bb6fc2d x2goclient.cpp: fix string comparison. new 5020e3a x2goclient.cpp: create new argv array on the heap instead of on the stack. new ecac70c unixhelper.{cpp,h}: raise sleeping time to two seconds and grace period to 10 seconds. new 4cdd373 {unixhelper.{cpp,h},x2goclient.cpp}: switch main cleanup handling to parent PID polling. new ac971ee unixhelper.{cpp,h}: ignore SIGINT, SIGTERM, SIGPIPE, SIGQUIT, SIGUSR1 and SIGUSR2. new e772b6c x2goclient.cpp: fix failing exec() call for the UNIX helper utility: correctly terminate arguments vector. new 69f98ef {appdialog,configwidget,onmainwindow,unixhelper}.cpp: fix some compile warnings with GCC. Fix a few whitespace issues. new a9bc183 appdialog.cpp: initialize parent in default case. Another GCC compile warning fix. new faa9219 onmainwindow.cpp: correctly use ~/.x2go/.ssh as ssh directory when starting sshd in user mode. new 8be2651 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 aff64ea compat.{cpp,h}: remove inline keyword, because function is not defined in header file. new 59732b9 compat.h: include QtCore/qglobal.h for Q_OS_... macros. new 4db535f pulsemanager.{cpp,h}: new class for PulseAudio management. new 08f0492 x2goclient.pro{maemo}: reference new pulsemanager.{cpp,h} files. new 5035ecd macbuild.sh: add new MACPORTS_PREFIX detection/variable. new 4fa6d60 macbuild.sh: add new dependency_error() helper function. new 02895d1 macbuild.sh: add new lazy_canonical_path() helper function. new 37984f1 macbuild.sh: add new get_nesting_level() helper function. new 595b2ee macbuild.sh: add new repeat_str() helper function. new e42a8a9 macbuild.sh: refactor nxproxy detection to use MACPORTS_PREFIX. new fdb885b macbuild.sh: add EXE_DIR and FRAMEWORKS_DIR internal variables. new d7493b7 macbuild.sh: define PulseAudio libraries and binaries to be later copied. new e54ace9 macbuild.sh: copy PulseAudio libraries and binaries. new cc1bb70 macbuild.sh: add phase output for bundling nxproxy. new e9d32f9 macbuild.sh: add work-in-progress PulseAudio bundling. new 2f90e34 macbuild.sh: add Linux library file name scheme regex as a precaution. new 701c69e macbuild.sh: directories are "executable", so the first check must explicitly include a check for the argument being not a directory. new 38c9269 macbuild.sh: add some more debugging output. new fcc56f5 macbuild.sh: remove libpulse and libpulsecore from libraries to be bundled, as something else will bundle them anyway. new b56e0f6 macbuild.sh: use while-read-loop and find to actually recurse through directories. new b18c7e1 macbuild.sh: check current file name against regex, not a (now) full path. new ebcb1c1 macbuild.sh: add the correct file path to the library bundling array. new 94a000f macbuild.sh: when actually bundling libraries, use @executable_path instead of @loader_path. new 0c9280f macbuild.sh: fix echo call to also show the intermediate lib dir, not just the library file name. new 328c6fe macbuild.sh: also install libraries into staging area with intermediate library path. new 3ebee8e deduplicate.sh: add new, more or less Proof of Concept, and Work in Progress file deduplication script. new 8ad5863 deduplicate.sh: add duplicates-to-real mapping. new a69c491 deduplicate.sh: add missed local variable declaration. new 1615077 deduplicate.sh: new function for parsing otool's output and printing library dependencies if no error occurred. new b737708 deduplicate.sh: non-functional: change WARNING to ERROR in error messages. new 986a9d1 deduplicate.sh: add first skeleton for library dependency rewriting of deleted duplicates. new 7d53f88 deduplicate.sh: correctly unset an array element. new c71de68 deduplicate.sh: change range-based for loops to "${!arr[@]}" to handle "sparse" arrays correctly. new 36f9e6b deduplicate.sh: quote "${arr[@]}" correctly to not suddenly force word splitting. new bf38ebb 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 f52871d deduplicate.sh: change exit to return in parse_otool_output. new 653f5f3 deduplicate.sh: record crafted "library path" values in duplicates replacement to_files array. new 48d39fa deduplicate.sh: debug parse_otool_output fiercely for the time being. new b1d2a50 deduplicate.sh: prevent word splitting when parsing otool's output. new 693b078 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 5388ff3 deduplicate.sh: add more useful information in fixup section's error message. new cb6eb43 deduplicate.sh: unstub fixup section. new 6b6ea4b deduplicate.sh: parse_otool_output: jump over first matching entry, which is - hopefully - the id line. new 46d2be9 deduplicate.sh: actually include file name in install_name_tool pseudo output. new 4083a84 deduplicate.sh: save dependency format base string as a readonly variable and use that instead of repeating a fixed string. new 7cc69e7 deduplicate.sh: copy lazy_canonical_path from macbuild.sh for now. new 3690312 deduplicate.sh: more temporary debugging output in fixup section. new 4748882 deduplicate.sh: surprisingly, it turned out that only checking the duplicate's basename against the current dependency's basename is not good enough. new 309ea83 deduplicate.sh: cleanup as announced in the last commit - using lazy_canonical_path. new 68ef3e4 deduplicate.sh: remove a bit of noisy debug output, but turn on parse_otool_output debugging. new 47d5613 deduplicate.sh: fix wrong return value capture. new a44eb41 deduplicate.sh: add WARNING to status message. new 71ada42 deduplicate.sh: remove some noisy debug output. new 0f1cfee macbuild.sh: replace tabs with two spaces. No functional changes. new faf6c12 deduplicate.sh: replace tabs with two spaces. No functional changes. new 70c0016 macbuild.sh: merge deduplicate.sh content in. new ec5d117 macbuild.sh: spelling fix. new 6d3fb3e macbuild.sh: more debug messages and a whitespace change. new f4b7031 macbuild.sh: fix removal of base prefix in deduplication if base prefix ends in a slash. new 8b5895d macbuild.sh: copy "special" files, so that they can be removed later on. new 4100167 macbuild.sh: rewrite ID line detection algorithm. new c11e357 pulsemanager.{cpp,h}: use name and underscore for member variables, not underscore and name. new 676c1c3 pulsemanager.cpp: minor non-behavior changing fixes. new b26af07 pulsemanager.{cpp,h}: reformat only. new c65d14a pulsemanager.cpp: use initializer list for constructor. new 428d7a4 pulsemanager.{cpp,h}: add pulse_version_{major,minor}_ member variables. new d91db73 pulsemanager.cpp: reformat only. new 46fb4ef pulsemanager.{cpp,h}: switch port definitions to std::uint16_t. new dfa1be2 pulsemanager.h: add std:: namespace selector for uint32_t version variables. new 9c9853d pulsemanager.{cpp,h}: add ESD support. new d8ef9d5 pulsemanager.{cpp,h}: rename relaunch () to restart (). new d9f6ae4 pulsemanager.cpp: reformat only. new 138d157 pulsemanager.{cpp,h}: fixup preprocessor usage. new 7cacdb2 pulsemanager.{cpp,h}: add server_args_, server_binary_ and server_working_dir_ class variables. new 23c86b2 pulsemanager.cpp: make start () wrap the "real" OS-specific start functions. new b3855f2 pulsemanager.{cpp,h}: new function create_client_dir (). new 4434f24 pulsemanager.cpp: add Windows support to shutdown (). new 8a8c7c7 pulsemanager.cpp: add cleanup support to on_pulse_finished (). new 5734d98 pulsemanager.cpp: add Windows stuff to initial env in constructor. new f594992 pulsemanager.{cpp,h}: add new function start_generic () to split off common functionality. new 06d63d3 pulsemanager.cpp: let start_osx () use start_generic (). new 0094df1 pulsemanager.{cpp,h}: implement start_win () as part of Windows functionality. new 697ec80 pulsemanager.cpp: also load module-esound-protocol-tcp module. new 1e35e2e pulsemanager.cpp: make generate_server_config () Windows-compatible. new 0889b41 pulsemanager.cpp: make generate_client_config () Windows-compatible. new 11684fe pulsemanager.cpp: only play startup sound if DEBUG macro is defined. new ce42dd2 pulsemanager.cpp: make startup sound playing via slot_play_startup_sound () Windows-compatible. new 8baf585 pulsemanager.h: whitespace only. new df5e535 pulsemanager.cpp: typo fix in member variable name server_working_dir_. new d4e7134 pulsemanager.{cpp,h}: find_port () actually returns a value, fix declaration accordingly. new 3abcc27 pulsemanager.cpp: fix compile errors in find_port () by renaming the ret or port variable to search_port. new 526acb5 pulsemanager.cpp: fix another compile error due to typo'd versions of generate_server_config () and generate_client_config (). new 0129527 pulsemanager.cpp: another typo fix: findPort -> find_port. new e195a6b pulsemanager.cpp: reorder member variables in initialization list. new 1d3a16b pulsemanager.cpp: add "dummy" start_linux () function. new 198f4f6 pulsemanager.cpp: generate platform-dependent values for member variables server_working_dir_ and server_binary_ in constructor. new 8c496b1 pulsemanager.{cpp,h}: new member function fetch_pulseaudio_version () with first skeleton. new 1a5bccc pulsemanager.cpp: re-initialize buffer string on each run while getting CWD on Linux. new 02df05b pulsemanager.cpp: fix some error messages by removing redundant newlines. new ec4423f pulsemanager.{cpp,h}: some older PA versions used the major, minor and micro numbering scheme together with a descriptive string. new 2abe780 pulsemanager.h: reformat a bit by adding newlines and moving lines in a (hopefully) logical fashion. new 1c86481 pulsemanager.cpp: add algorithm for actually extracting PA version number. new aa5780a pulsemanager.{cpp,h}: only allow changing PA or ESD ports when server is not currently running. new bef216f pulsemanager.{cpp,h}: add record and playback private members, as well as getters and setters. new 0aaa7e2 pulsemanager.cpp: reorder member variables in initializer list. new 076fe60 pulsemanager.cpp: fix compile error in startup sound function. new 473f4cb pulsemanager.h: more moving around. new 442c9fc pulsemanager.cpp: use record and playback member variables. new 45f928f pulsemanager.cpp: cleanup, don't use copy assignment operator when we just need to construct a new object. new dce4ad5 macbuild.sh: PulseAudio has been updated to version 8.0. Reflect this. new cf6e919 macbuild.sh: libpulsecore.dylib also resides in the "private" pulseaudio subdirectory now, adding it to "special files workaround". new 03ed3fa pulsemanager.cpp: remove config.pa while doing post-exit cleanups. new d530c91 src/pulsemanager.{cpp,h}: add get_pulse_dir () for fetching the (OS-dependent) PulseAudio config and cookie directory. new f9be317 src/pulsemanager.cpp: replace hardcoded modules paths with dynamic ones depending on the detected PA version. new d402083 src/pulsemanager.cpp: add "FIXME" debug logging (and cleanup.) new a00d810 src/pulsemanager.cpp: backport fix for 526. new 8bd4a7d src/pulsemanager.cpp: backport fix for 422. new 98ff951 src/configdialog.{cpp,h}: add "no record" support for OS X (through PulseManager.) new 7ff7d5e src/configdialog.cpp: whitespace only. new a369dec src/onmainwindow.{cpp,h}: hook PulseManager in - for both OS X and Windows. new 7218085 src/mediawidget.cpp: reflect new capabilities through PulseManager. new dac6c9b src/pulsemanager.h: move x2gologdebug.h inclusion into implementation file. new d41be64 src/pulsemanager.cpp: output PA stdout/stderr via x2goDebug, not plainly to stdout. new 356f818 src/configdialog.cpp: fix compile error by removing obsolete (and now faulty) line for removed restart message. new b1b2f3a src/onmainwindow.cpp: fix compile errors due to misspelled function names. new 40e65cf src/pulsemanager.cpp: let start () act as a wrapper and do nothing if the PA server is already running. new dd938ff src/onmainwindow.cpp: fix compile error due to misuse of #ifdef. new 54ad759 src/onmainwindow.cpp: convert QDir object to QString for further processing. new 0e74224 src/onmainwindow.cpp: make use of new PulseManager::start () behavior and always use it, no matter whether server is up already or not. new 4fe9b79 src/pulsemanager.cpp: fix compile error due to typo. new 71725cd src/pulsemanager.cpp: hide Windows-only code behind #ifdefs. new e52ead3 src/pulsemanager.{cpp,h}: add debugging setter and private variable. new fbc3f2f src/pulsemanager.{cpp,h}: port to new debugging feature. new 7fc4f34 src/onmainwindow.cpp: port to new debugging feature of PulseManager. new 1bad357 src/pulsemanager.h: fix compile error due to mismatching function declaration for set_debug (). new 5209a1f res/sound: add startup.wav sound to be played back when starting the PA daemon in debug mode. new e12bf04 src/pulsemanager.cpp: don't time out while trying to start PA or paplay. new c7de173 macbuild.sh: add support for copying resource files. new 377eb4f res: rename "sound" to "audio". new 33f98d3 macbuild.sh: fix copying of resource files. new 291d340 macbuild.sh: also add PA binaries to deduplication fixup list. new 4db2981 macbuild.sh: don't error out while executing parse_otool_output (). new a179f60 macbuild.sh: save return value of parse_otool_output (). new 0f4d3b2 src/pulsemanager.cpp: fix typo in fetch_pulseaudio_version (). new 79351a0 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 62441b8 src/pulsemanager.{cpp,h}: rename on_pulse_finished () to slot_on_pulse_finished (). new 0708f1c src/pulsemanager.cpp: actually only play startup sound if debugging is enabled. new 02fb1bf src/pulsemanager.cpp: don't insert stray newline into config.pa. new b5c1502 src/pulsemanager.cpp: insert PULSE_SERVER and PULSE_COOKIE variables into environment as used by PulseManager. new 693a415 src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. new 5f5bffe src/x2goutils.{cpp,h}: add new function find_binary (). new 53cc2ac src/pulsemanager.cpp: auto-detect PA binary in $PATH and MacPorts default prefix as well on OS X. new 0a746c6 src/pulsemanager.cpp: add comments to Qt 4 code part. new a3c4e59 src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). new fbeadb1 src/x2goutils.cpp: fix compile error. new ac44b65 src/pulsemanager.h: add new system_pulse_ variable to indicate that a system PA binary shall be used. new 08d92ce src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. new 8ece39e src/x2goutils.{cpp,h}: add application modality parameter to show_RichText_Generic_MsgBox () and its wrappers. new 96d55eb src/pulsemanager.cpp: add error message boxes throughout PulseManager. new 6561811 src/x2goutils.h: fix compile error due to typo. new adeae2c debian/changelog: fix typo in function name. new 066979b src/pulsemanager.cpp: fix compile error on Windows. new 6c38941 src/pulsemanager.cpp: fix startup when using the system-PA version. new d19c570 src/pulsemanager.cpp: fix startup sound playback when using the system-PA version. new 6d8fe09 src/pulsemanager.cpp: add warning message boxes where appropriate. new 99be9da src/pulsemanager.cpp: remove extraneous newlines from debug output. new f85df36 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 21c8381 src/x2goutils.cpp: add some debug logging to find_binary (). new b7ded10 nsis/x2goclient.nsi: add startup.wav to installer package. new c34d7d7 src/: new file windows_stdint.h for Windows-compatibility when using std::(u)int*_t types. new 840c3e4 src/pulsemanager.h: use windows_stdint.h header on Windows, cstdint otherwise. new c53c77b src/onmainwindow.cpp: short out code parts unconditionally checking for the userSshd variable. new 4caf529 src/onmainwindow.cpp: drop obsolete pulseVersionTest variable initialization in Windows-only code. new bf97588 src/onmainwindow.cpp: drop obsolete pulseVersionIsLegacy variable initialization in Windows-only code. new 3d3c3c0 src/onmainwindow.cpp: add another pair of braces to in_addr-type variable initialization on Windows to silence compiler warning. new 0b35d1b src/onmainwindow.cpp: fix compile error on Windows after moving some code around. new adff82b 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 b17a7cf src/pulsemanager.h: include accidentally omitted wapi.h header file. new d88ff85 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 00005e2 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 33d0076 src/pulsemanager.cpp: fix PA version fetching on OS X again. new f6a374b src/unixhelper.{cpp,h}: make argument of kill_pgroup () const. new 8606fbd src/unixhelper.h: style and general fixes within comments. new c67e225 src/unixhelper.{cpp,h}: split off core functionality of kill_pgroup () into a new function called real_kill_pgroup (). new 83eaf74 src/unixhelper.{cpp,h}: rewrite kill_pgroup () to act as a wrapper around real_kill_pgroup (). new 0b835a6 src/pulsemanager.cpp: remove unused variables. new 46c1980 src/unixhelper.cpp: code cleanup. new 108eacb src/{unixhelper.cpp,x2goclient.cpp}: fix errno usage - save before use. new de911ef src/onmainwindow.cpp: document createRSAKey () because what it does is completely non-obvious. new 5242916 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 ac4631b src/onmainwindow.{cpp,h}: rename generateHostKey () to generateKey () and add a boolean parameter with a default of false to request a public key. new 12b0501 src/onmainwindow.cpp: refactor generateKey () a little bit to compact it. new 9bec54f src/onmainwindow.{cpp,h}: rewrite generateKey () function to actually also generate user keys. new 1af7917 src/onmainwindow.cpp: add more error handling to generateKey () and fix up a broken error-handling section. new 8b55cda src/onmainwindow.cpp: fix up a few debug strings. new 31dd70d src/{onmainwindow.{cpp,h},configdialog.cpp}: remove userSshd variable and code related to non-user-mode-sshd setups. new e288869 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 a46f11b src/onmainwindow.cpp: uppercase key type in debug output and comment string in generateKey (). new 4b8b01e src/onmainwindow.cpp: terminate sshd more correctly. new 84e74eb src/onmainwindow.{cpp,h}: add new function check_key_type (). new 3f1601e src/onmainwindow.{cpp,h}: add new function key_type_to_string (). new 8c1dc33 src/onmainwindow.{cpp,h}: add new function default_size_for_key_type (). new b47f0b9 src/onmainwindow.cpp: use the new functions in generateKey (). new 22dcefa src/onmainwindow.h: move generateKey () declaration around. new 87675aa src/onmainwindow.{cpp,h}: reformat generateKey () only. new d4343fd src/onmainwindow.{cpp,h}: move createRSAKey () around. new 7afa0f5 src/onmainwindow.{cpp,h}: reformat createRSAKey () only. new 64115b4 src/onmainwindow.cpp: let startSshd () act as a wrapper and be called multiple times. new f66a8c4 src/onmainwindow.cpp: add some comments only to createRSAKey (). new 9945ca7 src/onmainwindow.{cpp,h}: rename createRSAKey () to the more-appropriate name createKeyBundle (). new f2816f8 macbuild.sh: switch to bundling PA 9.0. new b0e48db src/onmainwindow.cpp: move QProcess startup check in startSshd () to non-Windows code section and add a listening socket check loop. new 84d3abb src/onmainwindow.cpp: add comment to last all-in listening check in startSshd (). new d7f7963 src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). new c2c90d8 src/onmainwindow.{cpp,h}: make startSshd () private. new 9e46b6a src/onmainwindow.{cpp,h}: add ssh_key_type_ member variable and getter and setter to WinServerStarter class. new c34fddd src/onmainwindow.{cpp,h}: add SSH key type parameter to startSshd (). new af4f445 src/onmainwindow.cpp: pass new ssh_key_type_ member to startSshd () call in WinServerStarter::run (). new 6e391ff src/onmainwindow.cpp: pass key_type parameter to startSshd () in createKeyBundle (). new da421a2 src/onmainwindow.cpp: add and use key_types parameter to startWinServers (). new 8c94756 src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. new 709973d src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. new a8980e6 src/onmainwindow.h: remove WWrapper definition, seems to be unused. new b8c71a2 src/onmainwindow.{cpp,h}: don't try to initialize non-static ssh_key_type_ member variable directly, but in the constructor. new 65ee2ce src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. new 2285b83 src/onmainwindow.h: actually, we do need startSshd () to be public. Move it back. new dad9575 src/onmainwindow.cpp: only pass non-Cygwin paths to QFile::exists () in generateKey (). new 0924113 src/onmainwindow.cpp: use QFileInfo to get the key file's basename in exportDirs () instead of the old, potentially faulty string replace dance. new 1ba80cc src/x2goutils.{cpp,h}: make find_binary () and add_to_path () available on all UNIX-based operating systems. new 556008d src/pulsemanager.cpp: refactor PA binary searching code. new 06172f0 src/onmainwindow.cpp: fix sshd_config generation on UNIX by searching for the real sftp-server binary path. new 55a3f16 src/pulsemanager.cpp: fix PA binary searching logic. new 7d018c2 src/onmainwindow.cpp: move generateEtcFiles () call to startSshd (). new 378f60f src/onmainwindow.cpp: stop duplicating the list of known sftp-server binary locations. new ee8ddf6 src/{onmainwindow,pulsemanager}.cpp: actually *use* what we got back from add_to_path ()... new ac7caad src/onmainwindow.cpp: remove trailing slash from Mageia/SUSE/Arch sftp-server binary search path. new def9456 src/x2goutils.cpp: add debugging output to add_to_path (). new c44edf0 src/x2goutils.cpp: fix add_to_path (). 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 (1f77873) \ N -- N -- N refs/heads/bugfix/osx (c44edf0) 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 267 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 | 6 ++++++ src/onmainwindow.cpp | 2 ++ src/sharewidget.cpp | 6 ++---- 3 files changed, 10 insertions(+), 4 deletions(-) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 5e76081ada2e7c471c79021fbf2d32d0202b9cff 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 9c0c954..dfa04fc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium prompts. - src/sharewidget.cpp: fix compile on UNIX-like platforms by defaulting to ISO-8859-1 not just on Linux but also other platforms. Fixes: #1124. + - {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 958952208f189d6a97e66bdea6c9b275a3d2366f 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 dfa04fc..161e2ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/sharewidget.cpp: fix compile on UNIX-like platforms by defaulting to ISO-8859-1 not just on Linux but also other platforms. Fixes: #1124. - {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 8da9830b400ee7369fba22c60470f39262a2f296 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 b6d090a..b749c47 100644 --- a/debian/changelog +++ b/debian/changelog @@ -18,6 +18,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 19c7f030f06983836f9834762d65a50d4791dae1 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 e50491f..42f8837 100644 --- a/debian/changelog +++ b/debian/changelog @@ -23,6 +23,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 f5828587114a889b313961e892b4f4f09708bde3 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 b749c47..e50491f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -22,6 +22,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 70e4f2d0b1b7441278efb385a4bd2de402a66f4b 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 161e2ae..2f9e273 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium ISO-8859-1 not just on Linux but also other platforms. Fixes: #1124. - {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 d5816aa0e2739bf9d6bc2922641647f6f20c2798 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 2f9e273..b6d090a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,6 +16,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 a0eefcbecb917411b0b2c61a8765b215c6589c07 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 42f8837..444cf2e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -25,6 +25,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 713c26ed6d440153b02818e1552c060cb3efce89 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 444cf2e..1dc492b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -26,6 +26,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 2c69549728c820bfc4105e734ed2631a085ccc65 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 1dc492b..4461c2f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -28,6 +28,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 f3002fb65b997d5cd45149c8956c851bdf0bf833 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 4461c2f..900473e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -29,6 +29,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 1a89afd87c13627f7a6884ce19d193bcc7994f11 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 900473e..f12cd03 100644 --- a/debian/changelog +++ b/debian/changelog @@ -31,6 +31,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 c8df8a743fe11a47b9dd4d481de5f6602f604977 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 3b77139..972332c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -36,6 +36,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 0599ea77bb9b9becf2a659a5752811c1aa5a750e 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 f12cd03..da67a3e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -32,6 +32,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 d54b0abcb19a3edccfd4f86978c1f092b6ad56a2 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 da67a3e..aab830e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -33,6 +33,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 bd1c0907cd34c422231b732f3a0c7ca86eb9a45b 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 aab830e..3b77139 100644 --- a/debian/changelog +++ b/debian/changelog @@ -34,6 +34,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 c86746050bf4152284602b43111700c812943dd6 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 972332c..6aafb90 100644 --- a/debian/changelog +++ b/debian/changelog @@ -37,6 +37,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 f6c5d4ec33e67c73f9317557c4ccd6c7960ddff7 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 6aafb90..a1eb748 100644 --- a/debian/changelog +++ b/debian/changelog @@ -41,6 +41,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 8dbcbfd75b7f0810d991d93903f6390ef3e44fef 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 a1eb748..3b5e45b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -46,6 +46,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 bb6fc2d06ee53ca229cbc37dd051f4be77930b96 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 3b5e45b..aa8ac8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -47,6 +47,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 5020e3a125018a343eb525944c7379ce1029614a 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 aa8ac8e..3159d51 100644 --- a/debian/changelog +++ b/debian/changelog @@ -48,6 +48,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 ecac70c061f6e9b69d9d80139c0727853d63c3e4 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 3159d51..4f8900a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -51,6 +51,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 4cdd37394f2e7c7892ce6bce360a09d25f14b1eb 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 4f8900a..91852bd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -53,6 +53,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 ac971ee87f3fc57c563899d45277bc3a97449a4b 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 91852bd..a197fc3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -55,6 +55,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 e772b6c42a86c6dcac44ac7b74094e5f92727f48 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 a197fc3..1dc5e16 100644 --- a/debian/changelog +++ b/debian/changelog @@ -57,6 +57,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 69f98ef6a328b05dee685f74f29b33aceed444f1 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 1dc5e16..4fc0461 100644 --- a/debian/changelog +++ b/debian/changelog @@ -59,6 +59,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 4cb9c56..b308ed5 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -4296,8 +4296,10 @@ void ONMainWindow::resumeSession ( const x2goSession& s ) if (! startXorgOnStart) startXOrg(); // #endif +#else /* defined (Q_OS_WIN) */ + UNUSED (rootless); +#endif /* defined (Q_OS_WIN) */ -#endif if ( fullscreen ) { geometry="fullscreen"; @@ -10984,6 +10986,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 a9bc183556f630a87417c3dad7ca8a2cf8b5fb6d 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 4fc0461..7f4a433 100644 --- a/debian/changelog +++ b/debian/changelog @@ -61,6 +61,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 faa92190e99c1de2f68f086b424f99ddcbcf20f4 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 7f4a433..3b67814 100644 --- a/debian/changelog +++ b/debian/changelog @@ -63,6 +63,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 b308ed5..7594a43 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8245,43 +8245,54 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output, QByteArray line = file.readLine(); file.close(); - QString authofname=homeDir; -#ifdef Q_OS_WIN - QDir dir; - dir.mkpath ( authofname+"\\.x2go\\.ssh" ); - x2goDebug<<"Creating "<<authofname+"\\.x2go\\.ssh"; + QDir authorized_keys_dir (homeDir); - authofname=wapiShortFileName ( authofname ) +"/.x2go"; -#endif - authofname+="/.ssh/authorized_keys" ; - file.setFileName ( authofname ); - if ( !file.open ( QIODevice::ReadOnly | QIODevice::Text ) ) - { - printSshDError_noAuthorizedKeysFile(); - QFile::remove - ( key+".pub" ); - return; + /* + * Do the user SSHD/global SSHD dance here and either use the + * private .x2go/.ssh or the global .ssh dir. + */ + if (userSshd) { + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); } + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); + QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); + + /* + * We do not try to create the file first. + * This has been already done in startX2goMount(). + * We wouldn't be here if that failed. + */ + if (!authorized_keys_file.open (QIODevice::ReadOnly | QIODevice::Text)) { + printSshDError_noAuthorizedKeysFile (); + QFile::remove (key + ".pub"); + return; + } - QTemporaryFile tfile ( authofname ); - tfile.open(); - tfile.setAutoRemove ( true ); - QTextStream out ( &tfile ); + QTemporaryFile tfile (authorized_keys_file.fileName ()); + tfile.open (); + tfile.setPermissions (QFile::ReadOwner | QFile::WriteOwner); + tfile.setAutoRemove (true); + QTextStream out (&tfile); - while ( !file.atEnd() ) - { - QByteArray newline = file.readLine(); - if ( newline!=line ) - out<<newline; + /* + * Copy the content of the authorized_keys file to our new temporary file + * and remove the public authorized key for the current "session" again. + */ + while (!authorized_keys_file.atEnd ()) { + QByteArray newline = authorized_keys_file.readLine (); + if (newline != line) + out << newline; } - file.close(); - tfile.close(); - file.remove(); - tfile.copy ( authofname ); - QFile::remove - ( key+".pub" ); + + authorized_keys_file.close (); + tfile.close (); + + authorized_keys_file.remove (); + + tfile.copy (authorized_keys_file.fileName ()); + QFile::remove (key + ".pub"); } @@ -9512,41 +9523,90 @@ void ONMainWindow::startX2goMount() QByteArray line = file.readLine(); file.close(); - QString authofname=homeDir; -#ifdef Q_OS_WIN - QDir tdir; - tdir.mkpath ( authofname+"\\.x2go\\.ssh" ); - x2goDebug<<"Creating "<<authofname+"\\.x2go\\.ssh"; + QDir authorized_keys_dir (homeDir); - authofname=wapiShortFileName ( authofname ) +"/.x2go"; -#endif - authofname+= "/.ssh/authorized_keys" ; + /* + * Do the user SSHD/global SSHD dance here and either use the + * private .x2go/.ssh or the global .ssh dir. + */ + if (userSshd) { + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); + } - QFile file1 ( authofname ); + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); + QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); - if ( !file1.open ( QIODevice::WriteOnly | QIODevice::Text | - QIODevice::Append ) ) - { - QString message=tr ( "Unable to write:\n" ) + authofname; - QMessageBox::critical ( 0l,tr ( "Error" ),message, - QMessageBox::Ok, - QMessageBox::NoButton ); - QFile::remove - ( fsExportKey+".pub" ); - return; + if (userSshd) { + x2goDebug << "Creating dir " << authorized_keys_dir.absolutePath (); + authorized_keys_dir.mkpath (authorized_keys_dir.absolutePath ()); + } + x2goDebug << "Potentially creating file " << authorized_keys_file.fileName (); + if (!authorized_keys_file.open (QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { + QString message = tr ("Unable to create or append to file: ") + authorized_keys_file.fileName (); + QMessageBox::critical (0l, tr ("Error"), message, + QMessageBox::Ok, QMessageBox::NoButton); + QFile::remove (fsExportKey + ".pub"); + return; } - directory* dir=getExpDir ( fsExportKey ); - bool rem=dir->isRemovable; - if ( !dir ) - return; - QTextStream out ( &file1 ); - out<<line; - file1.close(); +#ifdef Q_OS_UNIX + QFile::Permissions authorized_keys_file_perm = authorized_keys_file.permissions (); + QFile::Permissions authorized_keys_file_target_perm = QFile::ReadOwner | QFile::WriteOwner; + + bool permission_error = false; + + /* + * Try to set the permissions if they are wrong. + * (sshd would disallow such a file.) + */ + if (authorized_keys_file_perm != authorized_keys_file_target_perm) { + if (!authorized_keys_file.setPermissions (authorized_keys_file_target_perm)) { + /* FIXME: use a function for this... */ + QString message = tr ("Unable to change the permissions of file: ") + authorized_keys_file.fileName (); + message += "\n" + tr ("This is an error because sshd would deny such a file."); + QMessageBox::critical (NULL, tr ("Error"), message, + QMessageBox::Ok, QMessageBox::NoButton); + permission_error = true; + } + } + + QFile::Permissions authorized_keys_dir_perm = QFile (authorized_keys_dir.absolutePath ()).permissions (); + QFile::Permissions authorized_keys_dir_target_perm = QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner; + + /* + * Try to set the permissions if they are wrong. + * (sshd would disallow such a directory.) + */ + if (authorized_keys_dir_perm != authorized_keys_dir_target_perm) { + if (!QFile (authorized_keys_dir.absolutePath ()).setPermissions (authorized_keys_dir_target_perm)) { + /* FIXME: use a function for this... */ + QString message = tr ("Unable to change the permissions of directory: ") + authorized_keys_dir.absolutePath (); + message += "\n" + tr ("This is an error because sshd would deny such a directory."); + QMessageBox::critical (NULL, tr ("Error"), message, + QMessageBox::Ok, QMessageBox::NoButton); + permission_error = true; + } + } - x2goDebug<<"Temporarily activated public key from file "<<fsExportKey<<".pub."<<endl; + if (permission_error) { + QFile::remove (fsExportKey + ".pub"); + return; + } +#endif /* defined (Q_OS_UNIX) */ + + directory* dir = getExpDir (fsExportKey); + bool rem = dir->isRemovable; + if (!dir) { + return; + } + + QTextStream out (&authorized_keys_file); + out << line; + authorized_keys_file.close (); + + x2goDebug << "Temporarily activated public key from file " << fsExportKey << ".pub."; QString passwd=getCurrentPass(); QString user=getCurrentUname(); @@ -10329,20 +10389,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 8be26515262e1a57056fc10352a152c2fdb944a3 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 3b67814..fd5b1c3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -67,6 +67,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 aff64ea50afeff2522fa5342a0c6e2a356c9a365 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 fd5b1c3..140cf20 100644 --- a/debian/changelog +++ b/debian/changelog @@ -69,6 +69,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 59732b99b000d8a7bc8520f8400f2c9cc7464f98 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 140cf20..ab2b1da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -71,6 +71,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 4db535f5263731244be8059bd940ee96effde255 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 ab2b1da..17304fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -72,6 +72,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 08f049275e4f03cf3a5bfaa26f3126512cd3ae61 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 17304fb..888af7c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -73,6 +73,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 5035ecdbc95535d83e8d93663397108ae3b8b11b 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 888af7c..044c911 100644 --- a/debian/changelog +++ b/debian/changelog @@ -74,6 +74,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 4fa6d605210727c00dfc7b338646a87267351e43 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 044c911..bb04498 100644 --- a/debian/changelog +++ b/debian/changelog @@ -75,6 +75,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 02895d1c66b367ae25b460e89b822a7aebbc3036 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 bb04498..b5c5f15 100644 --- a/debian/changelog +++ b/debian/changelog @@ -76,6 +76,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 37984f1b4513373386f93ea27c6308fc9aa3be8f 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 b5c5f15..f65c047 100644 --- a/debian/changelog +++ b/debian/changelog @@ -77,6 +77,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 595b2ee0b606b9f0cb991b0c5c74b5328daf5c75 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 f65c047..928503e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -78,6 +78,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 e42a8a9ecca159320b6d148fea0235f8d561e9df 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 928503e..750509b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -79,6 +79,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 fdb885bce198043a869653e928e2932e08990e56 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 750509b..35d6972 100644 --- a/debian/changelog +++ b/debian/changelog @@ -80,6 +80,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 d7493b7b120152c2033410866fcf9667130ad9b8 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 35d6972..609c804 100644 --- a/debian/changelog +++ b/debian/changelog @@ -82,6 +82,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 e54ace911790e78971126f997016ef9a0f33702d 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 609c804..d7392ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -85,6 +85,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 cc1bb7064b955e51fea8dc8c009509283d8e7e61 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 d7392ed..bd749d4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -86,6 +86,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 e9d32f9b5d04fa505ec1a4221e37d170d31cf849 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 bd749d4..d04f946 100644 --- a/debian/changelog +++ b/debian/changelog @@ -87,6 +87,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 2f90e344274fb03ae87a24a98a036137832fea65 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 d04f946..8b9edc5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -90,6 +90,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 701c69ec5f4658134ae1fe874ea0863efc00982e 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 8b9edc5..0d907ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -91,6 +91,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 38c926901215bf92c399bd638bef5690981b274f 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 0d907ff..738c1ec 100644 --- a/debian/changelog +++ b/debian/changelog @@ -93,6 +93,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 fcc56f59f56ce839c424bd6ef67724c5448f0b3d 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 738c1ec..995196b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -94,6 +94,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 b56e0f6e79abd31b0d4fc32cc0c2195c0a7d1ab1 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 995196b..b13c0ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -96,6 +96,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 b18c7e1adb2ff31a7f27316a23a566ba7894da75 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 b13c0ad..7f697e8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -98,6 +98,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 ebcb1c1bbc8f1fcd35920bf8aff7e822efdb2a30 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 7f697e8..804eed7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -100,6 +100,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 94a000f7cf5ebc7100dfd91e68707b3ec3ab2450 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 804eed7..21c6bbd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -101,6 +101,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 0c9280f48b909d4a6a0575f0ebb72579974c08b6 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 21c6bbd..ffd46a2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -103,6 +103,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 328c6fe88c3d70da111f3262024ac9564a889dde 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 ffd46a2..ab55e99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -105,6 +105,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 3ebee8e11a8a5c0b86bcf8aef0b1bd7c4e08c893 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 ab55e99..1b8614a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -107,6 +107,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 8ad586354e5e93419696e7765c571be155aadc62 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 1b8614a..e58a583 100644 --- a/debian/changelog +++ b/debian/changelog @@ -109,6 +109,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 a69c491aeec0a263c6941d26459bb483c99bdd1b 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 e58a583..37615b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -110,6 +110,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 16150770b0b99edc0aede5afc7d5e6edf22a3817 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 37615b1..1319e75 100644 --- a/debian/changelog +++ b/debian/changelog @@ -111,6 +111,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 b7377081f98abc4005d0d6e56456490064218066 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 1319e75..dbf5790 100644 --- a/debian/changelog +++ b/debian/changelog @@ -113,6 +113,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 986a9d11f20a4fdef9668c7123939ec4609992da 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 dbf5790..8a7f9eb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -115,6 +115,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 7d53f880d6a86d2e9b0725d5160f8780555d2d45 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 8a7f9eb..50293cb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -117,6 +117,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 c71de68d9727a90b36d3f67c8897b3ebd678911b 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 50293cb..ecdad94 100644 --- a/debian/changelog +++ b/debian/changelog @@ -118,6 +118,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 36f9e6ba84d65a5efff6497662db6082c45b5df7 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 ecdad94..1cb2c32 100644 --- a/debian/changelog +++ b/debian/changelog @@ -120,6 +120,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 bf38ebbbdf74ffa1a6d1f0a3e0245807230e864f 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 1cb2c32..73660dd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -122,6 +122,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 f52871dd2ec497b03e285b908e3f43e538e8e988 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 73660dd..15db3f1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -125,6 +125,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 653f5f3e9255fb5790ade97f7511478fb5b7f95f 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 15db3f1..437f6bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -126,6 +126,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 b1d2a504abe7744836793ba3897102aa76404eef 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 ac92840..2f8ea92 100644 --- a/debian/changelog +++ b/debian/changelog @@ -129,6 +129,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 693b078955699c877d9c22f678a3b766df00d6b1 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 2f8ea92..4d19924 100644 --- a/debian/changelog +++ b/debian/changelog @@ -131,6 +131,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 48d39fa5478fa58a78cb22ff43b0217e8d0751d4 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 437f6bb..ac92840 100644 --- a/debian/changelog +++ b/debian/changelog @@ -128,6 +128,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 6b6ea4b050d73a20c08987e4fb641f04c2a0fb03 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 9f3dfe5..dc8ebd1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -137,6 +137,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 46d2be9302be2293c783e45390fb787f4235ab21 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 dc8ebd1..ac47c02 100644 --- a/debian/changelog +++ b/debian/changelog @@ -139,6 +139,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 7cc69e7697bd81f993fe7feb2c35ace122912729 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 95ecb7d..bbc75ee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -143,6 +143,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 36903123aeae61d3c64b3232e3ae0d84b8954eae 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 bbc75ee..9462763 100644 --- a/debian/changelog +++ b/debian/changelog @@ -145,6 +145,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 4083a84f5c1e4198877d839e10ad2b54457fa85c 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 ac47c02..95ecb7d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -141,6 +141,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 5388ff36a3594464715f99ad0babea2136e37bbc 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 4d19924..47e6191 100644 --- a/debian/changelog +++ b/debian/changelog @@ -134,6 +134,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 cb6eb43db08c611aa40a2ddfb77b41e69c8405f6 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 47e6191..9f3dfe5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -136,6 +136,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 4748882f4fd7a1e6778d8f74ff36653a51807761 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 9462763..a55a855 100644 --- a/debian/changelog +++ b/debian/changelog @@ -146,6 +146,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 309ea834e8756931a8236a04994241f3d4cb9790 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 a55a855..486bbff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -151,6 +151,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 68ef3e412de5cda7a1234401094f0de802ebc98a 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 486bbff..35735f4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -153,6 +153,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 47d5613ba2831d9ee9d4882b3adf443b56c712c5 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 35735f4..4a2a564 100644 --- a/debian/changelog +++ b/debian/changelog @@ -155,6 +155,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 a44eb41fe5873eba69bce6a48ca7126567eb7a83 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 4a2a564..0cbaae2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -157,6 +157,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 6d3fb3ed85f7c16d43654330dff82c1d5b8a7dcb 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 b9156fd..49b39ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -164,6 +164,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 71ada424dda3b1ea71b934a1f00fba5ff0d30617 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 0cbaae2..a35cd6b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -158,6 +158,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 0f1cfeee06fa5de61c55cf636794376e961a29a4 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 a35cd6b..7a62d26 100644 --- a/debian/changelog +++ b/debian/changelog @@ -159,6 +159,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 faf6c1291b9b4343f09205e41e7ecfb6bb8e9e10 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 7a62d26..1c7fcc1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -160,6 +160,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 70c00164fecf34c27c277e32df94aeb228d2b990 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 1c7fcc1..68292d2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -161,6 +161,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 ec5d117d09d400ed0586168a82e2558a6a9e86ed 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 68292d2..b9156fd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -163,6 +163,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 f4b703105fd3ac176c507ca1725234c096b02a05 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 49b39ff..d12eed0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -165,6 +165,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 c65d14a1984fde92a0691a02f1a10720d1adbe16 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 d52c8b9..1d9b070 100644 --- a/debian/changelog +++ b/debian/changelog @@ -175,6 +175,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 8b5895d0c2657ec4d701a455695cbec0af75f23a 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 d12eed0..7005a05 100644 --- a/debian/changelog +++ b/debian/changelog @@ -167,6 +167,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 c11e3577e7a1d8837e95e9e0d752ae72fda5d07d 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 26227b6..43de88c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -171,6 +171,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 676c1c3ff1f79d794740fb3500257caee77f357e 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 43de88c..76ed040 100644 --- a/debian/changelog +++ b/debian/changelog @@ -173,6 +173,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 b26af07519eef0d0b72a9449c99aca34d3b8e049 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 76ed040..d52c8b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -174,6 +174,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 4100167c78a479fa55e7f47b46322fad52bb8292 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 7005a05..26227b6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -168,6 +168,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 d91db739f488faff00b1b6a538d5e72ef24fc2fe 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 ffefe54..eb75a3e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -177,6 +177,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 46fb4efffacf20432486a40e7ff40dd50b4cb6b5 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 eb75a3e..d505e9b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -178,6 +178,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 428d7a4db45116d27ec44d23776c3c14681aa264 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 1d9b070..ffefe54 100644 --- a/debian/changelog +++ b/debian/changelog @@ -176,6 +176,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 dfa1be2ca4f85a320b15498e1c7d8a817f9d7851 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 d505e9b..f4cc505 100644 --- a/debian/changelog +++ b/debian/changelog @@ -179,6 +179,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 d8ef9d5ee9cb43cf7dbd6b496a9504f74855876b 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 92871d1..a9108cf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -182,6 +182,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 9c9853d25d79f150cf9d8d3e18c8ae136bae9f7f 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 f4cc505..92871d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -181,6 +181,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 7cacdb2d9ff32b703c094702f1520230f4c29b8b 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 bb958f3..67eff8a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -185,6 +185,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 d9f6ae452cc6b0e1a8a018160fc1d378818b8a31 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 a9108cf..447a2c6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -183,6 +183,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 138d15701861293f81a6ef7ed24cd68d00fb621d 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 447a2c6..bb958f3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -184,6 +184,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 23c86b2f3284151e75bab69de8259e53ce45b719 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 67eff8a..b28f9a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -187,6 +187,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 b3855f244cbd68af5f3779d1dcd39a80b2258892 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 b28f9a6..17e32a2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -189,6 +189,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 4434f245c9839d733a734536aab88ade95bca853 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 17e32a2..4cb14f7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -190,6 +190,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 f594992de8493b31b2f7b3209af1e99fab843928 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 c9ea57a..2e361d2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -193,6 +193,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 8a8c7c788239e2a5a7d33096190b1ff46c5beaa5 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 4cb14f7..b17e610 100644 --- a/debian/changelog +++ b/debian/changelog @@ -191,6 +191,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 5734d9818915082aebdf37f6253215b4431e2b17 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 b17e610..c9ea57a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -192,6 +192,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 0889b412ff9fcb48e12118d5c2248132809c7b24 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 fb3ff98..d507012 100644 --- a/debian/changelog +++ b/debian/changelog @@ -200,6 +200,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 1e35e2e510ab6cb747ef72b60f6d3a265017eb66 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 db05dcb..fb3ff98 100644 --- a/debian/changelog +++ b/debian/changelog @@ -199,6 +199,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 11684feaac1b5d873db8c4884a131cc6a4b277c1 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 d507012..4f23f8a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -201,6 +201,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 06d63d3db9ebeb5f2c317436788e850d362a3da4 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 2e361d2..e7b8b16 100644 --- a/debian/changelog +++ b/debian/changelog @@ -195,6 +195,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 0094df183330362c20be2707a1320ce4a36c0c9f 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 e7b8b16..264f7a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -196,6 +196,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 697ec80f6b5bef3efd4431a271653c26d6eadc7e 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 264f7a9..db05dcb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -198,6 +198,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 8baf58583e9d63fe2441de0bb48831761f2abc1a 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 d4e7134e28f8d66529a644b0ca8f455042051f38 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 d41e3eb..a6b71ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -205,6 +205,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 ce42dd252cea39477d3edd5fb542a3700b6d7774 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 4f23f8a..082ba9f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -202,6 +202,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 df5e535fa73044175eb48c4bd8b21dbde191c58f 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 082ba9f..d41e3eb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -204,6 +204,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 3abcc2729617da42f958cad39d095a6b682c6d05 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 a6b71ad..a781085 100644 --- a/debian/changelog +++ b/debian/changelog @@ -207,6 +207,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 0129527259a6af70da97142d3021ede6cdc080fd 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 6bdd446..d018aa7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -211,6 +211,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 526acb5280239979a1331094bcbeece43e9b5805 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 a781085..6bdd446 100644 --- a/debian/changelog +++ b/debian/changelog @@ -209,6 +209,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 e195a6b7c005286bfbc0fc6ada2c639339fe4d55 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 d018aa7..624675c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -212,6 +212,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 198f4f66eeeaf0781dcb4fb3ade5ae7441d3b47a 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 2dad2a6..25c3cfa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -215,6 +215,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 1d3a16b24c9df378e6e170a3c3148be52771f1ee 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 624675c..2dad2a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -212,8 +212,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 8c496b11f58e4d65b1c8be3ace7f2130b4e376cb 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 25c3cfa..4e0a561 100644 --- a/debian/changelog +++ b/debian/changelog @@ -218,6 +218,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 1a5bcccf56d04944163df0a8598b7a414808dab5 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 4e0a561..3d0990d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -220,6 +220,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 ec4423fb1a0adaa4c104ffdc9281f08d85fd78e0 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 8a0696c..975256f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -224,6 +224,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 02df05bcf5bae10ae667eee8b3067f44c316a61d 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 3d0990d..8a0696c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -222,6 +222,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 aa5780a39bb19669eedf1bdbd335cb20fa8e15de 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 35d1307..15173de 100644 --- a/debian/changelog +++ b/debian/changelog @@ -231,6 +231,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 2abe7807b55a8cb83751cc7d5f06683ee3ce2c64 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 975256f..d17c091 100644 --- a/debian/changelog +++ b/debian/changelog @@ -227,6 +227,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 1c86481a4415a7f4a47e9e2a5b1a3699f506fe87 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 d17c091..35d1307 100644 --- a/debian/changelog +++ b/debian/changelog @@ -229,6 +229,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 bef216f42df23757644a1aa2fb3735e0462a17b0 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 15173de..770d5f0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -233,6 +233,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 0aaa7e28fa9da80d31a772debdf2dc51328c8924 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 770d5f0..dd762ce 100644 --- a/debian/changelog +++ b/debian/changelog @@ -235,6 +235,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 442c9fc6c9c8b0c1b14ba393bdd246d89c7c5299 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 3c58b5d..4027147 100644 --- a/debian/changelog +++ b/debian/changelog @@ -238,6 +238,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 076fe600076195f6bea7d57151260162b34eecb2 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 dd762ce..a2c8d18 100644 --- a/debian/changelog +++ b/debian/changelog @@ -236,6 +236,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 473f4cbac9c3bd7964b48f948fd018c83979b60d 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 a2c8d18..3c58b5d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -237,6 +237,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 d530c913b6659feacbd4fd767a61b1e7c7aca505 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 1e5428d..c385fd5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -245,6 +245,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 03ed3fa0b3084cbff427b748a31d5a2ab822208f 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 a3bd307..1e5428d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -244,6 +244,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 f9be3171bd8d57d3f4453b464ef7635489b3b69f 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 c385fd5..c07c852 100644 --- a/debian/changelog +++ b/debian/changelog @@ -247,6 +247,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 45f928f481abe41c6416072500ac41437e20e7b0 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 4027147..dabb957 100644 --- a/debian/changelog +++ b/debian/changelog @@ -239,6 +239,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 dce4ad5306e05b52edecaadec22ea91279cfb5a5 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 dabb957..0e0d7e7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -241,6 +241,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 cf6e919639b7b4947365471311275fd62ad0c5ef 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 0e0d7e7..a3bd307 100644 --- a/debian/changelog +++ b/debian/changelog @@ -242,6 +242,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 8bd4a7ddbbfcbdd5f14dc7d333637e1c12a1549a 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 e17ac4f..47f745b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -251,6 +251,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 98ff9516947423702018073dfa85e44ec22ce9b9 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 47f745b..558a4da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -252,6 +252,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 d402083b37d408488e36b441bc853381bbf031fb 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 c07c852..d605597 100644 --- a/debian/changelog +++ b/debian/changelog @@ -249,6 +249,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 a00d810dbeb1d1d2ef2f29e10ed5520839cfd438 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 d605597..e17ac4f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -250,6 +250,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 7ff7d5e68f01dd3541907fd10467811fc5c26ba6 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 558a4da..df47e0d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -254,6 +254,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 72180851e87018438c1e44dd1c1256b0a1817e93 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 5bdfd1a..7e0be36 100644 --- a/debian/changelog +++ b/debian/changelog @@ -257,6 +257,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 a369dec4016f90e951f3e16d20582734d9e55f19 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 df47e0d..5bdfd1a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -255,6 +255,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 7594a43..83e1250 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -148,10 +148,7 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) #ifdef Q_OS_WIN clientSshPort="7022"; - pulsePort=4713; - pulseStarted=false; X2goSettings st ( "settings" ); - pulseNoRecord=st.setting()->value ( "pulse/norecord", false ).toBool(); winSshdStarted=false; #else userSshd=false; @@ -174,7 +171,6 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) #ifdef Q_OS_WIN pulseVersionTest=0l; - pulseServer=0l; xorg=0l; xDisplay=0; #endif @@ -462,6 +458,10 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) QTimer::singleShot ( 500, this, SLOT ( startWinServers() ) ); #endif + /* FIXME: add Linux. */ +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) + QTimer::singleShot (500, this, SLOT (pulseManagerWrapper ())); +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ mainL->setSpacing ( 0 ); mainL->setMargin ( 0 ); @@ -1488,24 +1488,6 @@ void ONMainWindow::closeClient() } #endif #ifdef Q_OS_WIN - if ( pulseServer && pulseStarted ) - { - x2goDebug<<"Deleting the pulse timer ..."; - delete pulseTimer; - x2goDebug<<"Deleted the pulse timer."; - x2goDebug<<"Killing the PulseAudio sound server ..."; - pulseServer->kill(); - x2goDebug<<"Killed the PulseAudio sound server."; - x2goDebug<<"Deleting the PulseAudio process ..."; - delete pulseServer; - x2goDebug<<"Deleted the PulseAudio process."; - - QDir dr ( homeDir ); - dr.remove ( pulseDir+"/config.pa" ); - dr.remove ( pulseDir+"/pulse-pulseuser/pid" ); - dr.rmdir ( pulseDir+"/pulse-pulseuser" ); - dr.rmdir ( pulseDir ); - } if ( xorg ) { x2goDebug<<"Terminating the X.Org Server ..."; @@ -1522,7 +1504,20 @@ void ONMainWindow::closeClient() CloseHandle ( sshd.hProcess ); CloseHandle ( sshd.hThread ); } -#else +#endif /* defined (Q_OS_WIN) */ + +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) + if (pulseManager) { + delete (pulseManager); + + pulseManagerThread->quit (); + pulseManagerThread->wait (); + + delete (pulseManagerThread); + } +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ + +#ifndef (Q_OS_WIN) if ( userSshd && sshd ) { x2goDebug<<"Terminating the OpenSSH server ..."; @@ -1530,8 +1525,8 @@ void ONMainWindow::closeClient() x2goDebug<<"Terminated the OpenSSH server."; delete sshd; } +#endif /* !defined (Q_OS_WIN) */ -#endif if ( embedMode ) { passForm->close(); @@ -2114,11 +2109,31 @@ void ONMainWindow::slotConfig() delete ld; ld=0; +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) + bool oldDisableInput = false; + { + X2goSettings st ("settings"); + oldDisableInput = st.setting ()->value ("pulse/norecord", + (QVariant) false).toBool (); + } +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ + ConfigDialog dlg ( this ); if ( dlg.exec() ==QDialog::Accepted ) { int i; +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) + X2goSettings st ("settings"); + bool newDisableInput = st.setting ()->value ("pulse/norecord", + (QVariant) false).toBool (); + + if (oldDisableInput != newDisableInput) { + pulseManager->set_record (!newDisableInput); + pulseManager->restart (); + } +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ + if ( passForm->isVisible() && !embedMode ) slotClosePass(); if ( sessionStatusDlg->isVisible() || embedMode ) @@ -4980,9 +4995,9 @@ void ONMainWindow::slotRetResumeSess ( bool result, bool sound=true; int sndSystem=PULSE; QString sndPort; -#ifndef Q_OS_WIN +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) sndPort="4713"; -#endif +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ bool startSoundServer=true; bool sshSndTunnel=true; @@ -5019,9 +5034,9 @@ void ONMainWindow::slotRetResumeSess ( bool result, sndSystem=ARTS; if ( sndsys=="esd" ) sndSystem=ESD; -#ifndef Q_OS_WIN +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) sndPort=st->setting()->value ( sid+"/sndport" ).toString(); -#endif +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ startSoundServer=st->setting()->value ( sid+"/startsoundsystem", true ).toBool(); @@ -5032,7 +5047,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, } -#ifndef Q_OS_WIN +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) bool defPort=st->setting()->value ( sid+ "/defsndport",true ).toBool(); if ( defPort ) @@ -5047,25 +5062,24 @@ void ONMainWindow::slotRetResumeSess ( bool result, break; } } -#endif +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ sshSndTunnel=st->setting()->value ( sid+"/soundtunnel", true ).toBool(); -#ifdef Q_OS_WIN - switch ( sndSystem ) - { - case PULSE: - if(!pulseStarted && sound) - { - startPulsed(); - } - sndPort=QString::number ( pulsePort ); - break; - case ESD: - sndPort=QString::number ( esdPort ); - break; +#if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) + if ((sound) && (!(pulseManager->is_server_running ()))) { + pulseManager->start (); } -#endif + + switch (sndSystem) { + case PULSE: + sndPort = QString::number (pulseManager->getPulsePort ()); + break; + case ESD: + sndPort = QString::number (pulseManager->getEsdPort ()); + break; + } +#endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ delete st; @@ -5276,7 +5290,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, } else { -#ifndef Q_OS_WIN +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) if ( QFile::exists(homeDir+"/.config/pulse/cookie") ) { pulsecookie_filename = homeDir+"/.config/pulse/cookie"; } @@ -5290,49 +5304,37 @@ void ONMainWindow::slotRetResumeSess ( bool result, resumingSession.sessionId+ "/.pulse-cookie", this, SLOT ( slotPCookieReady ( bool, QString,int ))); } -#else - QString cooFile= - wapiShortFileName ( homeDir ) + - "/.x2go/pulse/.pulse-cookie"; +#else /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ + QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir () + + "/.pulse-cookie").absolutePath ()); QString destFile="$HOME/.x2go/C-"+ resumingSession.sessionId+ "/.pulse-cookie"; sshConnection->copyFile(cooFile, destFile, this, SLOT ( slotPCookieReady ( bool, QString,int ))); parecTunnelOk=true; -#endif +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ } } if ( sndSystem==ESD ) { -#ifndef Q_OS_WIN +#ifdef Q_OS_LINUX sshConnection->copyFile(homeDir+"/.esd_auth", "$HOME/.esd_auth" ); -#else - QString cooFile= - wapiShortFileName ( homeDir ) + - "/.x2go/pulse/.esd_auth"; +#else /* defined (Q_OS_LINUX) */ + QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir () + + "/.esd_auth").absolutePath ()); QString destFile="$HOME/.esd_auth"; sshConnection->copyFile(cooFile, destFile ); - -#endif +#endif /* defined (Q_OS_LINUX) */ } -#ifndef Q_OS_WIN +/* Windows and Darwin are covered by PulseManager. */ +#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) if ( startSoundServer ) { soundServer=new QProcess ( this ); QString acmd="artsd",ecmd="esd"; -#ifdef Q_OS_DARWIN - QStringList env = soundServer->environment(); - QDir dir ( appDir ); - dir.cdUp(); - dir.cd ( "esd" ); - env.insert ( 0,"DYLD_LIBRARY_PATH="+ - dir.absolutePath() ); - soundServer->setEnvironment ( env ); - ecmd="\""+dir.absolutePath() +"\"/esd"; -#endif //Q_OS_DARWIN if ( sndSystem==ESD ) soundServer->start ( ecmd+ @@ -5343,11 +5345,11 @@ void ONMainWindow::slotRetResumeSess ( bool result, resumingSession.sndPort ); sndPort=resumingSession.sndPort; } -#endif //Q_OS_WIN +#endif /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ if ( sshSndTunnel ) { const char* okSlot=0; -#ifdef Q_OS_WIN +#ifdef Q_OS_WIN /* FIXME: Do we need explicit parec support in PulseManager? */ if ( sndSystem==PULSE ) { parecTunnelOk=false; @@ -6481,6 +6483,29 @@ x2goSession ONMainWindow::getNewSessionFromString ( const QString& string ) return s; } +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) +void ONMainWindow::pulseManagerWrapper () { +#ifdef Q_OS_WIN + if (!embedMode || !config.confSnd || + (config.confSnd && config.useSnd)) +#endif /* defined (Q_OS_WIN) */ + { + pulseManagerThread = new QThread (0); + pulseManager = new PulseManager (); + + pulseManager->moveToThread (pulseManagerThread); + + /* + * Spawn PulseManager::start() once the thread started up successfully. + * Another means of doing that would be via + * QMetaObject::invokeMethod (pulseManager, "start", Qt::QueuedConnection); + */ + connect (pulseManagerThread, SIGNAL (started ()), pulseManager, SLOT (start ())); + + pulseManagerThread->start (); + } +} +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ void ONMainWindow::slotAppDialog() { @@ -10050,15 +10075,11 @@ void ONMainWindow::startWinServers() QString etcDir=homeDir+"/.x2go/etc"; QDir dr ( homeDir ); - pulseServer=0l; - WinServerStarter* xStarter = new WinServerStarter ( WinServerStarter::X, this ); WinServerStarter* sshStarter = new WinServerStarter ( WinServerStarter::SSH, this ); - - if ( !embedMode || !config.confFS || ( config.confFS && config.useFs ) ) { @@ -10067,14 +10088,7 @@ void ONMainWindow::startWinServers() generateEtcFiles(); sshStarter->start(); } - if(embedMode) - { - if ( !config.confSnd || - ( config.confSnd && config.useSnd ) ) - { - startPulsed(); - } - } + // #ifdef CFGCLIENT //x2goDebug<<"Xorg settings: "<< startXorgOnStart <<" useXming: "<< useXming; @@ -10148,177 +10162,6 @@ void ONMainWindow::removeCygwinEntry() } -void ONMainWindow::startPulsed() -{ -#ifdef Q_OS_WIN - if(pulseStarted) - { - return; - } - pulseVersionTest=new QProcess ( 0 ); - pulseVersionTest->start ( "pulse\\pulseaudio.exe --version" ); - - pulseVersionTest->waitForFinished(); - QString pulseVersionLine= - pulseVersionTest->readAllStandardOutput().replace("\n"," ").simplified(); - - x2goDebug <<"PulseAudio version line: "<<pulseVersionLine; - if (pulseVersionLine.contains("pulseaudio 0.", Qt::CaseInsensitive)) - pulseVersionIsLegacy = true; - if (pulseVersionLine.contains("pulseaudio 1.", Qt::CaseInsensitive)) - pulseVersionIsLegacy = true; - if (pulseVersionLine.contains("pulseaudio 2.", Qt::CaseInsensitive)) - pulseVersionIsLegacy = true; - - if (pulseVersionIsLegacy) - { - x2goDebug <<"PulseAudio <= 2.1 detected. PulseAudio will automatically use .pulse-cookie"; - } - else - { - x2goDebug <<"PulseAudio >= 3.0 detected. X2Go Client will tell PulseAudio to use .pulse-cookie."; - } -#endif - while ( isServerRunning ( pulsePort ) ) - ++pulsePort; - esdPort=pulsePort+1; - while ( isServerRunning ( esdPort ) ) - ++esdPort; - - // The permanent dir for the pulse auth cookie - pulseBaseDir=homeDir+"/.x2go/pulse"; - QDir dr ( homeDir ); - dr.mkpath ( pulseBaseDir ); - - // The tempoerary dir for config.pa (and pulse.log if it exists) - pulseDir=pulseBaseDir; - pulseDir=wapiShortFileName ( pulseDir ); - x2goDebug<<"PulseAudio template: "<<pulseDir+"/tmp"; - QTemporaryFile* fl=new QTemporaryFile ( pulseDir+"/tmp" ); - fl->open(); - pulseDir=fl->fileName(); - fl->close(); - delete fl; - QFile::remove ( pulseDir ); - dr.mkpath ( pulseDir ); - - x2goDebug<<"PulseAudio tmp file: "<<pulseDir; - - QStringList pEnv=QProcess::systemEnvironment(); - for ( int i=0; i<pEnv.size(); ++i ) - { - if ( pEnv[i].indexOf ( "USERPROFILE=" ) !=-1 ) - pEnv[i]="USERPROFILE="+ - QDir::toNativeSeparators( wapiShortFileName( pulseBaseDir )); - if ( pEnv[i].indexOf ( "TEMP=" ) !=-1 ) - pEnv[i]="TEMP="+pulseDir; - if ( pEnv[i].indexOf ( "USERNAME=" ) !=-1 ) - pEnv[i]="USERNAME=pulseuser"; - } - - QFile file ( pulseDir+"/config.pa" ); - if ( !file.open ( QIODevice::WriteOnly | QIODevice::Text ) ) - return; - QTextStream out ( &file ); - /* - Reference: - http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modul... - - Setting auth-cookie fixes bug #422 - - PulseAudio 6.0 changed the path that auth-cookie is relative to, so - Tanu Kaskinen recommended we specify the absolute path instead. - The abs path works with at least 5.0 and 6.0 - */ - if (pulseVersionIsLegacy) - { - out << "load-module module-native-protocol-tcp port="+ - QString::number ( pulsePort ) <<endl; - } - else - { - pulseCookieArg="auth-cookie="+ - QDir::toNativeSeparators (wapiShortFileName( pulseBaseDir))+ - "\\.pulse-cookie"; - // Double backslashes are required in config.pa - pulseCookieArg.replace("\\", "\\\\"); - out << "load-module module-native-protocol-tcp port="+ - QString::number ( pulsePort )+" "+pulseCookieArg <<endl; - } - out << "load-module module-esound-protocol-tcp port="+ - QString::number ( esdPort ) <<endl; - out << "load-module module-waveout"; -#ifdef Q_OS_WIN - if(pulseNoRecord) - out << " record=0"; -#endif - out << endl; - file.close(); - pulseServer=new QProcess ( 0 ); - pulseServer->setEnvironment ( pEnv ); - pulseArgs.clear(); -#ifdef Q_OS_WIN - // FIXME: Explain why this dir needs to be created. - pulseRuntimeDir=pulseBaseDir+"/.pulse/"+QHostInfo::localHostName ()+"-runtime"; - QDir drr(pulseRuntimeDir); - if (!drr.exists()) - drr.mkpath(drr.path()); - if (QFile::exists(pulseRuntimeDir+"/pid")) - QFile::remove(pulseRuntimeDir+"/pid"); - - pulseDir=QDir::toNativeSeparators( pulseDir ); - pulseArgs<<"--exit-idle-time=-1"<<"-n"<<"-F"<<pulseDir+"\\config.pa"; - if (debugging) - pulseArgs<<"--log-level=debug"<<"--verbose"<<"--log-target=file:"+pulseDir+"\\pulse.log"; - /* - Fix for x2goclient bug #526. - Works Around PulseAudio bug #80772. - Tested with PulseAudio 5.0. - This argument will not cause PulseAudio 0.9.6 or 1.1 (the legacy versions) - to fail to launch. - However, 0.9.6 defaults to normal priority anyway, - and 1.1 ignores it for some reason. - So yes, the fact that 1.1 ignores it would be a bug in x2goclient if we - ever ship 1.1 again. - */ - if (QSysInfo::WindowsVersion == QSysInfo::WV_XP || - QSysInfo::WindowsVersion == QSysInfo::WV_2003 ) - { - x2goDebug<<"Windows XP or Server 2003 (R2) detected."; - x2goDebug<<"Setting PulseAudio to \"normal\" CPU priority."; - pulseArgs<<"--high-priority=no"; - } -#else - pulseArgs<<"--exit-idle-time=-1"<<"-n"<<"-F"<<pulseDir+"/config.pa"; -#endif - pulseServer->setWorkingDirectory ( QDir::toNativeSeparators ( - wapiShortFileName ( appDir+"/pulse/" ) ) ); - pulseServer->start ( "pulse\\pulseaudio.exe",pulseArgs ); - - x2goDebug<<"Starting pulse\\pulseaudio.exe "<<pulseArgs.join ( " " ) << - " working dir: "<< - QDir::toNativeSeparators ( wapiShortFileName ( appDir+"/pulse" ) ); - - pulseTimer=new QTimer(this); - - connect (pulseTimer, SIGNAL(timeout()), this, SLOT(slotCheckPulse())); - x2goDebug<<"Connected timer."; - pulseTimer->start(2000); - pulseStarted=true; -} - -void ONMainWindow::slotCheckPulse() -{ - //restart pulse server - if(pulseServer->state()!=QProcess::Running) - { - pulseServer->start ( "pulse\\pulseaudio.exe",pulseArgs ); - - x2goDebug<<"Restarting pulse\\pulseaudio.exe "<<pulseArgs.join ( " " ); - - } -} - // #ifdef CFGCLIENT void ONMainWindow::xorgSettings() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index e0e4d26..7430bb4 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -52,6 +52,11 @@ #include <windows.h> #include <QSysInfo> #endif + +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) +#include "pulsemanager.h" +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ + /** @author Oleksandr Shneyder */ @@ -248,7 +253,7 @@ class ONMainWindow; class WinServerStarter: public QThread { public: - enum daemon {X,SSH,PULSE}; + enum daemon {X,SSH}; WinServerStarter ( daemon server, ONMainWindow * par ); void run(); private: @@ -583,7 +588,6 @@ public: #ifdef Q_OS_WIN static QString cygwinPath ( const QString& winPath ); void startXOrg(); - void startPulsed(); static bool haveCygwinEntry(); static void removeCygwinEntry(); static QString U3DevicePath() @@ -839,14 +843,7 @@ private: PROCESS_INFORMATION sshd; bool winSshdStarted; static QString u3Device; - bool pulseStarted; - - QString pulseVersionTestOutput; - QProcess* pulseVersionTest; - bool pulseVersionIsLegacy; - QProcess* pulseServer; - QStringList pulseArgs; - QTimer* pulseTimer; + int xDisplay; int sshdPort; bool winServersReady; @@ -856,14 +853,6 @@ private: bool cyEntry; - QString pulseDir; - QString pulseBaseDir; - QString pulseRuntimeDir; - QString pulseCookieArg; - int pulsePort; - bool pulseNoRecord; - - int esdPort; bool maximizeProxyWin; int proxyWinWidth; int proxyWinHeight; @@ -876,6 +865,12 @@ private: QTextEdit* stInfo; int localDisplayNumber; +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) + QThread *pulseManagerThread; + PulseManager *pulseManager; +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ + + SVGFrame* ln; int tunnel; int sndTunnel; @@ -1019,9 +1014,14 @@ private slots: void startWinServers(); void slotCheckXOrgLog(); void slotCheckXOrgConnection(); - void slotCheckPulse(); void slotStartParec (); #endif + +#if defined (Q_OS_DARWIN) || defined (Q_OS_WIN) +private slots: + void pulseManagerWrapper (); +#endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ + private slots: void slotAppDialog(); void slotShowPassForm(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit dac6c9b7043cf1437a06bb5e1b67bd596bda6aa7 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 7e0be36..85eff85 100644 --- a/debian/changelog +++ b/debian/changelog @@ -258,6 +258,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 d41be64c5474dc8c9bf998ab7d31151cd3308200 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 85eff85..2d71b1a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -260,6 +260,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 356f8186b937e339aa4b2a7c59c3a5be2bed6eef 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 2d71b1a..0ead0be 100644 --- a/debian/changelog +++ b/debian/changelog @@ -262,6 +262,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 b1b2f3ab0d04eb12eaa92b9e2aff307ddeaf57ce 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 0ead0be..587d950 100644 --- a/debian/changelog +++ b/debian/changelog @@ -264,6 +264,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 83e1250..ac78b00 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5073,10 +5073,10 @@ void ONMainWindow::slotRetResumeSess ( bool result, switch (sndSystem) { case PULSE: - sndPort = QString::number (pulseManager->getPulsePort ()); + sndPort = QString::number (pulseManager->get_pulse_port ()); break; case ESD: - sndPort = QString::number (pulseManager->getEsdPort ()); + sndPort = QString::number (pulseManager->get_esd_port ()); break; } #endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 40e65cf0712c0a8eea2dd6bd439bfcda5ce9f002 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 587d950..0cdc05a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -266,6 +266,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 dd938ff0533f5eb7aea6f53aedf08251c3d27eee 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 0cdc05a..53e5408 100644 --- a/debian/changelog +++ b/debian/changelog @@ -268,6 +268,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 ac78b00..a0c709e 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 54ad7590b27bc804367f044d8c9b5235c675fde3 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 53e5408..0543d63 100644 --- a/debian/changelog +++ b/debian/changelog @@ -269,6 +269,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 a0c709e..1aa05fd 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5305,7 +5305,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, "/.pulse-cookie", this, SLOT ( slotPCookieReady ( bool, QString,int ))); } #else /* !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN) */ - QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir () + + QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir ().absolutePath () + "/.pulse-cookie").absolutePath ()); QString destFile="$HOME/.x2go/C-"+ resumingSession.sessionId+ @@ -5322,7 +5322,7 @@ void ONMainWindow::slotRetResumeSess ( bool result, sshConnection->copyFile(homeDir+"/.esd_auth", "$HOME/.esd_auth" ); #else /* defined (Q_OS_LINUX) */ - QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir () + + QString cooFile = QDir::toNativeSeparators (QDir (pulseManager->get_pulse_dir ().absolutePath () + "/.esd_auth").absolutePath ()); QString destFile="$HOME/.esd_auth"; sshConnection->copyFile(cooFile, -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0e74224ec09c440a30e331d98a320c3a79b2b7b0 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 0543d63..31e80c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -271,6 +271,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 1aa05fd..28863f2 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -5067,7 +5067,11 @@ void ONMainWindow::slotRetResumeSess ( bool result, true ).toBool(); #if defined (Q_OS_WIN) || defined (Q_OS_DARWIN) - if ((sound) && (!(pulseManager->is_server_running ()))) { + if (sound) { + /* + * PulseManager::start () can be called even if the server + * is already started. In this case, it will do nothing. + */ pulseManager->start (); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4fe9b79e8eb989501c789784b0f9a65ee3ef7107 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 31e80c4..336fc48 100644 --- a/debian/changelog +++ b/debian/changelog @@ -273,6 +273,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 71725cdde1beb497206e14f88fb92b9d4909be3d 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 336fc48..c838953 100644 --- a/debian/changelog +++ b/debian/changelog @@ -274,6 +274,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 e52ead3287e0a75f29c614fae3fece898d46e5fc 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 c838953..da0206f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -276,6 +276,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 fbc3f2fe3746b8711f0f312391478dc1e0f5d2d4 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 da0206f..df3876c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -277,6 +277,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 7fc4f34a4ea875f27f8ca6ecd0185870916b5fda 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 df3876c..895ede8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -278,6 +278,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 28863f2..178d1a2 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -2129,7 +2129,12 @@ void ONMainWindow::slotConfig() (QVariant) false).toBool (); if (oldDisableInput != newDisableInput) { - pulseManager->set_record (!newDisableInput); + bool ret = pulseManager->set_record (!newDisableInput); + + if (!ret) { + x2goDebug << "Failed to change recording status of PulseManager. PulseAudio not started?" << endl; + } + pulseManager->restart (); } #endif /* defined (Q_OS_WIN) || defined (Q_OS_DARWIN) */ @@ -6497,6 +6502,8 @@ void ONMainWindow::pulseManagerWrapper () { pulseManagerThread = new QThread (0); pulseManager = new PulseManager (); + pulseManager->set_debug (debugging); + pulseManager->moveToThread (pulseManagerThread); /* -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1bad3570593340bd55e4fd02f1f5cf7fe685bee9 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 895ede8..57e3354 100644 --- a/debian/changelog +++ b/debian/changelog @@ -279,6 +279,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 5209a1fa0e109e187a32ffb8049e51c9ea279dd8 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 57e3354..36d2370 100644 --- a/debian/changelog +++ b/debian/changelog @@ -281,6 +281,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 e12bf04d7d2a2c056e6d7d5dd3b3acba509707e0 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 36d2370..7914b90 100644 --- a/debian/changelog +++ b/debian/changelog @@ -283,6 +283,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 377eb4f9baf2c73b364f467368d726b286f37c67 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 985410e..034bf5e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -287,6 +287,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 c7de173d43fe46f1ecbaa0a9b8b541fd1a808b18 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 7914b90..985410e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -285,6 +285,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 33f98d3937e1139fc02148e6cb32282b88797d13 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 034bf5e..15061ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -288,6 +288,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 291d340465762e7d4381bf0108e5b2067b244097 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 15061ae..d8c59f8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -289,6 +289,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 4db2981b0c7deffd77493ac64638e3c1b6807630 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 d8c59f8..f651ad6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -290,6 +290,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 a179f60ca8293a1328db80daf32a5d04b5287ff0 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 f651ad6..61c5f12 100644 --- a/debian/changelog +++ b/debian/changelog @@ -291,6 +291,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 0f4d3b2b8526969af3ce123d4e4df11dbc8b4810 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 61c5f12..4301ff1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -293,6 +293,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 79351a07267a489281c5d173734218ea6b5973f2 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 4301ff1..0173594 100644 --- a/debian/changelog +++ b/debian/changelog @@ -296,6 +296,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 62441b87016b686230e3c20714cc29c2075b1dbf 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 0173594..3182e42 100644 --- a/debian/changelog +++ b/debian/changelog @@ -299,6 +299,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 0708f1c548af202792823f7dd988f06ef7f4a95b 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 3182e42..3d03dfd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -301,6 +301,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 02fb1bf64b9df94e925908df797f0349976275ee 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 3d03dfd..172ddfa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -303,6 +303,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 b5c1502e31d29736902a7c782fbee6f383dc5ef3 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 172ddfa..6a7f92b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -304,6 +304,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 693a415454c39713d7a0d2a3c99ff4544f203b8d 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 6a7f92b..017e024 100644 --- a/debian/changelog +++ b/debian/changelog @@ -307,6 +307,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 5f5bffec02726fa1cb5506e3d26f7b567947a636 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 017e024..c7e1753 100644 --- a/debian/changelog +++ b/debian/changelog @@ -309,6 +309,9 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium start binaries like paplay. - src/pulsemanager.cpp: don't remove PA config and log file in ~/.x2go/pulse on PA shutdown if debugging has been requested. + - src/x2goutils.{cpp,h}: add new function find_binary (). Searches for a + specific binary in a colon-separated list of paths. Really just a compat + function, as Qt 5 includes QStandardPaths::findExecutable (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 31ac3ac..16ed06e 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -24,6 +24,7 @@ #include <QFont> #include <QFontInfo> #include <QObject> +#include <QStringList> #include "x2goutils.h" #include "onmainwindow.h" @@ -282,4 +283,40 @@ QString add_to_path (const QString &orig_path, const QStringList &add, const boo return (ret); } + +QString find_binary (const QString &path, const QString &binary_name) { + QString ret = ""; + + if (!(binary_name.isEmpty ())) { + QString cur_path = ""; + QString tmp_path = path; + + if (!(path.isEmpty ())) { + tmp_path = "./"; + } + + QStringList path_list = tmp_path.split (":"); + + for (QStringList const_it = path_list.constBegin (); const_it != path_list.constEnd (); ++const_it) { + cur_path = *const_it; + + if (cur_path.isEmpty ()) { + cur_path = "./"; + } + + cur_path = QDir (cur_path).absolutePath (); + + cur_path += "/" + binary_name; + + QFileInfo tmp_file_info = QFileInfo (cur_path); + + if ((tmp_file_info.exists ()) && (tmp_file_info.isExecutable ())) { + ret = tmp_file_info.canonicalFilePath (); + break; + } + } + } + + return (ret); +} #endif /* defined (Q_OS_DARWIN) */ diff --git a/src/x2goutils.h b/src/x2goutils.h index e36203e..4159d39 100644 --- a/src/x2goutils.h +++ b/src/x2goutils.h @@ -57,6 +57,14 @@ void show_XQuartz_generic_error (const QString &main_error, const QString &addit * Ex.: <add_entry1>:<add_entry2>:...:<orig_path> */ QString add_to_path (const QString &orig_path, const QStringList &add, const bool back = true); + +/* + * Returns the first existing path that contains binary_name. + * Iff no component contains a binary called binary_name, an empty path is returned. + * + * Iff path is empty, (only) the current working dir is searched. + */ +QString find_binary (const QString &path, const QString &binary_name); #endif /* defined (Q_OS_DARWIN) */ #endif /* !defined (X2GOUTILS_H) */ -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 53cc2aca8797bb9aa76ec44789d7da33d3557cb4 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 c7e1753..89fee86 100644 --- a/debian/changelog +++ b/debian/changelog @@ -312,6 +312,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 0a746c65b78d742c045da264b59a2f718f99d3d7 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 89fee86..44749f0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -314,6 +314,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 a3c4e59ba5525f36097b527da082f4ffb3c22046 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 44749f0..c045248 100644 --- a/debian/changelog +++ b/debian/changelog @@ -315,6 +315,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 fbeadb1cc10ae3a7926b497f824c6636e42b9259 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 c045248..e6b62e5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -317,6 +317,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: add comments to Qt 4 code part. - src/pulsemanager.cpp: add reminder for Linux-implementation in play_startup_sound (). + - src/x2goutils.cpp: fix compile error. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 16ed06e..eebd05c 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -297,7 +297,7 @@ QString find_binary (const QString &path, const QString &binary_name) { QStringList path_list = tmp_path.split (":"); - for (QStringList const_it = path_list.constBegin (); const_it != path_list.constEnd (); ++const_it) { + for (QStringList::const_iterator const_it = path_list.constBegin (); const_it != path_list.constEnd (); ++const_it) { cur_path = *const_it; if (cur_path.isEmpty ()) { -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit ac44b656452e5d054600b249f88674c5f0af4403 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 e6b62e5..cc7785b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -318,6 +318,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 08d92ce2e64a9f6ea0ccf817ce9b68388e6481f1 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 cc7785b..b63bcde 100644 --- a/debian/changelog +++ b/debian/changelog @@ -320,6 +320,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 8ece39ec0b83bd0c6547359d4b51be6a3245f94d 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 b63bcde..c3f265a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -322,6 +322,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium a system PA binary shall be used. - src/pulsemanager.cpp: correctly initialize and set system_pulse_ when required. + - src/x2goutils.{cpp,h}: add application modality parameter to + show_RichText_Generic_MsgBox () and its wrappers. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index eebd05c..ab109c1 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -94,7 +94,7 @@ QString convert_to_rich_text (const QString &text, bool force) { return (fixup_text); } -void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_text, const QString &informative_text) { +void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_text, const QString &informative_text, bool app_modal) { QString fixup_main_text (convert_to_rich_text (main_text)); QString fixup_informative_text (convert_to_rich_text (informative_text, true)); @@ -102,16 +102,23 @@ void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_t msg_box.setTextFormat (Qt::RichText); msg_box.setInformativeText (fixup_informative_text); - msg_box.setWindowModality (Qt::WindowModal); + + if (app_modal) { + msg_box.setWindowModality (Qt::ApplicationModal); + } + else { + msg_box.setWindowModality (Qt::WindowModal); + } + msg_box.exec (); } -void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text) { - show_RichText_Generic_MsgBox (QMessageBox::Warning, main_text, informative_text); +void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text bool app_modal) { + show_RichText_Generic_MsgBox (QMessageBox::Warning, main_text, informative_text, app_modal); } -void show_RichText_ErrorMsgBox (const QString &main_text, const QString &informative_text) { - show_RichText_Generic_MsgBox (QMessageBox::Critical, main_text, informative_text); +void show_RichText_ErrorMsgBox (const QString &main_text, const QString &informative_text, bool app_modal) { + show_RichText_Generic_MsgBox (QMessageBox::Critical, main_text, informative_text, app_modal); } QString git_changelog_extract_commit_sha (const QString &gitlog) { diff --git a/src/x2goutils.h b/src/x2goutils.h index 4159d39..dd7613c 100644 --- a/src/x2goutils.h +++ b/src/x2goutils.h @@ -33,9 +33,9 @@ QString wrap_legacy_resource_URIs (const QString &res_path); QString convert_to_rich_text (const QString &text, bool force = false); -void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_text, const QString &informative_text); -void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text = ""); -void show_RichText_ErrorMsgBox (const QString &main_text, const QString &informative_text = ""); +void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_text, const QString &informative_text, bool app_modal = false); +void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text = "", bool app_modal = false); +void show_RichText_ErrorMsgBox (const QString &main_text, const QString &informative_text = "", bool app_modal = false); QString git_changelog_extract_commit_sha (const QString &gitlog); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 96d55eb05cb317f36fb14570c639fd74d8e3be33 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 c3f265a..3b09860 100644 --- a/debian/changelog +++ b/debian/changelog @@ -324,6 +324,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 656181127aafe5ea492918d4f803ca8388b211bf 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 3b09860..26a8c83 100644 --- a/debian/changelog +++ b/debian/changelog @@ -326,6 +326,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium show_RichText_Generic_MsgBox () and its wrappers. - src/pulsemanager.cpp: add error message boxes throughout PulseManager. Don't just abort () the program. + - src/x2goutils.h: fix compile error due to typo. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index ab109c1..25a2b54 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -113,7 +113,7 @@ void show_RichText_Generic_MsgBox (QMessageBox::Icon icon, const QString &main_t msg_box.exec (); } -void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text bool app_modal) { +void show_RichText_WarningMsgBox (const QString &main_text, const QString &informative_text, bool app_modal) { show_RichText_Generic_MsgBox (QMessageBox::Warning, main_text, informative_text, app_modal); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit adeae2c5587231c7916e229f018693d068d360d6 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 26a8c83..1078057 100644 --- a/debian/changelog +++ b/debian/changelog @@ -316,7 +316,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 066979b99a379dec05325ecd2e8f28b80202ef45 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 1078057..b3325e3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -327,6 +327,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 6c3894133caf6b43c8887a5e2b0cf2e4c13a5de7 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 b3325e3..f2ebc71 100644 --- a/debian/changelog +++ b/debian/changelog @@ -328,6 +328,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 d19c57049c22e8975d9807c1ab563429a89d6c19 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 f2ebc71..8697d40 100644 --- a/debian/changelog +++ b/debian/changelog @@ -329,6 +329,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 6d8fe09d2355bfc09d4db644b9b1228f5baed72f 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 8697d40..8553822 100644 --- a/debian/changelog +++ b/debian/changelog @@ -331,6 +331,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 99be9da28b62294eba2d03b2e6b9832bcdf6d1e0 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 8553822..e9fcfa0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -332,6 +332,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 21c83815c1ca5448518720df93a3adaca990372d 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 4e7baa1..d284ac3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -335,6 +335,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/pulsemanager.cpp: remove extraneous newlines from debug output. - src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the given path to CWD iff it's actually empty. Not the other way around. + - src/x2goutils.cpp: add some debug logging to find_binary (). [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 45c31df..9612b12 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -321,6 +321,10 @@ QString find_binary (const QString &path, const QString &binary_name) { ret = tmp_file_info.canonicalFilePath (); break; } + else { + x2goDebug << "Binary at " << cur_path << " either does not exist (" << !(tmp_file_info.exists ()) + << ") or is not executable (" << tmp_file_info.isExecutable () << ")"; + } } } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f85df365ff64df7e31c8bc9e66e8cac0297903f9 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 e9fcfa0..4e7baa1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -333,6 +333,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium system-PA version. - src/pulsemanager.cpp: add warning message boxes where appropriate. - src/pulsemanager.cpp: remove extraneous newlines from debug output. + - src/x2goutils.cpp: fix faulty logic in find_binary (): only reset the + given path to CWD iff it's actually empty. Not the other way around. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/x2goutils.cpp b/src/x2goutils.cpp index 25a2b54..45c31df 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -298,7 +298,7 @@ QString find_binary (const QString &path, const QString &binary_name) { QString cur_path = ""; QString tmp_path = path; - if (!(path.isEmpty ())) { + if (path.isEmpty ()) { tmp_path = "./"; } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c34d7d73a878fc87aef5c002c9626363967b8cc4 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 496d034..82c59b5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -337,6 +337,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 b7ded10db079c082031b3adc03e4f59ede184a94 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 d284ac3..496d034 100644 --- a/debian/changelog +++ b/debian/changelog @@ -336,6 +336,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 c53c77b96c3930ad8f41cc0da6eca5c5c7e4f61d 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 495f248..0ae9faf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -342,6 +342,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 178d1a2..8c24396 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8287,8 +8287,13 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output, /* * Do the user SSHD/global SSHD dance here and either use the * private .x2go/.ssh or the global .ssh dir. + * + * Note: Windows is implicitly always using an user-mode SSH server. */ - if (userSshd) { +#ifndef Q_OS_WIN + if (userSshd) +#endif /* !defined (Q_OS_WIN) */ + { authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); } @@ -9565,15 +9570,23 @@ void ONMainWindow::startX2goMount() /* * Do the user SSHD/global SSHD dance here and either use the * private .x2go/.ssh or the global .ssh dir. + * + * Note: Windows is implicitly always using an user-mode SSH server. */ - if (userSshd) { +#ifndef Q_OS_WIN + if (userSshd) +#endif /* !defined (Q_OS_WIN) */ + { authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); } authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); - if (userSshd) { +#ifndef Q_OS_WIN + if (userSshd) +#endif /* !defined (Q_OS_WIN) */ + { x2goDebug << "Creating dir " << authorized_keys_dir.absolutePath (); authorized_keys_dir.mkpath (authorized_keys_dir.absolutePath ()); } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 840c3e4e0510c8a4e08a5e6baa8ae6f97a8a3763 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 82c59b5..495f248 100644 --- a/debian/changelog +++ b/debian/changelog @@ -340,6 +340,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 3d3c3c0bcfb700eafe9753642f7140c8a6025a7f 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 0e689d7..fd1a15c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -350,6 +350,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium initialization in Windows-only code. - src/onmainwindow.cpp: 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 a19b7f8..cd91a49 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9829,7 +9829,7 @@ bool ONMainWindow::isServerRunning ( int port ) int iResult; WSADATA wsaData; - struct in_addr addr = { 0 }; + struct in_addr addr = {{ 0 }}; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 4caf52966730fcceaa9ec221c1b76d65405b842f 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 0ae9faf..765d923 100644 --- a/debian/changelog +++ b/debian/changelog @@ -346,6 +346,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 8c24396..35685ab 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 bf97588a1545bc48822f26114dfbe240dac57cad 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 765d923..0e689d7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -348,6 +348,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 35685ab..a19b7f8 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 d88ff85c2eaa2b356aaae9efe0c14d58abe18671 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 4183291..d2da1f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -358,6 +358,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 adff82b5af7c283da18798b5826af9341abdbb4d 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 fc6e47a..3173153 100644 --- a/debian/changelog +++ b/debian/changelog @@ -354,6 +354,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 774ba60..c32f30b 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9829,7 +9829,7 @@ bool ONMainWindow::isServerRunning ( int port ) int iResult; WSADATA wsaData; - struct in_addr addr = {{ 0 }}; + struct in_addr addr = {{ }}; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 0b35d1b0b7799fad4a43dbabcf217e512ee20cd6 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 fd1a15c..fc6e47a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -352,6 +352,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 cd91a49..774ba60 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10268,7 +10268,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 b17a7cfae156484ac52fde88ac25fcd9fde529a8 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 3173153..4183291 100644 --- a/debian/changelog +++ b/debian/changelog @@ -357,6 +357,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 00005e241c6ef1531972184ea79392c5bd33b7ca 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 d2da1f9..af54a4c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -364,6 +364,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 c67e225e5bb6d5efb1ede13bc49e3f63af77c2f8 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 c4ea773..dc8c138 100644 --- a/debian/changelog +++ b/debian/changelog @@ -371,6 +371,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 83eaf7460d4f06be4251404d618d5dd4750822ce 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 dc8c138..99cce54 100644 --- a/debian/changelog +++ b/debian/changelog @@ -373,6 +373,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 33d00762f8a67deef599b2d9b186409cea28caf3 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 af54a4c..38299a3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -368,6 +368,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 f6a374b92ac43cfd1dc933f7a220181111ef89ed 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 38299a3..65bc015 100644 --- a/debian/changelog +++ b/debian/changelog @@ -369,6 +369,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 8606fbd0d537c6b1eb8034bd2bcdfceaa33e6ee2 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 65bc015..c4ea773 100644 --- a/debian/changelog +++ b/debian/changelog @@ -370,6 +370,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 108eacb709d057fc1c93905737f4fc60dd109633 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 f99af00..91b0069 100644 --- a/debian/changelog +++ b/debian/changelog @@ -379,6 +379,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 0b835a6eaa88ea975335e2370151fc013b121f9d 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 99cce54..e660184 100644 --- a/debian/changelog +++ b/debian/changelog @@ -377,6 +377,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 46c198059b794e0efc5a95e464b1775ff3fa84af 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 e660184..f99af00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -378,6 +378,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 de911ef72d42b546148d8ba3b44b4ae2ef25937e 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 91b0069..5934565 100644 --- a/debian/changelog +++ b/debian/changelog @@ -380,6 +380,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 c32f30b..dc2036c 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8079,6 +8079,33 @@ void ONMainWindow::exportDefaultDirs() QString ONMainWindow::createRSAKey() { + /* + * I spent multiple hours on trying to understand this function + * and directory exporting in general, so I'd better document + * this. + * + * This function first generates a new RSA private-public key + * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. + * + * Then, the SSH daemon's public host key is read and appended + * to the *private* SSH key file after a marker looking like + * this: "----BEGIN RSA IDENTITY----" + * + * Later on, this *private* SSH key file is transferred to the + * remote server, which parses it in the "x2gomountdirs" perl + * script and extracts the public key (used for logging in + * to the client machine) and the public *host* key, used to + * circumvent the "untrusted host" message by SSH by + * explicitly giving the aforementioned public *host* key as + * the only element in a fake "authorized_keys" file. Again, + * this is all happening server-side. + * + * The *public* key part generated here is then taken and + * later added to the "authorized_keys" file on the client + * side, to allow auto-logins via the generated and transferred + * private SSH key. + */ + QDir dr; QString keyPath=homeDir +"/.x2go/ssh/gen"; dr.mkpath ( keyPath ); @@ -8094,6 +8121,9 @@ QString ONMainWindow::createRSAKey() QStringList args; + /* + * Generating new key material here. + */ args<<"-t"<<"rsa"<<"-b"<<"1024"<<"-N"<<""<<"-f"<<keyName<<"-q"; x2goDebug<<"ssh-keygen " + args.join(" "); @@ -8106,6 +8136,9 @@ QString ONMainWindow::createRSAKey() x2goDebug<<"ssh-keygen succeeded."; + /* + * Now taking the *host* pub key here... + */ QFile rsa ( "/etc/ssh/ssh_host_rsa_key.pub" ); #ifdef Q_OS_WIN rsa.setFileName ( -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 524291671f17f04818281bce804fd8f014a0f7b6 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 5934565..ac76cfc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -382,6 +382,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 dc2036c..1f4ff6f 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10322,26 +10322,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) { @@ -10368,6 +10375,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 ac4631b2489cb814c7bf4d70d49121c390a71fa7 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 ac76cfc..1cb9aca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -385,6 +385,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 1f4ff6f..f083e1c 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8174,7 +8174,7 @@ QString ONMainWindow::createRSAKey() if ( !rsa.open ( QIODevice::ReadOnly | QIODevice::Text ) ) { #if defined (Q_OS_LINUX) || defined (Q_OS_DARWIN) - generateHostKey (RSA_KEY_TYPE); + generateKey (RSA_KEY_TYPE, true); generateEtcFiles (); if (!startSshd ()) { @@ -10139,7 +10139,7 @@ void ONMainWindow::startWinServers() { dr.mkpath ( etcDir ); - generateHostKey(RSA_KEY_TYPE); + generateKey(RSA_KEY_TYPE, true); generateEtcFiles(); sshStarter->start(); } @@ -10318,7 +10318,7 @@ void ONMainWindow::generateEtcFiles() x2goDebug<<etcDir +"/sshd_config created."; } -void ONMainWindow::generateHostKey(ONMainWindow::key_types key_type) +void ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; QString stringified_key_type = ""; diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 7430bb4..ae5d22d 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1205,7 +1205,7 @@ private: #endif void filterDesktops ( const QString& filter, bool strict=false ); - void generateHostKey(key_types key_type); + void generateKey(key_types key_type, bool host_key = false); void generateEtcFiles(); QString u3DataPath(); void cleanPortable(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 12b0501dbc61df068cb74ec3083c84bec099a4f3 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 1cb9aca..4e4f4ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -388,6 +388,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 f083e1c..41ca735 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10357,21 +10357,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 1af7917c0ea2e7fdc096cd88ef3f6019153e7807 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 6790b8c..49d191b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -396,6 +396,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 69a3e4b..3b9f7c8 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10349,6 +10349,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 (); } } @@ -10412,7 +10413,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 9bec54f05aac44f7df5e43cc0b854a45450c3aa2 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 4e4f4ae..6790b8c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -390,6 +390,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 41ca735..69a3e4b 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8106,35 +8106,7 @@ QString ONMainWindow::createRSAKey() * private SSH key. */ - QDir dr; - QString keyPath=homeDir +"/.x2go/ssh/gen"; - dr.mkpath ( keyPath ); -#ifdef Q_OS_WIN - keyPath=wapiShortFileName ( keyPath ); -#endif - QTemporaryFile fl ( keyPath+"/key" ); - fl.open(); - QString keyName=fl.fileName(); - fl.setAutoRemove ( false ); - fl.close(); - fl.remove(); - - QStringList args; - - /* - * Generating new key material here. - */ - args<<"-t"<<"rsa"<<"-b"<<"1024"<<"-N"<<""<<"-f"<<keyName<<"-q"; - - x2goDebug<<"ssh-keygen " + args.join(" "); - - if ( QProcess::execute ( "ssh-keygen",args ) !=0 ) - { - x2goDebug<<"ssh-keygen failed." <<endl; - return QString::null; - } - x2goDebug<<"ssh-keygen succeeded."; - + QString user_key = generateKey (RSA_KEY_TYPE); /* * Now taking the *host* pub key here... @@ -8174,14 +8146,14 @@ QString ONMainWindow::createRSAKey() if ( !rsa.open ( QIODevice::ReadOnly | QIODevice::Text ) ) { #if defined (Q_OS_LINUX) || defined (Q_OS_DARWIN) - generateKey (RSA_KEY_TYPE, true); + QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); generateEtcFiles (); if (!startSshd ()) { return (QString::null); } - rsa.setFileName ( homeDir+"/.x2go/etc/ssh_host_rsa_key.pub" ); + rsa.setFileName (tmp_file_name + ".pub"); rsa.open ( QIODevice::ReadOnly | QIODevice::Text ); #else printSshDError_noHostPubKey(); @@ -8199,18 +8171,18 @@ QString ONMainWindow::createRSAKey() return QString::null; } - QFile file ( keyName ); + QFile file ( user_key ); if ( !file.open ( QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append ) ) { - x2goErrorf(10)<<tr("Cannot open key: ")<<keyName; - return keyName; + x2goErrorf(10) << tr ("Cannot open key: ") << user_key; + return user_key; } QTextStream out ( &file ); out<<"----BEGIN RSA IDENTITY----"<<rsa_pub; file.close(); - return keyName; + return user_key; } void ONMainWindow::slotCopyKey ( bool result, QString output, int pid) @@ -10139,7 +10111,7 @@ void ONMainWindow::startWinServers() { dr.mkpath ( etcDir ); - generateKey(RSA_KEY_TYPE, true); + UNUSED (generateKey (RSA_KEY_TYPE, true)); generateEtcFiles(); sshStarter->start(); } @@ -10318,11 +10290,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; @@ -10352,28 +10325,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" @@ -10381,11 +10409,13 @@ void ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) << "-N" << "" << "-C" - << QString ("X2Go Client " + stringified_key_type + "host key") + << comment << "-f" << private_key_file; QProcess::execute ("ssh-keygen", args); } + + return (ret); } bool ONMainWindow::startSshd() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index ae5d22d..2741ec2 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1205,7 +1205,7 @@ private: #endif void filterDesktops ( const QString& filter, bool strict=false ); - void generateKey(key_types key_type, bool host_key = false); + QString generateKey(key_types key_type, bool host_key = false); void generateEtcFiles(); QString u3DataPath(); void cleanPortable(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8b55cda762d286e4fa33702c1754a54089b78691 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 49d191b..5cf8a4e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -398,6 +398,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 3b9f7c8..3fe3742 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8273,7 +8273,7 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output, QMessageBox::NoButton ); } QFile file ( key+".pub" ); - x2goDebug<<"Deactivating public key from "<<key<<".pub again."<<endl; + x2goDebug << "Deactivating public key from " << QString (key + ".pub") << " again."; if ( !file.open ( QIODevice::ReadOnly | QIODevice::Text ) ) { printSshDError_noExportPubKey(); @@ -9658,7 +9658,7 @@ void ONMainWindow::startX2goMount() out << line; authorized_keys_file.close (); - x2goDebug << "Temporarily activated public key from file " << fsExportKey << ".pub."; + x2goDebug << "Temporarily activated public key from file " << QString (fsExportKey + ".pub") << "."; QString passwd=getCurrentPass(); QString user=getCurrentUname(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 31dd70db8ef0569d1097bf508e41e2e63eb6840e 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 5cf8a4e..73bf835 100644 --- a/debian/changelog +++ b/debian/changelog @@ -399,6 +399,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 3fe3742..737a6da 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -151,7 +151,6 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) X2goSettings st ( "settings" ); winSshdStarted=false; #else - userSshd=false; sshd=0l; #endif @@ -1516,7 +1515,7 @@ void ONMainWindow::closeClient() #endif /* defined (Q_OS_DARWIN) || defined (Q_OS_WIN) */ #ifndef Q_OS_WIN - if ( userSshd && sshd ) + if (sshd) { x2goDebug<<"Terminating the OpenSSH server ..."; sshd->terminate(); @@ -1645,11 +1644,6 @@ void ONMainWindow::loadSettings() ldapPort2=st1.setting()->value ( "LDAP/port2", ( QVariant ) 0 ).toInt(); } -#ifndef Q_OS_WIN - if ( !userSshd ) - clientSshPort=st1.setting()->value ( "clientport", - ( QVariant ) 22 ).toString(); -#endif showToolBar=st1.setting()->value ( "toolbar/show", ( QVariant ) true ).toBool(); @@ -8111,52 +8105,26 @@ QString ONMainWindow::createRSAKey() /* * Now taking the *host* pub key here... */ - QFile rsa ( "/etc/ssh/ssh_host_rsa_key.pub" ); + QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); #ifdef Q_OS_WIN - rsa.setFileName ( - wapiShortFileName ( - homeDir+"\\.x2go\\etc\\ssh_host_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 } @@ -8286,21 +8254,8 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output, file.close(); QDir authorized_keys_dir (homeDir); + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/.ssh/"); - /* - * Do the user SSHD/global SSHD dance here and either use the - * private .x2go/.ssh or the global .ssh dir. - * - * Note: Windows is implicitly always using an user-mode SSH server. - */ -#ifndef Q_OS_WIN - if (userSshd) -#endif /* !defined (Q_OS_WIN) */ - { - authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); - } - - authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); /* @@ -9569,30 +9524,12 @@ void ONMainWindow::startX2goMount() file.close(); QDir authorized_keys_dir (homeDir); + authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/.ssh/"); - /* - * Do the user SSHD/global SSHD dance here and either use the - * private .x2go/.ssh or the global .ssh dir. - * - * Note: Windows is implicitly always using an user-mode SSH server. - */ -#ifndef Q_OS_WIN - if (userSshd) -#endif /* !defined (Q_OS_WIN) */ - { - authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.x2go/"); - } - - authorized_keys_dir = QDir (authorized_keys_dir.absolutePath () + "/.ssh/"); QFile authorized_keys_file (authorized_keys_dir.absolutePath () + "/authorized_keys"); -#ifndef Q_OS_WIN - if (userSshd) -#endif /* !defined (Q_OS_WIN) */ - { - x2goDebug << "Creating dir " << authorized_keys_dir.absolutePath (); - authorized_keys_dir.mkpath (authorized_keys_dir.absolutePath ()); - } + x2goDebug << "Potentially creating dir " << authorized_keys_dir.absolutePath (); + authorized_keys_dir.mkpath (authorized_keys_dir.absolutePath ()); x2goDebug << "Potentially creating file " << authorized_keys_file.fileName (); if (!authorized_keys_file.open (QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { @@ -9669,7 +9606,11 @@ void ONMainWindow::startX2goMount() QString cuser; -#ifndef Q_WS_HILDON +#ifdef Q_WS_HILDON + cuser="user"; +#elif defined (Q_OS_WIN) + cuser=wapiGetUserName(); +#else for ( int i=0; i<env.size(); ++i ) { QStringList ls=env[i].split ( "=" ); @@ -9680,11 +9621,6 @@ void ONMainWindow::startX2goMount() break; } } -#else - cuser="user"; -#endif -#ifdef Q_OS_WIN - cuser=wapiGetUserName(); #endif QString cmd; QString dirs=dir->dirList; @@ -10364,7 +10300,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"); @@ -10452,17 +10388,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 @@ -10473,6 +10399,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 @@ -10538,21 +10465,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); @@ -11993,67 +11919,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."); @@ -12071,50 +11954,21 @@ void ONMainWindow::printSshDError_noHostPubKey() QString detailed_error_message = tr ("You have enabled Remote Printing or File Sharing.\n" "These features require a running and functioning SSH server on your computer.\n" - "<b>Printing and File Sharing will be disabled for this session.</b>\n\n" - - "The SSH server is currently not configured correctly.\n\n" - - "Please ensure that the server's public key exists.\n\n"); + "<b>Printing and File Sharing will be disabled for this session.</b>\n\n"); #ifdef Q_OS_WIN detailed_error_message += tr ("Normally, this should not happen as X2Go Client for Windows " "ships its own internal SSH server and automatically " "generates the required keys.\n\n" - "If you see this message, please report a bug on:\n" - "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" + "If you see this message, please report a bug on:\n"); +#else /* defined (Q_OS_WIN) */ + detailed_error_message += tr ("X2Go Client was unable to create SSH host keys.\n\n" + + "Please report a bug on:\n"); +#endif /* defined (Q_OS_WIN) */ + detailed_error_message += tr ("<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" "https://wiki.x2go.org/doku.php/wiki:bugs" "</a></center>\n"); -#else // defined (Q_OS_WIN) - if (userSshd) { - detailed_error_message += tr ("X2Go Client was unable to create SSH host keys.\n\n" - - "Please report a bug on:\n" - "<center><a href=\"https://wiki.x2go.org/doku.php/wiki:bugs\">" - "https://wiki.x2go.org/doku.php/wiki:bugs" - "</a></center>\n"); - } - else { -#ifdef Q_OS_DARWIN - detailed_error_message += tr ("On OS X, please follow these steps to generate the " - "required keys:" - - "<ul>" - "<li>Open a <b>Terminal Window</b> (Applications -> Utilities -> Terminal)</li>" - "<li>Run this command: <b>ssh -p " + clientSshPort.toLatin1 () - + " localhost</b></li>" - "<li>You do not need to login. Just quit the Terminal application " - "via Cmd + Q</li>" - "</ul>"); -#else // defined (Q_OS_DARWIN) - detailed_error_message += tr ("Please ask your system administrator to generate the required host keys.\n\n" - - "If you are administrating this system yourself, please run:\n" - - "<center><b>sudo ssh-keygen -A</b></center>\n\n"); -#endif // defined (Q_OS_DARWIN) - } -#endif // defined (Q_OS_WIN) detailed_error_message += tr ("Disabling Remote Printing or File Sharing support " "in the session settings will get rid of this message."); diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 2741ec2..eb8cb1c 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -837,7 +837,6 @@ private: QProcess *nxproxy; #ifndef Q_OS_WIN QProcess *sshd; - bool userSshd; #else QProcess *xorg; PROCESS_INFORMATION sshd; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit e288869b5f4c264a7b78019726f20d1412eee952 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 73bf835..c7bc93e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -403,6 +403,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 737a6da..3646554 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10480,9 +10480,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 a46f11b133748a977285564aaba2df34b8e9f66d 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 c7bc93e..52feb5e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -406,6 +406,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 3646554..3e37d39 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10324,11 +10324,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 4b8b01eacc912e3e1b90eb5b8c2383ca7e34e792 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 52feb5e..14ac7f3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -408,6 +408,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 3e37d39..c6f6cc5 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 84e74eb3dedd25ddbb8e6cd5695049057d719085 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 14ac7f3..8777bbe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -410,6 +410,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 c6f6cc5..41fd71c 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10248,6 +10248,33 @@ void ONMainWindow::generateEtcFiles() x2goDebug<<etcDir +"/sshd_config created."; } +ONMainWindow::key_types ONMainWindow::check_key_type (ONMainWindow::key_types key_type) { + ONMainWindow::key_types ret = key_type; + + switch (key_type) { + case RSA_KEY_TYPE: + break; + case DSA_KEY_TYPE: + break; + case ECDSA_KEY_TYPE: + break; + case ED25519_KEY_TYPE: + break; + default: + ret = UNKNOWN_KEY_TYPE; + } + + if (UNKNOWN_KEY_TYPE == ret) { + QMessageBox::critical (this, tr ("SSH key type selection error"), + tr ("Unknown SSH key selected.") + + "\n" + + tr ("Terminating application.")); + close (); + } + + return (ret); +} + QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; diff --git a/src/onmainwindow.h b/src/onmainwindow.h index eb8cb1c..476d4a9 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1217,6 +1217,8 @@ private: QString getXDisplay(); #endif + key_types check_key_type (key_types key_type); + ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN public slots: -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 3f1601ea06394d7416aceb9a00d1681e7488e880 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 8777bbe..d3730f8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -412,6 +412,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 41fd71c..6bde64d 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10275,6 +10275,30 @@ ONMainWindow::key_types ONMainWindow::check_key_type (ONMainWindow::key_types ke return (ret); } +QString ONMainWindow::key_type_to_string (ONMainWindow::key_types key_type) { + ONMainWindow::key_types sanitized_key_type = check_key_type (key_type); + QString ret (""); + + switch (sanitized_key_type) { + case RSA_KEY_TYPE: + ret = "rsa"; + break; + case DSA_KEY_TYPE: + ret = "dsa"; + break; + case ECDSA_KEY_TYPE: + ret = "ecdsa"; + break; + case ED25519_KEY_TYPE: + ret = "ed25519"; + break; + default: + ret = "unknown"; + } + + return (ret); +} + QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 476d4a9..ecfe2ef 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1218,6 +1218,7 @@ private: #endif key_types check_key_type (key_types key_type); + QString key_type_to_string (key_types key_type); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8c1dc330967d46083130550905a6c66a03b5fbfe 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 d3730f8..2101605 100644 --- a/debian/changelog +++ b/debian/changelog @@ -415,6 +415,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 6bde64d..2300970 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10299,6 +10299,31 @@ QString ONMainWindow::key_type_to_string (ONMainWindow::key_types key_type) { return (ret); } +std::size_t ONMainWindow::default_size_for_key_type (ONMainWindow::key_types key_type) { + ONMainWindow::key_types sanitized_key_type = check_key_type (key_type); + std::size_t ret = 0; + + switch (sanitized_key_type) { + case RSA_KEY_TYPE: + ret = 4096; + break; + case DSA_KEY_TYPE: + ret = 1024; + break; + case ECDSA_KEY_TYPE: + ret = 384; + break; + case ED25519_KEY_TYPE: + /* Fixed key length, flag will be unused. */ + ret = 0; + break; + default: + ret = 0; + } + + return (ret); +} + QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) { ONMainWindow::key_types sanitized_key_type = UNKNOWN_KEY_TYPE; diff --git a/src/onmainwindow.h b/src/onmainwindow.h index ecfe2ef..d01d789 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,6 +1219,7 @@ private: key_types check_key_type (key_types key_type); QString key_type_to_string (key_types key_type); + std::size_t default_size_for_key_type (key_types key_type); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b47f0b984521e0641839ca6611ac7fcfc46be1d9 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 2101605..3a3b6f7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -418,6 +418,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 2300970..08205d0 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10326,45 +10326,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 22dcefa7ea4e9b95241350268f032a756de02bb9 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 3a3b6f7..6805e56 100644 --- a/debian/changelog +++ b/debian/changelog @@ -419,6 +419,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium Returns the default key size in bits for the selected key type, after checking for validity. - src/onmainwindow.cpp: use the new functions in generateKey (). + - src/onmainwindow.h: move generateKey () declaration around. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index d01d789..a952da2 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1204,7 +1204,6 @@ private: #endif void filterDesktops ( const QString& filter, bool strict=false ); - QString generateKey(key_types key_type, bool host_key = false); void generateEtcFiles(); QString u3DataPath(); void cleanPortable(); @@ -1220,6 +1219,7 @@ private: key_types check_key_type (key_types key_type); QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); + QString generateKey(key_types key_type, bool host_key = false); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 87675aa613ba340377e441397fc6b742c03f3e1f 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 6805e56..7ef2ba0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -420,6 +420,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 08205d0..0f53bb4 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10324,126 +10324,124 @@ std::size_t ONMainWindow::default_size_for_key_type (ONMainWindow::key_types key return (ret); } -QString ONMainWindow::generateKey(ONMainWindow::key_types key_type, bool host_key) -{ - QString stringified_key_type (key_type_to_string (key_type)); - std::size_t key_bits = default_size_for_key_type (key_type); +QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_key) { + QString stringified_key_type (key_type_to_string (key_type)); + std::size_t key_bits = default_size_for_key_type (key_type); - QString ret (""); + QString ret (""); - QString base_dir (homeDir); - QString private_key_file (""); + QString base_dir (homeDir); + QString private_key_file (""); - if (host_key) { - base_dir += "/.x2go/etc/"; - } - else { - base_dir += "/.x2go/ssh/gen/"; - } + if (host_key) { + base_dir += "/.x2go/etc/"; + } + else { + base_dir += "/.x2go/ssh/gen/"; + } - { - QDir dir (homeDir); - if (!(dir.mkpath (base_dir))) { - QMessageBox::critical (this, tr ("SSH key base directory creation error"), - tr ("Unable to create SSH key base directory '%1'.").arg (base_dir) - + "\n" - + tr ("Terminating application.")); - close (); - } + { + QDir dir (homeDir); + if (!(dir.mkpath (base_dir))) { + QMessageBox::critical (this, tr ("SSH key base directory creation error"), + tr ("Unable to create SSH key base directory '%1'.").arg (base_dir) + + "\n" + + tr ("Terminating application.")); + close (); } + } #ifdef Q_OS_WIN - private_key_file = cygwinPath (wapiShortFileName (base_dir)); + private_key_file = cygwinPath (wapiShortFileName (base_dir)); #else - private_key_file = base_dir; + private_key_file = base_dir; #endif - ret = base_dir; + ret = base_dir; - { - QString tmp_to_add (""); + { + QString tmp_to_add (""); - if (host_key) { - tmp_to_add = "/ssh_host_" + stringified_key_type + "_key"; - } - else { - QTemporaryFile temp_file (base_dir + "/key"); - temp_file.open (); + if (host_key) { + tmp_to_add = "/ssh_host_" + stringified_key_type + "_key"; + } + else { + QTemporaryFile temp_file (base_dir + "/key"); + temp_file.open (); - /* Extract base name. */ - QFileInfo tmp_file_info (temp_file.fileName ()); - tmp_to_add = tmp_file_info.fileName (); + /* Extract base name. */ + QFileInfo tmp_file_info (temp_file.fileName ()); + tmp_to_add = tmp_file_info.fileName (); - /* Clean up again. We don't need the temporary file anymore. */ - temp_file.setAutoRemove (false); - temp_file.close (); - temp_file.remove (); - } - - private_key_file += tmp_to_add; - ret += tmp_to_add; + /* Clean up again. We don't need the temporary file anymore. */ + temp_file.setAutoRemove (false); + temp_file.close (); + temp_file.remove (); } - QString public_key_file (private_key_file + ".pub"); + private_key_file += tmp_to_add; + ret += tmp_to_add; + } - if ((!(QFile::exists (private_key_file))) || (!(QFile::exists (public_key_file)))) - { - x2goDebug << "Generating SSH key. Type: " << stringified_key_type.toUpper () - << "; Location: " << private_key_file; + QString public_key_file (private_key_file + ".pub"); - QStringList args; + if ((!(QFile::exists (private_key_file))) || (!(QFile::exists (public_key_file)))) { + x2goDebug << "Generating SSH key. Type: " << stringified_key_type.toUpper () + << "; Location: " << private_key_file; - QString comment = "X2Go Client " + stringified_key_type.toUpper () + " "; + QStringList args; - if (host_key) { - comment += "host"; - } - else { - comment += "user"; - } + QString comment = "X2Go Client " + stringified_key_type.toUpper () + " "; - comment += " key"; + if (host_key) { + comment += "host"; + } + else { + comment += "user"; + } - args << "-t" - << stringified_key_type - << "-b" - << QString::number (key_bits) - << "-N" - << "" - << "-C" - << comment - << "-f" - << private_key_file; + comment += " key"; - const int keygen_ret = QProcess::execute ("ssh-keygen", args); + args << "-t" + << stringified_key_type + << "-b" + << QString::number (key_bits) + << "-N" + << "" + << "-C" + << comment + << "-f" + << private_key_file; - if (-2 == keygen_ret) { - QMessageBox::critical (this, tr ("ssh-keygen launching error"), - tr ("Unable to start the ssh-keygen binary.") - + "\n" - + tr ("Terminating application.")); - close (); - } + const int keygen_ret = QProcess::execute ("ssh-keygen", args); - if (-1 == keygen_ret) { - QMessageBox::critical (this, tr ("ssh-keygen crashed"), - tr ("The ssh-keygen binary crashed.") - + "\n" - + tr ("Terminating application.")); - close (); - } + if (-2 == keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen launching error"), + tr ("Unable to start the ssh-keygen binary.") + + "\n" + + tr ("Terminating application.")); + close (); + } - if (0 != keygen_ret) { - QMessageBox::critical (this, tr ("ssh-keygen program error"), - tr ("The ssh-keygen binary did not exit cleanly.") - + " " - + tr ("It was probably called with unknown arguments.") - + "\n" - + tr ("Terminating application.")); - close (); - } + if (-1 == keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen crashed"), + tr ("The ssh-keygen binary crashed.") + + "\n" + + tr ("Terminating application.")); + close (); } - return (ret); + if (0 != keygen_ret) { + QMessageBox::critical (this, tr ("ssh-keygen program error"), + tr ("The ssh-keygen binary did not exit cleanly.") + + " " + + tr ("It was probably called with unknown arguments.") + + "\n" + + tr ("Terminating application.")); + close (); + } + } + + return (ret); } bool ONMainWindow::startSshd() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index a952da2..83bb902 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,7 +1219,7 @@ private: key_types check_key_type (key_types key_type); QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); - QString generateKey(key_types key_type, bool host_key = false); + QString generateKey (key_types key_type, bool host_key = false); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit d4343fdba467163381b72648823ac98432b4011b 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 7ef2ba0..a855262 100644 --- a/debian/changelog +++ b/debian/changelog @@ -421,6 +421,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 0f53bb4..84cc696 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -8093,88 +8093,6 @@ void ONMainWindow::exportDefaultDirs() exportDirs ( dirs.join ( ":" ) ); } -QString ONMainWindow::createRSAKey() -{ - /* - * I spent multiple hours on trying to understand this function - * and directory exporting in general, so I'd better document - * this. - * - * This function first generates a new RSA private-public key - * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. - * - * Then, the SSH daemon's public host key is read and appended - * to the *private* SSH key file after a marker looking like - * this: "----BEGIN RSA IDENTITY----" - * - * Later on, this *private* SSH key file is transferred to the - * remote server, which parses it in the "x2gomountdirs" perl - * script and extracts the public key (used for logging in - * to the client machine) and the public *host* key, used to - * circumvent the "untrusted host" message by SSH by - * explicitly giving the aforementioned public *host* key as - * the only element in a fake "authorized_keys" file. Again, - * this is all happening server-side. - * - * The *public* key part generated here is then taken and - * later added to the "authorized_keys" file on the client - * side, to allow auto-logins via the generated and transferred - * private SSH key. - */ - - QString user_key = generateKey (RSA_KEY_TYPE); - - /* - * Now taking the *host* pub key here... - */ - QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); -#ifdef Q_OS_WIN - rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); -#endif - - if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { - x2goDebug << "Unable to open public host key file."; -#ifdef Q_OS_UNIX - x2goDebug << "Creating a new one."; - QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); - generateEtcFiles (); - - if (!(startSshd ())) { - return (QString::null); - } - - rsa.setFileName (tmp_file_name + ".pub"); - rsa.open (QIODevice::ReadOnly | QIODevice::Text); -#else - printSshDError_noHostPubKey (); - return QString::null; -#endif - } - - QByteArray rsa_pub; - - if ( !rsa.atEnd() ) - rsa_pub = rsa.readLine(); - else - { - x2goErrorf(9)<<tr("RSA file empty."); - return QString::null; - } - - QFile file ( user_key ); - if ( !file.open ( - QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append ) - ) - { - x2goErrorf(10) << tr ("Cannot open key: ") << user_key; - return user_key; - } - QTextStream out ( &file ); - out<<"----BEGIN RSA IDENTITY----"<<rsa_pub; - file.close(); - return user_key; -} - void ONMainWindow::slotCopyKey ( bool result, QString output, int pid) { fsExportKey=sshConnection->getSourceFile(pid); @@ -10444,6 +10362,88 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k return (ret); } +QString ONMainWindow::createRSAKey() +{ + /* + * I spent multiple hours on trying to understand this function + * and directory exporting in general, so I'd better document + * this. + * + * This function first generates a new RSA private-public key + * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. + * + * Then, the SSH daemon's public host key is read and appended + * to the *private* SSH key file after a marker looking like + * this: "----BEGIN RSA IDENTITY----" + * + * Later on, this *private* SSH key file is transferred to the + * remote server, which parses it in the "x2gomountdirs" perl + * script and extracts the public key (used for logging in + * to the client machine) and the public *host* key, used to + * circumvent the "untrusted host" message by SSH by + * explicitly giving the aforementioned public *host* key as + * the only element in a fake "authorized_keys" file. Again, + * this is all happening server-side. + * + * The *public* key part generated here is then taken and + * later added to the "authorized_keys" file on the client + * side, to allow auto-logins via the generated and transferred + * private SSH key. + */ + + QString user_key = generateKey (RSA_KEY_TYPE); + + /* + * Now taking the *host* pub key here... + */ + QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); +#ifdef Q_OS_WIN + rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); +#endif + + if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { + x2goDebug << "Unable to open public host key file."; +#ifdef Q_OS_UNIX + x2goDebug << "Creating a new one."; + QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); + generateEtcFiles (); + + if (!(startSshd ())) { + return (QString::null); + } + + rsa.setFileName (tmp_file_name + ".pub"); + rsa.open (QIODevice::ReadOnly | QIODevice::Text); +#else + printSshDError_noHostPubKey (); + return QString::null; +#endif + } + + QByteArray rsa_pub; + + if ( !rsa.atEnd() ) + rsa_pub = rsa.readLine(); + else + { + x2goErrorf(9)<<tr("RSA file empty."); + return QString::null; + } + + QFile file ( user_key ); + if ( !file.open ( + QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append ) + ) + { + x2goErrorf(10) << tr ("Cannot open key: ") << user_key; + return user_key; + } + QTextStream out ( &file ); + out<<"----BEGIN RSA IDENTITY----"<<rsa_pub; + file.close(); + return user_key; +} + bool ONMainWindow::startSshd() { if ( embedMode && config.confFS && !config.useFs ) diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 83bb902..222da3e 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -955,7 +955,6 @@ private: bool soundParameter ( QString val ); void printError ( QString param ); void exportDefaultDirs(); - QString createRSAKey(); directory* getExpDir ( QString key ); bool findInList ( const QString& uid ); void setUsersEnabled ( bool enable ); @@ -1220,6 +1219,7 @@ private: QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); + QString createRSAKeyBundle(); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 7afa0f575bcc4177c87d05f956a9ce60d42f105e Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Sep 24 04:38:51 2016 +0200 src/onmainwindow.{cpp,h}: reformat createRSAKey () only. --- debian/changelog | 1 + src/onmainwindow.cpp | 133 ++++++++++++++++++++++++-------------------------- src/onmainwindow.h | 2 +- 3 files changed, 66 insertions(+), 70 deletions(-) diff --git a/debian/changelog b/debian/changelog index a855262..772a8b3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -422,6 +422,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 84cc696..fec9703 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10362,86 +10362,81 @@ QString ONMainWindow::generateKey (ONMainWindow::key_types key_type, bool host_k return (ret); } -QString ONMainWindow::createRSAKey() -{ - /* - * I spent multiple hours on trying to understand this function - * and directory exporting in general, so I'd better document - * this. - * - * This function first generates a new RSA private-public key - * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. - * - * Then, the SSH daemon's public host key is read and appended - * to the *private* SSH key file after a marker looking like - * this: "----BEGIN RSA IDENTITY----" - * - * Later on, this *private* SSH key file is transferred to the - * remote server, which parses it in the "x2gomountdirs" perl - * script and extracts the public key (used for logging in - * to the client machine) and the public *host* key, used to - * circumvent the "untrusted host" message by SSH by - * explicitly giving the aforementioned public *host* key as - * the only element in a fake "authorized_keys" file. Again, - * this is all happening server-side. - * - * The *public* key part generated here is then taken and - * later added to the "authorized_keys" file on the client - * side, to allow auto-logins via the generated and transferred - * private SSH key. - */ - - QString user_key = generateKey (RSA_KEY_TYPE); - - /* - * Now taking the *host* pub key here... - */ - QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); +QString ONMainWindow::createRSAKey () { + /* + * I spent multiple hours on trying to understand this function + * and directory exporting in general, so I'd better document + * this. + * + * This function first generates a new RSA private-public key + * pair as ~/.x2go/ssh/gen/key.XXXXX{,.pub}. + * + * Then, the SSH daemon's public host key is read and appended + * to the *private* SSH key file after a marker looking like + * this: "----BEGIN RSA IDENTITY----" + * + * Later on, this *private* SSH key file is transferred to the + * remote server, which parses it in the "x2gomountdirs" perl + * script and extracts the public key (used for logging in + * to the client machine) and the public *host* key, used to + * circumvent the "untrusted host" message by SSH by + * explicitly giving the aforementioned public *host* key as + * the only element in a fake "authorized_keys" file. Again, + * this is all happening server-side. + * + * The *public* key part generated here is then taken and + * later added to the "authorized_keys" file on the client + * side, to allow auto-logins via the generated and transferred + * private SSH key. + */ + + QString user_key = generateKey (RSA_KEY_TYPE); + + /* + * Now taking the *host* pub key here... + */ + QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); #ifdef Q_OS_WIN - rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); + rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); #endif - if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { - x2goDebug << "Unable to open public host key file."; + if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { + x2goDebug << "Unable to open public host key file."; #ifdef Q_OS_UNIX - x2goDebug << "Creating a new one."; - QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); - generateEtcFiles (); + x2goDebug << "Creating a new one."; + QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); + generateEtcFiles (); - if (!(startSshd ())) { - return (QString::null); - } + if (!(startSshd ())) { + return (QString::null); + } - rsa.setFileName (tmp_file_name + ".pub"); - rsa.open (QIODevice::ReadOnly | QIODevice::Text); + rsa.setFileName (tmp_file_name + ".pub"); + rsa.open (QIODevice::ReadOnly | QIODevice::Text); #else - printSshDError_noHostPubKey (); - return QString::null; + printSshDError_noHostPubKey (); + return (QString::null); #endif - } + } - QByteArray rsa_pub; + QByteArray rsa_pub; - if ( !rsa.atEnd() ) - rsa_pub = rsa.readLine(); - else - { - x2goErrorf(9)<<tr("RSA file empty."); - return QString::null; - } + if (!(rsa.atEnd ())) { + rsa_pub = rsa.readLine (); + else { + x2goErrorf (9) << tr ("RSA file empty."); + return (QString::null); + } - QFile file ( user_key ); - if ( !file.open ( - QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append ) - ) - { - x2goErrorf(10) << tr ("Cannot open key: ") << user_key; - return user_key; - } - QTextStream out ( &file ); - out<<"----BEGIN RSA IDENTITY----"<<rsa_pub; - file.close(); - return user_key; + QFile file (user_key); + if (!(file.open (QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))) { + x2goErrorf (10) << tr ("Cannot open key: ") << user_key; + return (user_key); + } + QTextStream out (&file); + out << "----BEGIN RSA IDENTITY----" << rsa_pub; + file.close (); + return (user_key); } bool ONMainWindow::startSshd() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 222da3e..43b6adc 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,7 +1219,7 @@ private: QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); - QString createRSAKeyBundle(); + QString createRSAKey (); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 64115b4bcc07b65a1efc406002a96a13087bf6d4 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 772a8b3..379ad65 100644 --- a/debian/changelog +++ b/debian/changelog @@ -423,6 +423,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 fec9703..30fdddc 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10445,6 +10445,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 f66a8c4efbe5e4ebf27058d19d3c669e9da9e0a6 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 379ad65..1013448 100644 --- a/debian/changelog +++ b/debian/changelog @@ -426,6 +426,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 30fdddc..8fdcb93 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10433,7 +10433,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 9945ca7325d58647db5e11f9d0f8b81efab910da 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 1013448..e0cd684 100644 --- a/debian/changelog +++ b/debian/changelog @@ -427,6 +427,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 8fdcb93..c7820ef 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -7928,7 +7928,7 @@ void ONMainWindow::exportDirs ( QString exports,bool removable ) dr.dirList=exports; - dr.key=createRSAKey(); + dr.key=createKeyBundle(); // Key creation failure or the like. if (dr.key.isEmpty ()) { @@ -10362,7 +10362,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 @@ -10390,41 +10390,49 @@ QString ONMainWindow::createRSAKey () { * private SSH key. */ - QString user_key = generateKey (RSA_KEY_TYPE); + QString stringified_key_type (key_type_to_string (key_type)); + + QString user_key = generateKey (key_type); /* * Now taking the *host* pub key here... */ - QFile rsa (homeDir + "/.x2go/etc/ssh_host_rsa_key.pub"); + const QString host_pub_key_file_name ("ssh_host_" + stringified_key_type + "_key.pub"); + QFile rsa (homeDir + "/.x2go/etc/" + host_pub_key_file_name); #ifdef Q_OS_WIN - rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\ssh_host_rsa_key.pub")); + rsa.setFileName (wapiShortFileName (homeDir + "\\.x2go\\etc\\" + host_pub_key_file_name)); #endif if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { x2goDebug << "Unable to open public host key file."; #ifdef Q_OS_UNIX x2goDebug << "Creating a new one."; - QString tmp_file_name (generateKey (RSA_KEY_TYPE, true)); + QString tmp_file_name (generateKey (key_type, true)); generateEtcFiles (); - if (!(startSshd ())) { + rsa.setFileName (tmp_file_name + ".pub"); + if (!(rsa.open (QIODevice::ReadOnly | QIODevice::Text))) { + x2goErrorf (9) << tr ("Unable to open newly generated %1 public host key file.").arg (stringified_key_type.toUpper ()); return (QString::null); } - - rsa.setFileName (tmp_file_name + ".pub"); - rsa.open (QIODevice::ReadOnly | QIODevice::Text); #else printSshDError_noHostPubKey (); return (QString::null); #endif } + if (!(startSshd ())) { + x2goDebug << "Failed to start OpenSSH Server pro-actively."; + return (QString::null); + } + QByteArray rsa_pub; if (!(rsa.atEnd ())) { rsa_pub = rsa.readLine (); + } else { - x2goErrorf (9) << tr ("RSA file empty."); + x2goErrorf (9) << tr ("%1 public host key file empty.").arg (stringified_key_type.toUpper ()); return (QString::null); } diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 43b6adc..21e6201 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1219,7 +1219,7 @@ private: QString key_type_to_string (key_types key_type); std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); - QString createRSAKey (); + QString createKeyBundle (key_types key_type = RSA_KEY_TYPE); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit f2816f8cfa189ae0b948a3be3e0fbc379b4ca286 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 e0cd684..a5017ac 100644 --- a/debian/changelog +++ b/debian/changelog @@ -431,6 +431,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 b0e48db4a32e50319a642dc3595dddc0c0b580e4 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 a5017ac..ab9aa6a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -432,6 +432,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 c7820ef..8790a04 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10564,17 +10564,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 84d3abb9aff444f756a3e5c37840cb476e87f836 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 ab9aa6a..b80ab32 100644 --- a/debian/changelog +++ b/debian/changelog @@ -435,6 +435,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 8790a04..49d67a9 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10590,6 +10590,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 d7f796395416f8be78790da9153a3e123c5a406a 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 b80ab32..4c4e135 100644 --- a/debian/changelog +++ b/debian/changelog @@ -437,6 +437,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 49d67a9..17db351 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10536,20 +10536,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 c2c90d838757306125b11a636250efdab66d125b 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 4c4e135..ec8ba5e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -439,6 +439,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium startSshd (). - src/onmainwindow.cpp: add listening-check loop to the Windows-specific code of startSshd (). + - src/onmainwindow.{cpp,h}: make startSshd () private. There's no need to + keep it public, as only class-internal functions are using it. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 21e6201..3139efd 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -583,7 +583,6 @@ public: QString internAppName ( const QString& transAppName, bool* found=0l ); void setEmbedSessionActionsEnabled ( bool enable ); - bool startSshd(); QSize getEmbedAreaSize(); #ifdef Q_OS_WIN static QString cygwinPath ( const QString& winPath ); @@ -1220,6 +1219,7 @@ private: std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); QString createKeyBundle (key_types key_type = RSA_KEY_TYPE); + bool startSshd(); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 9e46b6a0d64b3612c8f63148fcc0ffc32c04e68e 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 ec8ba5e..c9bfe3b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -441,6 +441,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 17db351..4ec72bd 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9968,6 +9968,13 @@ void WinServerStarter::run() } } +void WinServerStarter::set_ssh_key_type (ONMainWindow::key_types key_type) { + ssh_key_type_ = key_type; +} + +ONMainWindow::key_types WinServerStarter::get_ssh_key_type () { + return (ssh_key_type_); +} void ONMainWindow::startWinServers() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 3139efd..f6b365c 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -256,9 +256,12 @@ public: enum daemon {X,SSH}; WinServerStarter ( daemon server, ONMainWindow * par ); void run(); + void set_ssh_key_type (ONMainWindow::key_types key_type); + ONMainWindow::key_types get_ssh_key_type (); private: daemon mode; ONMainWindow* parent; + key_types ssh_key_type_ = RSA_KEY_TYPE; }; #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit c34fdddb76640bdc29709239a4bc080243d9d9b8 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 c9bfe3b..14d7e4e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -443,6 +443,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 4ec72bd..7ab7196 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10462,7 +10462,7 @@ QString ONMainWindow::createKeyBundle (key_types key_type) { return (user_key); } -bool ONMainWindow::startSshd() +bool ONMainWindow::startSshd(ONMainWindow::key_types key_type) { if ( embedMode && config.confFS && !config.useFs ) { diff --git a/src/onmainwindow.h b/src/onmainwindow.h index f6b365c..f09d6c3 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1222,7 +1222,7 @@ private: std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); QString createKeyBundle (key_types key_type = RSA_KEY_TYPE); - bool startSshd(); + bool startSshd (key_types key_type = RSA_KEY_TYPE); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit af4f445a8e9fba38d12a0ac925a18609fa02ebd7 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 14d7e4e..567730b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -444,6 +444,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium - src/onmainwindow.{cpp,h}: add ssh_key_type_ 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 7ab7196..5fa7424 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9960,7 +9960,7 @@ void WinServerStarter::run() switch ( mode ) { case SSH: - parent->startSshd(); + parent->startSshd(ssh_key_type_); break; case X: parent->startXOrg(); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 6e391ff54b5bdd8af32b6bc1984c89fa949c708d 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 567730b..e2f8d1f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -446,6 +446,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 5fa7424..93b4d82 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10428,7 +10428,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 da421a2685fd55893c685653f43a1ebc0b5365e2 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 e2f8d1f..d41c0a8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -448,6 +448,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 93b4d82..4940b23 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9977,8 +9977,9 @@ ONMainWindow::key_types WinServerStarter::get_ssh_key_type () { } -void ONMainWindow::startWinServers() +void ONMainWindow::startWinServers(ONMainWindow::key_types key_type) { + key_type = check_key_type (key_type); x2goDebug<<"Starting helper servers for Windows ..."; @@ -9994,7 +9995,8 @@ void ONMainWindow::startWinServers() { dr.mkpath ( etcDir ); - UNUSED (generateKey (RSA_KEY_TYPE, true)); + UNUSED (generateKey (key_type, true)); + sshStarter->set_ssh_key_type (key_type); generateEtcFiles(); sshStarter->start(); } diff --git a/src/onmainwindow.h b/src/onmainwindow.h index f09d6c3..f9a9e4b 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1011,7 +1011,7 @@ protected: #else private slots: void slotSetWinServersReady(); - void startWinServers(); + void startWinServers(key_types key_type = RSA_KEY_TYPE); void slotCheckXOrgLog(); void slotCheckXOrgConnection(); void slotStartParec (); -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 8c947569486f2b41f947f17a1f1f8f49c929e462 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 d41c0a8..591292d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -450,6 +450,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 4940b23..40130ee 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10471,6 +10471,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) @@ -10494,8 +10496,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) @@ -10585,9 +10586,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 709973da1498a4fc174a3f99acea87fb4ec9cf6b 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 591292d..7721b81 100644 --- a/debian/changelog +++ b/debian/changelog @@ -452,6 +452,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium startWinServers (). - src/onmainwindow.cpp: actually use key_type parameter in startSshd () and make selection more generic. + - src/onmainwindow.h: move WinServerStarter class definition around to + hopefully get the definition of ONMainWindow::key_types. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index f9a9e4b..840ea83 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -247,22 +247,6 @@ class WWrapper : public QPushButton { friend class ONMainWindow; }; -#include <QThread> -#include <QMutex> -class ONMainWindow; -class WinServerStarter: public QThread -{ -public: - enum daemon {X,SSH}; - WinServerStarter ( daemon server, ONMainWindow * par ); - void run(); - void set_ssh_key_type (ONMainWindow::key_types key_type); - ONMainWindow::key_types get_ssh_key_type (); -private: - daemon mode; - ONMainWindow* parent; - key_types ssh_key_type_ = RSA_KEY_TYPE; -}; #endif @@ -1269,4 +1253,23 @@ private slots: ////////////////end of plugin stuff//////////////////// }; +#ifdef Q_OS_WIN +#include <QThread> +#include <QMutex> +class ONMainWindow; +class WinServerStarter: public QThread +{ +public: + enum daemon {X,SSH}; + WinServerStarter ( daemon server, ONMainWindow * par ); + void run(); + void set_ssh_key_type (ONMainWindow::key_types key_type); + ONMainWindow::key_types get_ssh_key_type (); +private: + daemon mode; + ONMainWindow* parent; + ONMainWindow::key_types ssh_key_type_ = RSA_KEY_TYPE; +}; +#endif + #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit a8980e6d4df385c57fd27adc2607fd1ce5822a8c 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 7721b81..0e5adb5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -454,6 +454,7 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium and make selection more generic. - src/onmainwindow.h: move WinServerStarter class definition around to hopefully get the definition of ONMainWindow::key_types. + - src/onmainwindow.h: remove WWrapper definition, seems to be unused. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 840ea83..dc3e6ec 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -241,15 +241,6 @@ struct sshKey }; -//wrapper to send mouse events under windows in embedded mode -#ifdef Q_OS_WIN -class WWrapper : public QPushButton -{ - friend class ONMainWindow; -}; -#endif - - class SessTreeView : public QTreeView { Q_OBJECT -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit b8c71a2fa798ef649e8659e60b5cd329263d7edb 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 0e5adb5..f03a38a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -455,6 +455,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 40130ee..e4d2340 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9949,10 +9949,8 @@ void ONMainWindow::slotCheckXOrgConnection() } WinServerStarter::WinServerStarter ( daemon server, ONMainWindow * par ) : - QThread ( 0 ) + QThread ( 0 ), ssh_key_type_ (ONMainWindow::RSA_KEY_TYPE), mode (server), parent (par) { - mode=server; - parent=par; } void WinServerStarter::run() diff --git a/src/onmainwindow.h b/src/onmainwindow.h index dc3e6ec..144241f 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -1259,7 +1259,7 @@ public: private: daemon mode; ONMainWindow* parent; - ONMainWindow::key_types ssh_key_type_ = RSA_KEY_TYPE; + ONMainWindow::key_types ssh_key_type_; }; #endif -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 65ee2ce27139d8550ce65ce5a9d9ca2c646f53e9 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 f03a38a..d3be15b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -459,6 +459,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 e4d2340..0e69ac5 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9949,7 +9949,7 @@ void ONMainWindow::slotCheckXOrgConnection() } WinServerStarter::WinServerStarter ( daemon server, ONMainWindow * par ) : - QThread ( 0 ), ssh_key_type_ (ONMainWindow::RSA_KEY_TYPE), mode (server), parent (par) + QThread ( 0 ), mode (server), parent (par), ssh_key_type_ (ONMainWindow::RSA_KEY_TYPE) { } -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 2285b831711f5ce0f3c3e465fd062cc6069c1893 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 d3be15b..f11f6e5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -461,6 +461,8 @@ x2goclient (4.0.5.3-0x2go1) UNRELEASED; urgency=medium directly. - src/onmainwindow.cpp: re-order initializer list of WinServerStarter constructor. + - src/onmainwindow.h: actually, we do need startSshd () to be public. Move + it back. [ Bernard Cafarelli ] * New upstream version (4.0.5.3): diff --git a/src/onmainwindow.h b/src/onmainwindow.h index 144241f..433dfad 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -561,6 +561,7 @@ public: QString internAppName ( const QString& transAppName, bool* found=0l ); void setEmbedSessionActionsEnabled ( bool enable ); + bool startSshd (key_types key_type = RSA_KEY_TYPE); QSize getEmbedAreaSize(); #ifdef Q_OS_WIN static QString cygwinPath ( const QString& winPath ); @@ -1197,7 +1198,6 @@ private: std::size_t default_size_for_key_type (key_types key_type); QString generateKey (key_types key_type, bool host_key = false); QString createKeyBundle (key_types key_type = RSA_KEY_TYPE); - bool startSshd (key_types key_type = RSA_KEY_TYPE); ////////////////plugin stuff//////////////////// #ifdef CFGPLUGIN -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit dad95752cef30f146b38088f249753c2f57035ef 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 f11f6e5..dfef957 100644 --- a/debian/changelog +++ b/debian/changelog @@ -463,6 +463,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 0e69ac5..95a8dce 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10253,8 +10253,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 (""); @@ -10276,12 +10274,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 (""); @@ -10304,14 +10300,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; @@ -10366,7 +10371,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 09241131872d7e45b54f884f00f4f795300840af 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 dfef957..fe4d3ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -465,6 +465,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 95a8dce..d51525d 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -7965,12 +7965,11 @@ void ONMainWindow::exportDirs ( QString exports,bool removable ) QString uname=getCurrentUname(); - QString dst=dr.key; - QString dhdir=homeDir+"/.x2go"; -#ifdef Q_OS_WIN - dhdir=wapiShortFileName ( dhdir ); -#endif - dst.replace ( dhdir +"/ssh/gen/","" ); + + /* For the destination, fetch the base name only. */ + QFileInfo tmp_file_info (dr.key); + QString dst = tmp_file_info.fileName (); + dst="~"+uname +"/.x2go/ssh/"+dst; dr.dstKey=dst; dr.isRemovable=removable; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch bugfix/osx in repository x2goclient. commit 1ba80ccdab0185684397e608c286500e839f8dcc 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 fe4d3ba..1aa069b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -468,6 +468,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 9612b12..5850cca 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -202,7 +202,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; @@ -330,4 +332,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 556008d72f4f568bcd4cbe7acf59136e6e96519d 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 1aa069b..460e150 100644 --- a/debian/changelog +++ b/debian/changelog @@ -471,6 +471,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 06172f05468cfcd73e0cfbe4593fac435b4a5b66 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 460e150..bff7b60 100644 --- a/debian/changelog +++ b/debian/changelog @@ -473,6 +473,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 d51525d..44ad6f3 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10152,14 +10152,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 55a3f164f927d1f33665d0aa9181405b143768a2 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 bff7b60..fa38c4d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -475,6 +475,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 7d018c20fb7146a2b20cb721f14547adc71c8a10 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 fa38c4d..f1843a8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -478,6 +478,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 44ad6f3..acf51bd 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -9994,7 +9994,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(); } @@ -10486,7 +10485,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))) { @@ -10554,6 +10552,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 378f60fab52040fd766f5b43aa6be26aaedbb1e2 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 f1843a8..0d07f1f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -481,6 +481,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 acf51bd..ada6f7a 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10164,20 +10164,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"); @@ -10197,13 +10196,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 ee8ddf670261d95c8f4e92fe7d0d6efd2d781295 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 0d07f1f..ab1e672 100644 --- a/debian/changelog +++ b/debian/changelog @@ -483,6 +483,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 ada6f7a..fe1cb71 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10176,7 +10176,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 ac7caad2a7ee1c7367c17c287229b8072f3eac55 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 ab1e672..d6913e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -485,6 +485,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 fe1cb71..6223ce7 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -10167,7 +10167,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 def94568dc143ac8fe5402becb7aaa8a24bdbdae 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 d6913e1..371c1ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -487,6 +487,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 5850cca..f45e79f 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -211,6 +211,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. @@ -231,6 +233,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); @@ -257,6 +261,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); @@ -275,6 +281,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]) { @@ -290,6 +300,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 c44edf0c2f2ccde2ddf483a16186428c734cc81a 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 371c1ad..3e76677 100644 --- a/debian/changelog +++ b/debian/changelog @@ -488,6 +488,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 f45e79f..acaeaf8 100644 --- a/src/x2goutils.cpp +++ b/src/x2goutils.cpp @@ -221,7 +221,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); @@ -249,7 +250,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