[mythtv-commits] Ticket #10090: isatty() not working via ssh, or on OS X?
MythTV
noreply at mythtv.org
Wed Dec 14 03:38:17 UTC 2011
#10090: isatty() not working via ssh, or on OS X?
---------------------------------------------+----------------------------
Reporter: nigel | Owner: nigel
Type: Bug Report - General | Status: closed
Priority: minor | Milestone: 0.25
Component: MythTV - General | Version: Trunk Head
Severity: medium | Resolution: fixed
Keywords: console interactive mythbackend | Ticket locked: 0
---------------------------------------------+----------------------------
Changes (by Github):
* status: assigned => closed
* resolution: => fixed
* milestone: unknown => 0.25
Comment:
Fix interactive shell check.
Reverts 888a9849c and fixes #10090 with a different patch.
The original fix in 888a9849c broke database upgrades for users who
start mythbackend in a terminal with the -d/--daemon argument (but DB
upgrades worked for users who started mythbackend in a terminal without
the -d argument, or who started mythbackend in a script with the -d
argument).
The problem is that moving the close(0) to after the SchemaUpgradeWizard
caused getResponse()'s isatty(fileno(stdin)) check to return true.
However, by this time, we had already daemonized the application, so the
terminal no longer sends keyboard input to mythbackend (not properly, at
least--keyboard input seems semi-broken until mythbackend is shut
down/killed), and the cin.getline(response, 80); hangs, forever, waiting
for the user to type yes or no in response to the question, "Shall I
upgrade this database? [yes] no". The user does see the question in
the terminal, but if they type "yes", the input goes to the shell, which
runs the *nix "yes" command in the foreground--which then prints a
billion y's to the terminal. :)
This fixes the problem with a different apprach--it puts the close(0)
call back with the code that daemonizes the application, but it's only
executed if we daemonize the application. This way, users who are
running mythbackend -d in a terminal are not asked whether to upgrade or
not, and users who are running mythbackend in a terminal, but /not/
asking to daemonize the application, will be asked whether to upgrade.
The other possible approach was to move the daemonizing code to the
location that 888a9849c put the close(0), but it seemed wrong to ask a
user whether to upgrade the database when they asked to daemonize the
application.
Branch: master
Changeset: 68dec16c297f743c078ce966cd0c8bf404fe80a0
--
Ticket URL: <http://code.mythtv.org/trac/ticket/10090#comment:3>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center
More information about the mythtv-commits
mailing list