comp.lang.ada
 help / color / mirror / Atom feed
From: Ray Blaak <rAYblaaK@STRIPCAPStelus.net>
Subject: Re: How to detect OS type and version?
Date: Sun, 16 Oct 2005 04:48:41 GMT
Date: 2005-10-16T04:48:41+00:00	[thread overview]
Message-ID: <ufyr2dqf1.fsf@STRIPCAPStelus.net> (raw)
In-Reply-To: wcchdbigv7m.fsf@shell01.TheWorld.com

Robert A Duff <bobduff@shell01.TheWorld.com> writes:
> Ray Blaak <rAYblaaK@STRIPCAPStelus.net> writes:
> > Simply adding a new OS to some central definition should not impact all
> > existing code. In practical terms people should have had an "unknown OS"
> > handler anyway.
> 
> What is the directory separator character on "unknown OS"?  ;-)

I don't know, of course. The point is to have a plan for it. In the worst case
you exit with the appropriate error message "unknown OS!". In practice you
assume "Unix".

> The advantage of using an enumeration type, and _not_ having an
> Unknown_OS value, is that the compiler will tell you about all
> the places you might need to change when you add a new OS.
> That might or might not be what you want.

That is the inherent advantage of using an enumerated type, of course.

My point is that the nature of the information does not correspond to a known
fixed set.

> In my current project, I have two levels of distinction -- OS (Unix
> vs. Windows, for example) and OS_Flavor (Solaris vs. Linux, for
> example).  I've not needed to distinguish (for example) different
> versions of Linux, and it's probably a good idea to avoid that fine
> level of distinction if possible.

That you need only a few levels of distinction is a property of your current
project, not a property of the set of known OS types. That should be separated.

What I would do in your case is to make my own project-specific enumerated
type and decide the appropriate current literal value at startup based on the
the string-based values returned from querying the OS.

If the reported OS value cannot be correlated to one of your assumed OS types,
then you must decide what to do, which is likely to either assume it's a
default known one (e.g. some sort of "generic" Unix) or else bail out.

> > It's akin to having some app that processes first names as enumerated values
> > instead of strings. It's a mistake because the set of values are open ended
> > and are not known in advance, and can change depending on where you execute.
> 
> You probably don't port to a new OS quite as often as you add names to
> your database of telephone numbers or whatever.  And you probably don't
> use wildly different code based on first names, which needs updating
> every time you add a new first name.

That is essentially true in practice, I admit.

I guess what I care about is that the built in OS query that would live
somewhere under the System or Ada hierarchy would not return an enumerated
type, but rather a string.

That is, the enumeration should not be built into the language, since it is
not at all a stable enough set of values for the long term. Imagine being able
to code to an updated set only every 10 years, which seems to be Ada's upgrade
cycle.

-- 
Cheers,                                        The Rhythm is around me,
                                               The Rhythm has control.
Ray Blaak                                      The Rhythm is inside me,
rAYblaaK@STRIPCAPStelus.net                    The Rhythm has my soul.



  reply	other threads:[~2005-10-16  4:48 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-13  2:35 How to detect OS type and version? Roger Blum
2005-10-13  6:05 ` Martin Dowie
2005-10-13  9:50   ` Stefan Bellon
2005-10-13 10:39     ` Martin Dowie
2005-10-13 18:12     ` Jeffrey R. Carter
2005-10-13 18:37       ` Stefan Bellon
2005-10-13 21:21         ` Robert A Duff
2005-10-13 21:25           ` Stefan Bellon
2005-10-13 21:52             ` Robert A Duff
2005-10-16  0:13       ` Ray Blaak
2005-10-16  0:29         ` Robert A Duff
2005-10-16  4:48           ` Ray Blaak [this message]
2005-10-16 14:16             ` Larry Kilgallen
2005-10-16 15:55               ` Robert A Duff
2005-10-16 20:06               ` Pascal Obry
2005-10-18 16:58                 ` Ray Blaak
2005-10-16 15:59             ` Robert A Duff
2005-10-17 17:19               ` Ray Blaak
2005-10-13 18:11   ` Jeffrey R. Carter
2005-10-13 19:44   ` Simon Wright
2005-10-13 21:04   ` Michael Bode
2005-10-14  1:33     ` Steve
2005-10-13 12:06 ` Rob Norris
2005-10-13 11:59   ` Martin Dowie
2005-10-14  0:21     ` Randy Brukardt
2005-10-14  8:02       ` Martin Dowie
2005-10-14 23:27         ` Randy Brukardt
2005-10-15 12:28           ` Larry Kilgallen
2005-10-15 14:12             ` Martin Dowie
2005-10-14  9:52     ` Rob Norris
2005-10-13 20:25 ` Bernd Specht
2005-10-13 20:36   ` Michael Bode
2005-10-13 20:41     ` Bernd Specht
2005-10-13 20:58       ` Stefan Bellon
2005-10-14  0:27         ` Randy Brukardt
2005-10-15 19:48           ` Bernd Specht
2005-10-14  6:30 ` Roger Blum
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox