This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cygipc (and PostgreSQL) XP problem resolved!


On Wed, 7 May 2003, Charles Wilson wrote:

> Jason Tishler wrote:
>
> > +#define NAMESPACE_PREFIX "Global\\"
> > +#define FULL_NAMESPACE_PATH(name) \
> > +     ((LOBYTE(LOWORD(GetVersion())) >= 5 && \
> > +     HIBYTE(LOWORD(GetVersion())) >= 1) ? NAMESPACE_PREFIX name : name) \
> > +
> > +#define CYGWIN_IPCNT_SEMCTL  FULL_NAMESPACE_PATH(CYGWIN_IPCNT_SEMCTL_BASE)
> > +#define CYGWIN_IPCNT_SEMSEM  FULL_NAMESPACE_PATH(CYGWIN_IPCNT_SEMSEM_BASE)
> > +#define CYGWIN_IPCNT_SEMSHM  FULL_NAMESPACE_PATH(CYGWIN_IPCNT_SEMSHM_BASE)
> > +#define CYGWIN_IPCNT_SEMMSG  FULL_NAMESPACE_PATH(CYGWIN_IPCNT_SEMMSG_BASE)
>
> Wait, aren't #define macros resolved at compile time?  This would then
> define these names as "foo" or "Global\\foo" depending on which machine
> the package was BUILT on.
>
> Worse, if the cygipc library itself were built on WinXP, but you build a
> client app on W98 -- then your code thinks "foo" but the daemon things
> "Global\\foo".  Or vice versa.
>
> I think this needs to be a runtime function, not a compiletime macro.
> --Chuck

Umm, Chuck, GetVersion() is a run-time function...

For example, the CYGWIN_IPCNT_SEMCTL macro will resolve to :

  ((LOBYTE(LOWORD(GetVersion())) >= 5 && HIBYTE(LOWORD(GetVersion())) >= 1) ?
    "Global\\" "MultiSemCtl2_" : "MultiSemCtl2_")

which will be evaluated at run-time (the two strings between '?' and ':'
will be concatenated at compile-time, though).
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

Knowledge is an unending adventure at the edge of uncertainty.
  -- Leto II


--
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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]