Thanks.
[ I still can't use patched just attached to mails though.
Anyhow I'd like to be off of this modification. ]
Brgds,
Viktor
On 2009 Dec 6, at 10:56, Tamas TEVESZ wrote:
> On Sun, 6 Dec 2009, Viktor Szakáts wrote:
>
>> I'm leaving this to you as it obviously has no point for
>> me to update it while I don't understand a single bit about it.
>>
>> I can restore original state but that won't help on the
>> original problem.
>
> here's the deal in condensed form: CRTSCTS is system-dependendant.
> most every system could have it, but some don't. right now, the only
> one that doesn't have it is the watcom runtime on linux, but as we
> know what CRTSCTS is on linux (by way of extracting it from libc), we
> know how to make watcom define it to the correct value.
>
> the modifications przemek proposed makes the code reflect this line of
> thinking (so that probably noone will make the same mistake i made
> thinking there's no point for extra guards), and if one ever
> encounters another platform without CRTSCTS, he sees that
>
> - he either needs to come up with a value for CRTSCTS by some means
> (platform-specific tricks, experiments, crystal ball), or
> - we'll completely skip the code path that depepnds on a known CRTSCTS
> (and generate a warning to signal that "there is something that you
> should probably fix up for full user experience")
>
> the specific cases przemek cited were just to show that the
> actual value is system-dependant, not because they needed to be put in
> the code, as those systems are fine enough to indicate the needed
> values by themselves.
>
> this seems to be what przemek is getting to. it's essentially the same
> in effect that was in before, but is hopefully way more verbose in
> telling why it's there.
>
> Index: tpunix.c
> ===================================================================
> --- tpunix.c (revision 13140)
> +++ tpunix.c (working copy)
> @@ -267,22 +267,18 @@
> hb_retl( FALSE );
> }
>
> -#if ! defined( CRTSCTS )
> - #if defined( HB_OS_LINUX ) ||
> - defined( HB_OS_SUNOS )
> - #define CRTSCTS 0x80000000
> - #elif defined( HB_OS_BSD )
> - #define CRTSCTS 0x00010000
> - #elif defined( HB_OS_BEOS )
> - #define CRTSCTS 0x00006000
> - #elif defined( HB_OS_DARWIN )
> - #define CRTSCTS 0x00030000
> - #endif
> +#if !defined( CRTSCTS )
> +# if defined( HB_OS_LINUX ) && defined( __WATCOMC__ ) && __WATCOMC__ < 1290
> +# define CRTSCTS 020000000000
> +# endif
> #endif
>
> HB_FUNC( __TP_CTRLCTS )
> {
> -#if defined( CRTSCTS )
> +#if !defined( CRTSCTS )
> + int iTODO;
> + hb_retni( 0 );
> +#else
> struct termios options;
> int port = hb_parnl( 1 );
> int newvalue = hb_pcount() == 2 ? hb_parnl( 2 ) : -1;
> @@ -301,9 +297,6 @@
> rc = tcsetattr( port, TCSAFLUSH, &options );
>
> hb_retni( curvalue ? 1 : 0 );
> -#else
> - int iTODO;
> - hb_retni( 0 );
> #endif
> }
>
> as i see it, the essential difference is as follows:
>
> #if !defined( CRTSCTS ) && defined( __WATCOMC__ )
> # define CRTSCTS 020000000000
> #endif
>
> what this tells is "crtscts might not be defined on linux/watcom, so
> here's what it should be".
>
> #if !defined( CRTSCTS )
> # if defined( HB_OS_LINUX ) && defined( __WATCOMC__ ) && __WATCOMC__ < 1290
> # define CRTSCTS 020000000000
> # endif
> #endif
>
> what this tells is "crtscts might not be defined. we know one such
> case is this older versions of watcom on linux, where crtscts should
> be this.".
>
> while the end result is quite the same, it makes whoever is reading
> think in a different way, which is actually needed here, as przemek
> helpfully explained.
>
> --
> [-]
>
> mkdir /nonexistent
> _______________________________________________
> Harbour mailing list (attachment size limit: 40KB)
> [email protected]
> http://lists.harbour-project.org/mailman/listinfo/harbour
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour