Opened 12 years ago

Last modified 12 years ago

#201 closed defect

Incorrect check for started X server — at Version 1

Reported by: Alexey Loginov Owned by: Antoine Martin
Priority: major Milestone:
Component: Client Keywords:
Cc:

Description (last modified by Antoine Martin)

In trying to get a WinSwitch/xpra server on Ubuntu to work with a WinSwitch/xpra client on OSX, I had to fight with xmodmap a bit (need to use Alt for Eclipse, emacs, etc.). I found the check for running X server not to be quite right. The following diff is for an older version of winswitch/client/client_base.py (I can't use the latest due to #92), so the lines aren't current but their content hasn't changed.

The first change fixes the search of lines for "org.x.startx". In the old form, line.find returns -1 for any line without a match, triggering on the very first line ("PID Status Label"). Python documentation states a preference for "substring in string", when the position of substring in string is not needed. If you want to insist on "org.x.startx" at the very end of the line, the test could be: if line.endswith("org.x.startx"):

The second change corrects the check for a process that's running now ("0" in parts[1] appears to indicate that the process has terminated and returned 0). Checking that parts[0] is NOT "-" is a valid check for a running process, as well. The man pages are a bit vague.

The changes below work on my MacBookPros at home and at work with 10.5 and 10.6:

432c432
<                                       if line.find("org.x.startx$"):
---
>                                       if "org.x.startx" in line:
436c436
<                                                       started = parts[1]=="0"
---
>                                                       started = parts[1]=="-"

I hope this helps.
-Alexey

Change History (1)

comment:1 Changed 12 years ago by Antoine Martin

Description: modified (diff)
Owner: changed from Antoine Martin to Antoine Martin
Status: newaccepted

If the check for a terminated process is what you say it should be, shouldn't the new python code be:

    started = parts[1]!="-"

Instead of "==" ?

Note: See TracTickets for help on using tickets.