delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/05/08/09:48:21

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Date: Thu, 08 May 2003 09:48:29 -0400
From: Jason Tishler <jason AT tishler DOT net>
Subject: Re: cygipc (and PostgreSQL) XP problem resolved!
In-reply-to: <Pine.GSO.4.44.0305072148060.3212-100000@slinky.cs.nyu.edu>
To: cygwin AT cygwin DOT com
Mail-followup-to: cygwin AT cygwin DOT com
Message-id: <20030508134828.GC512@tishler.net>
MIME-version: 1.0
User-Agent: Mutt/1.4i
References: <Pine DOT GSO DOT 4 DOT 44 DOT 0305072136040 DOT 3212-100000 AT slinky DOT cs DOT nyu DOT edu>
<Pine DOT GSO DOT 4 DOT 44 DOT 0305072148060 DOT 3212-100000 AT slinky DOT cs DOT nyu DOT edu>

Igor,

On Wed, May 07, 2003 at 10:09:51PM -0400, Igor Pechtchanski wrote:
> I should mention, however, that this *will* *break* if Microsoft ever
> decides to release an OS with GetVersion() returning something like
> 0x0006 in the low byte (I wouldn't put it past them [OS v6, build 0]).

Oops.  Good catch.

> Also, the FULL_NAMESPACE_PATH() macro doesn't examine the high-order
> bit, but that should be ok, as no Win9x variant currently returns more
> than 0x04 in the low-order byte (source: MSDN
> <http://msdn.microsoft.com/library/en-us/sysinfo/base/getversion.asp>).

Exactly my reasoning and sources too.

> It also calls GetVersion() twice every time it resolves a semaphore
> name.

I was concerned about the performance impact, but I was hoping that
calling GetVersion() wasn't too expensive.

> It might be better to use something like
> 
> #define FULL_NAMESPACE_PATH(name) \
>      ({WORD ver=LOWORD(GetVersion()); \
>       (MAKEWORD(HIBYTE(ver),LOBYTE(ver)) >= MAKEWORD(1,5)) ? \
>        NAMESPACE_PREFIX name : name})

I tried to declare a variable to save the results of GetVersion() in the
macro but I couldn't get it to work.  Thanks for showing me how.

> Also, this macro uses GNU extensions,

What exactly above is a GNU extension?

> P.S. Nitpicking: the final '\' in Jason's definition of this macro is
> redundant (and will hurt if you ever choose to delete the blank line).

YA oops.  YA good catch.

Thanks,
Jason

-- 
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D  8784 1AFD E4CC ECF4 8EF6

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019