From: "Juan Manuel Guerrero" Organization: Darmstadt University of Technology To: Eli Zaretskii Date: Fri, 23 Feb 2001 23:31:48 +0200 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: gettext pretest available CC: Bruno Haible , djgpp-workers AT delorie DOT com X-mailer: Pegasus Mail for Windows (v2.54DE) Message-ID: <2D628811C2A@HRZ1.hrz.tu-darmstadt.de> Reply-To: djgpp-workers AT delorie DOT com On Fri, 23 Feb 2001 09:44:52 +0200, Eli Zaretskii: > > > Then the setmode() macro should take care of it. > > I will assume you are makeing reference to setmode() macro defined in lib/system.h. > > I will add a setmode() macro to system.h for djgpp: > > 1) DJGPP: > > # define setmode(fd, mode) do { \ > > if (!isatty ((fd))) \ > > setmode ((fd), mode); \ > > } while (0) > > This will only DTRT if this macro is called _only_ for switching > stdin/stdout to binary mode and back. If you ever call the macro on a > handle other than 0 or 1, it might silently do nothing without a good > reason. > > It is okay to do this if you _know_ setmode will only be invoked on > stdin/stdout, but I'd suggest a prominent comment to that effect where > the macro is defined, lest someone forgets this caveat. Unfortunately I do not understand this objection. The goal of the macro is to *inhibit* the switching of *every* file handle conected to a console. All other handles should be *serviced* as usual. 1) Lets assume file handle fd **is** connected to a console. In this case the test: !isatty(fd) will be *false* and the file handle will retain its mode whatever this may be. The macro inhibits mode switching ot the console as wanted. 2) Now, lets assume fd is **not** connected to a console. This time the test: !isatty(fd) will be *true* and the following setmode() function will be called switching the mode of the handle. Once again: the setmode macro should be transparent for all handles **not associated** to a console and should ignore any mode switch request for all handles **associated** to a console. This macro will *not* allow any mode switching of a handle connected to console. This is certainly very drastic but for our purposes in this code it is ok, IMHO. Am I missing something? If I am missing something an appropiate code snippet that will DTRT will be iluminating.