On 11/04/17 16:00, Henry Vermaak via Lazarus wrote:
On Tue, Apr 11, 2017 at 01:34:35PM +0000, Mark Morgan Lloyd via Lazarus wrote:> Something like this does appear to work, tested on Linux
only.> > function notGui(): boolean;> > var i: integer;> > begin> i := IsaTty(Input);> {$ifdef ISGUI }> exit
false;> {$endif ISGUI }> {$ifdef NOGUI }> exit true;> {$endif NOGUI }> result := i <> 0> end { notGui } ;> >
The explicit overrides might be needed during debugging, since the> involvement of gdb forces the program to think it's being run from a
shell> session.
I'd recommend making the overrides command line parameters. That wayyou do
away with the ifdefs and a user can always override it if yourlogic somehow
doesn't do the right thing.
I agree, --GUI and --TUI by choice (case-sensitive, no short form). But
from the POV of getting a statement of what appeared to work and its
limitations into the record I didn't want to introduce anything extraneous.
Looking back through older sources, I've had to jump through hoops-> reopening the
input and using GetFileType() under Windows- to find out> whether stdin was piped.
Fortunately I don't need that here.
The experience on Windows is pretty awful and I've seen some interestingtricks
to get a program to do the right thing based on where it waslaunched from. For
example, Visual Studio's devenv.com vs. devenv.exe,using the fact that .com
takes preference over .exe in the terminal tohandle the command line parameters
and sending output to the terminalthat it was called from.
Regrettably, investigating that sort of thing in too much depth can get
one flagged as a malware writer. A few days ago I saw something very odd
happen as a result of some search terms I used when reading up about a
particular comms protocol.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus-ide.org/listinfo/lazarus