Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #130261

Re: Global variables

From David Brown <david.brown@hesbynett.no>
Newsgroups comp.lang.c
Subject Re: Global variables
Date 2018-05-06 20:03 +0200
Organization A noiseless patient Spider
Message-ID <pcng2e$i93$1@dont-email.me> (permalink)
References (16 earlier) <RSqGC.80267$6A2.3553@fx21.am4> <slrnpem0sv.jmn.dan@xps-linux.djph.net> <ffEGC.34377$U32.22742@fx04.am4> <pch9jg$66e$1@dont-email.me> <M6DHC.72415$Ze.56654@fx39.am4>

Show all headers | View raw


On 06/05/18 15:07, bartc wrote:
> [Was: The case AGAINST C]
> 
> On 04/05/2018 10:36, David Brown wrote:
>> On 03/05/18 15:36, bartc wrote:
> 
>>> They couldn't be more different. [include and import]
>>
>> Yes, they /could/ be more different - because the way #include is mostly
>> used is very similar to a more structured "module" concept.  Typically,
>> languages that have a module system have a lot more structure and
>> restrictions than you have in include files.  In C, the include system
>> is very flexible - you have to enforce a structure and modularisation
>> yourself.
> 
> My first implementation of modules had one big disadvantage: it required 
> a strictly hierarchical module structure.
> 
> That wasn't always easy to achieve, but a workaround was to write 
> explicit declarations for global entities that didn't fit into the scheme.
> 
> Exactly as has to be done manually with C header files. Except that with 
> my scheme, this was only needed for 1% of such declarations; 99% of them 
> are automatic and require no effort whatsoever.
> 
> (And with my new scheme which doesn't enforce a module hierarchy, they 
> are 100% automatic.)
> 
>    This has its advantages and disadvantages - sometimes the
>> flexibility is great, but it also means you have to understand how to
>> use include files properly for correct and modular coding.
>> Unfortunately, many C programmers (yourself including) don't understand
>> the details here.
> 
> You think so? I must know something about it to have created several 
> such systems each successively better than the stone age methods used in C.
> 
>> 4. The flexibility means people who don't know how to make C "modules"
>> get things wrong.
> 
> That must be a lot of people then. In my case, I'm so used to the 
> effortless way my language does it that I forget how easy it is to get 
> it wrong in C.
> 
> Here's a beautiful example of getting it wrong, a simple 5-module 
> 1-header project:
> 
>    http://kociemba.org/downloads/optiqtmSrc.zip  # (rubik's cube solver)
> 
> The header declares lots of global variables and tables, without using 
> extern and without them being also declared in one of the C files, which 
> has the effect that they are seen as defined, exported variables from 
> each C file that uses them.
> 
> My linker complained about multiple definitions of variables.
> 
> But no other C compiler's linker said anything at all (apart from one 
> that crashed, I believe for other reasons).
> 
> These clashes could very easily have been of separately declared, 
> incompatible objects, yet no error is notified or even a warning.
> 
> No doubt gcc/gcc's linker could have its arm twisted to do so, but the 
> point is that hasn't happened here as the error is there. Compilers MUST 
> report such fundamental problems.

No, neither compilers nor linkers /have/ to report on such problems.

You seem to be getting your knickers in a twist here about something 
that I /agree/ is a bad feature, something that I /agree/ should never 
be used, and that I /agree/ should never have been allowed in the first 
place.

The C standards don't have anything to say about having multiple 
definitions (identical or otherwise) of a variable in a program.  Early 
pre-standard C toolchains supported it, and code was written that used 
it - so later toolchains kept it for compatibility.  I think that was a 
mistake.

It is not hard to find examples of code using such multiple definitions. 
  That does not mean that it is something everyone does, and it 
certainly does not mean it is a problem with the language or the tools - 
merely that some programmers don't know how to use the language and 
tools to write well-structured code.  I fully agree that such bad 
structure would not be in published code if tools did not commonly 
support it or commonly diagnosed it.  Having the language had explicitly 
ban it is not enough - C++ /does/ have a rule against multiple 
definitions of objects, but people manage to break that rule in the same 
way.


> 
> (Funny how a simple tool is more adept at this stuff than an elaborate 
> one.)

Not really, no.  A car is a good deal harder to learn to control than a 
tricycle.  Simple does not mean better (nor does it mean worse) - it 
just means simple.

> 
> --------------
> 
> There was another source error in that project, which was the widespread 
> use of () parameter list rather than (void). The danger here is that 
> arguments to those functions are unchecked. If the program might not 
> crash, it shows a misunderstanding of what a function does.

Another mistake from the programmer, not the language.  (But as already 
noted by Keith and myself, and probably agreed by many others, it would 
be better if common tools gave a warning on such legal but obsolete and 
dangerous constructs.)

> 
> Again, only my compiler said anything (in default mode). I could used a 
> compatibility switch, but I decided to fix the source code.
> 
> Maybe more people should do that.
> 
> (This project did have a very simple makefile, but it was hardly needed: 
> just compile the 5 files and link them.)
> 
>> C #include files can be used for other more flexible uses too, which
>> modules cannot.
> 
> You mean general text include?
> 
> Having modules doesn't preclude the use of a file include feature. But 
> it would be confusing if C had both as you'd then have modules, #include 
> used instead of modules, and #include used for other purposes.

It is relatively rare for #include to be used for general source 
inclusion, but it does happen.  One example I have seen is to divide a 
program into parts but then to compile them together as one translation 
unit for efficiency reasons.  I have also seen (and used myself) files 
that are generated externally, such as to define const arrays of data 
that you want directly linked into a program.  Then you might have 
something like:

// In file pics.c
const uint8_t smiley_face_picture_data[] = {
#include "pics/smile_face.inc"
};

const uint8_t sad_face_picture_data[] = {
#include "pics/sad_face.inc"
};

The ".inc" files are generated by something else, like a Python script 
called automatically from the project's Makefile (yes, make does a great 
deal more than just call the compiler), and they consist of just 
comma-separated lists of data values.


I have also seen include files used for portability, such as:

// In file xxx.c

#include "port/start_packed_struct.h"
packed_struct {
	char c;
	int i;
};
#include "port/end_packed_struct.h"


For one compiler, you might have:

// port/start_packed_struct.h
struct __attribute__((__packed__))

// port/end_packed_struct.h


For another, you might have:

// port/start_packed_struct.h
#pragma push
#pragma pack 1
struct

// port/end_packed_struct.h
#pragma pop



That is just three cases where flexible include files can be very 
helpful - but where they don't fit the common model of a "header file" 
with extern declarations and related declarations and definitions.  And 
none of these would work with a more rigid (but safer) module system.


> 
>>> Nothing stops you including the same .h header file 20 times, and so
>>> many header files have messy #ifdef guards to prevent this.
>>
>> The #ifdef guards are cheap, simple, and very familiar to all C
>> programmers.  A "proper" C module concept would not need them, but they
>> are not a hardship.
> 
> #ifdef guards still require that the header file is rescanned token by 
> token to get to the matching #endif. Unless compilers jump through hoops 
> to avoid that.

Compilers are very good at handling these efficiently.  The time taken 
by gcc and other serious compilers to skip over duplicate headers is 
absolutely negligible.  I am sure the developers of these tools have 
worked hard to make them so - but the effort required by compiler 
developers has never been a criteria for features of C.  (This is 
different from some languages, such as Pascal, where ease of 
implementation was very important in the language design.)

> 
>> Look, it is actually fairly simple.  Not as simple as it could have
>> been, perhaps, but not hard.
>>
>> "extern int abc;" /declares/ "abc" to be an integer with external
>> (global) linkage - but it does not define it, allocate space for it, or
>> provide any initialisation for it.
>>
>> "int abc;" is a "tentative definition" - if no full definition
>> ("external definition" in the C standards) is found by the end of that
>> translation unit, then it is treated as if it were a full definition
>> "int abc = 0;".
>>
>> "int abc = 0;" or other initialisation is always a full definition.
> 
> You say it's simple but then go into rather a long explanation.

It /is/ simple - but I gave an explanation of how and why it works, with 
all the rules, to help teach you.  Perhaps naïvely I thought you could 
learn from it and then write correct code afterwards, rather than merely 
using it as another example of something you don't understand about C 
and can therefore be used to claim C is "broken".

> 
> A lot of source code doesn't do this because it's not enforced.
> 
> Module-scope variables very often are not initialised.

Often they are initialised, often they are not.  I could not guess at 
the proportions.

> 'extern' is often 
> not used.

"extern" is used all the time in declarations and in headers.  Code that 
has variable declarations in headers should use "extern" in almost all 
cases (occasionally "static" is used instead) - if the code does not 
have "extern" or "static" on something that should be a non-defining 
object declaration, the code is bad.  ("extern" is entirely optional for 
non-defining function declarations - I like to use it, but many people 
do not.  We are concerned with objects here.)

> So projects are full of tentative which are not defined 
> anywhere, but no errors are raised.

It is fine to have tentative definitions - they become "real" 
definitions (or "external definition") at the end of the translation 
unit.  There is only a problem if more than one translation unit has 
definitions for the same identifier in the same program - something that 
happens easily if you have tentative definitions in a header file.


> 
> Here's how it works in one of my current languages; names declared at 
> module scope:
> 
>     int abc            # defined variable, not exported
> 
>     global int def     # defined variable, exported
> 
> There is no need for an 'extern' version, as 'import' takes care of 
> those details.

I would not want that.  I prefer to have the interface for a module - 
the exported part - declared independently.  Sure, it means a little 
duplication - but nothing difficult, and it will all be checked by the 
compiler.  I greatly prefer C's methods (with appropriately structured 
and constrained header files, and aided by good tools), or Modula 2 
(where interface files are independent of implementation files).  Pascal 
(where these are two sections within the same file) is okay.  Python's 
method is very poor - /everything/ is exported, and available from other 
files via a module import statement - unless you use ugly underscores 
everywhere.  Your method is a little better than Python's, as you need 
an explicit "global" for exporting symbols, but it still means they are 
scattered around the implementation file rather than in a dedicated 
interface file containing only the API and documentation.

>  > THAT is simple.
> 

That is one simple way to do it.  C has a different simple way to do it. 
  Other languages have other ways to do it - usually simple, but perhaps 
with different rules.

There is nothing difficult or confusing about C's method.  I think it is 
sub-optimal - I would prefer a better choice of default qualifiers. 
(I'd prefer "static const" by default, and require an explicit "var" for 
variable data and an explicit "extern" - or "global" if you prefer - for 
exported data.)

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

The case AGAINST C Real Troll <real.troll@trolls.com> - 2018-04-30 02:10 +0000
  Re: The case AGAINST C cross@spitfire.i.gajendra.net (Dan Cross) - 2018-04-30 03:14 +0000
    Re: The case AGAINST C Tim Rentsch <txr@alumni.caltech.edu> - 2018-04-30 05:48 -0700
    Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-04-30 14:58 +0100
    Re: The case AGAINST C Davs <johndemeert0@gmail.com> - 2018-05-07 04:18 -0700
      Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-07 05:26 -0700
      Re: The case AGAINST C Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-05-07 11:21 -0400
        Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-07 09:21 -0700
        Re: The case AGAINST C Robert Wessel <robertwessel2@yahoo.com> - 2018-05-07 12:13 -0500
          Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-07 10:24 -0700
          Re: The case AGAINST C Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-05-07 13:27 -0400
            Re: The case AGAINST C scott@slp53.sl.home (Scott Lurndal) - 2018-05-07 17:33 +0000
              Re: The case AGAINST C Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-05-07 13:50 -0400
              Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-07 10:56 -0700
            Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-08 09:26 +0200
          Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-08 09:19 +0200
            Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-08 00:42 -0700
            Re: The case AGAINST C supercat@casperkitty.com - 2018-05-08 06:54 -0700
              Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-08 07:24 -0700
              Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-08 17:15 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-08 09:31 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-08 18:48 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-08 10:33 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-08 23:36 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-08 15:08 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-09 00:56 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-08 16:17 -0700
                Re: The case AGAINST C Geoff <geoff@invalid.invalid> - 2018-05-08 11:09 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-08 23:43 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-08 15:24 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-09 00:58 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-09 08:11 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-09 08:51 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-09 11:45 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-09 13:03 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-09 23:40 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-09 15:48 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-10 13:48 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-10 08:28 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-11 10:06 +0200
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-11 02:22 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-11 05:29 -0700
                Re: The case AGAINST C scott@slp53.sl.home (Scott Lurndal) - 2018-05-11 13:31 +0000
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-11 15:47 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-11 09:16 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-12 17:43 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-12 14:06 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-10 00:13 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-10 01:31 -0700
                Re: The case AGAINST C Wouter Verhelst <w@uter.be> - 2018-05-11 18:01 +0200
                Re: The case AGAINST C Geoff <geoff@invalid.invalid> - 2018-05-10 08:30 -0700
                Re: The case AGAINST C Wouter Verhelst <w@uter.be> - 2018-05-09 09:29 +0200
                Re: The case AGAINST C Geoff <geoff@invalid.invalid> - 2018-05-10 08:41 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-11 04:43 -0700
              Re: The case AGAINST C Richard Damon <Richard@Damon-Family.org> - 2018-05-08 21:24 -0400
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-09 09:10 +0200
            Re: The case AGAINST C Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-05-08 19:52 +0000
              Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-08 23:48 +0200
  Re: The case AGAINST C Tim Rentsch <txr@alumni.caltech.edu> - 2018-04-29 22:07 -0700
  Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-04-30 12:22 +0100
    Re: The case AGAINST C Melzzzzz <Melzzzzz@zzzzz.com> - 2018-04-30 12:08 +0000
      Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-04-30 13:38 +0100
        Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-30 06:05 -0700
        Re: The case AGAINST C supercat@casperkitty.com - 2018-04-30 07:39 -0700
        Re: The case AGAINST C Ed Kellett <e@kellett.im> - 2018-04-30 15:53 +0100
          Re: The case AGAINST C supercat@casperkitty.com - 2018-04-30 08:14 -0700
            Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-04-30 21:26 -0700
          Re: The case AGAINST C Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-04-30 09:00 -0700
            Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-01 04:58 -0700
          Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-04-30 18:07 +0100
            Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-01 05:33 -0700
              Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-01 05:58 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-01 06:27 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-01 14:37 +0100
                Re: The case AGAINST C Melzzzzz <Melzzzzz@zzzzz.com> - 2018-05-01 13:41 +0000
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-01 16:48 +0100
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-01 10:11 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-01 11:00 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-01 19:26 +0100
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-01 11:40 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-01 12:53 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-01 22:03 +0100
                Re: The case AGAINST C Ian Collins <ian-news@hotmail.com> - 2018-05-02 09:10 +1200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-01 14:21 -0700
                Re: The case AGAINST C Ian Collins <ian-news@hotmail.com> - 2018-05-02 09:26 +1200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-01 15:23 -0700
                Re: The case AGAINST C scott@slp53.sl.home (Scott Lurndal) - 2018-05-02 14:07 +0000
                Re: The case AGAINST C Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-05-03 06:28 +0000
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-01 23:03 +0100
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-02 04:52 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-02 05:12 -0700
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-02 05:34 -0700
                Re: The case AGAINST C scott@slp53.sl.home (Scott Lurndal) - 2018-05-02 14:08 +0000
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-02 07:39 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-02 17:13 +0100
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-02 11:01 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-02 21:51 +0100
                Re: The case AGAINST C Ian Collins <ian-news@hotmail.com> - 2018-05-03 08:52 +1200
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-02 22:42 +0100
                Re: The case AGAINST C Ian Collins <ian-news@hotmail.com> - 2018-05-03 09:57 +1200
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-02 23:22 +0100
                Re: The case AGAINST C Ian Collins <ian-news@hotmail.com> - 2018-05-03 10:29 +1200
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-03 00:14 +0100
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-03 03:59 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-03 04:15 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-03 12:50 +0100
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-03 13:36 -0700
                Of course I get it... (Was: The case AGAINST C) gazelle@shell.xmission.com (Kenny McCormack) - 2018-05-03 08:44 +0000
                Re: The case AGAINST C Dan Purgert <dan@djph.net> - 2018-05-03 12:42 +0000
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-03 05:52 -0700
                Re: The case AGAINST C Dan Purgert <dan@djph.net> - 2018-05-03 12:56 +0000
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-03 05:58 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-03 14:36 +0100
                Re: The case AGAINST C already5chosen@yahoo.com - 2018-05-03 13:27 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-03 22:43 +0100
                Re: The case AGAINST C already5chosen@yahoo.com - 2018-05-03 15:17 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-04 00:50 +0100
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-03 15:41 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-04 11:36 +0200
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-04 08:52 -0700
                Re: The case AGAINST C scott@slp53.sl.home (Scott Lurndal) - 2018-05-04 17:28 +0000
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-04 12:06 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-05 18:45 +0200
                Re: The case AGAINST C scott@slp53.sl.home (Scott Lurndal) - 2018-05-06 18:43 +0000
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-06 23:35 +0200
                Re: The case AGAINST C scott@slp53.sl.home (Scott Lurndal) - 2018-05-07 13:23 +0000
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-07 06:30 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-07 16:25 +0200
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-07 07:32 -0700
                Re: The case AGAINST C Keith Thompson <kst-u@mib.org> - 2018-05-04 09:09 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-04 18:12 +0100
                Global variables bartc <bc@freeuk.com> - 2018-05-06 14:07 +0100
                Re: Global variables David Brown <david.brown@hesbynett.no> - 2018-05-06 20:03 +0200
                Re: Global variables Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-05-06 15:21 -0400
                Re: Global variables Keith Thompson <kst-u@mib.org> - 2018-05-06 13:07 -0700
                Re: Global variables Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-05-06 16:13 -0400
                Re: Global variables David Brown <david.brown@hesbynett.no> - 2018-05-06 23:39 +0200
                Re: Global variables Richard Damon <Richard@Damon-Family.org> - 2018-05-06 17:50 -0400
                Re: Global variables David Brown <david.brown@hesbynett.no> - 2018-05-06 23:57 +0200
                Re: Global variables Richard Damon <Richard@Damon-Family.org> - 2018-05-06 19:56 -0400
                Re: Global variables Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-05-07 03:21 +0100
                Re: Global variables David Brown <david.brown@hesbynett.no> - 2018-05-07 09:09 +0200
                Re: Global variables Keith Thompson <kst-u@mib.org> - 2018-05-07 08:49 -0700
                Re: Global variables bartc <bc@freeuk.com> - 2018-05-06 20:55 +0100
                Re: Global variables David Brown <david.brown@hesbynett.no> - 2018-05-06 23:51 +0200
                Re: Global variables Keith Thompson <kst-u@mib.org> - 2018-05-06 15:40 -0700
                Re: Global variables bartc <bc@freeuk.com> - 2018-05-06 23:54 +0100
                Re: Global variables Ian Collins <ian-news@hotmail.com> - 2018-05-07 15:12 +1200
                Re: Global variables David Brown <david.brown@hesbynett.no> - 2018-05-07 09:03 +0200
                Re: Global variables Tim Rentsch <txr@alumni.caltech.edu> - 2018-05-18 20:23 -0700
                Re: Global variables Steve Carroll <frelwizzen@gmail.com> - 2018-05-18 20:44 -0700
                Re: Global variables David Brown <david.brown@hesbynett.no> - 2018-05-19 17:22 +0200
                Re: Global variables supercat@casperkitty.com - 2018-05-19 11:56 -0700
                Re: Global variables supercat@casperkitty.com - 2018-05-06 16:28 -0700
                Re: Global variables Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-05-06 14:19 -0400
                Re: Global variables bartc <bc@freeuk.com> - 2018-05-06 20:16 +0100
                Re: Global variables David Brown <david.brown@hesbynett.no> - 2018-05-06 23:09 +0200
                Re: Global variables bartc <bc@freeuk.com> - 2018-05-06 23:41 +0100
                Re: The case AGAINST C Keith Thompson <kst-u@mib.org> - 2018-05-03 09:13 -0700
                Re: The case AGAINST C Dan Purgert <dan@djph.net> - 2018-05-03 17:29 +0000
                Re: The case AGAINST C gazelle@shell.xmission.com (Kenny McCormack) - 2018-05-03 19:24 +0000
                Re: The case AGAINST C Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-05-04 05:46 +0000
                Re: The case AGAINST C Dan Purgert <dan@djph.net> - 2018-05-04 10:55 +0000
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-04 04:03 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-04 12:31 +0100
                Re: The case AGAINST C already5chosen@yahoo.com - 2018-05-04 05:10 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-04 13:24 +0100
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 06:26 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 06:35 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 07:06 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 07:19 -0700
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-04 06:37 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 08:19 -0700
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-04 12:07 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-04 16:31 +0100
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 08:41 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 09:50 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 10:04 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 13:51 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-04 14:30 -0700
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-04 15:14 -0700
                Re: The case AGAINST C Robert Wessel <robertwessel2@yahoo.com> - 2018-05-04 11:18 -0500
                Re: The case AGAINST C Keith Thompson <kst-u@mib.org> - 2018-05-04 09:05 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-04 17:55 +0100
                Re: The case AGAINST C Keith Thompson <kst-u@mib.org> - 2018-05-04 10:54 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-04 19:18 +0100
                Re: The case AGAINST C Keith Thompson <kst-u@mib.org> - 2018-05-04 11:24 -0700
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-06 16:45 +0200
                Re: The case AGAINST C jameskuyper@alumni.caltech.edu - 2018-05-04 11:51 -0700
                Re: The case AGAINST C supercat@casperkitty.com - 2018-05-04 12:15 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-04 21:56 +0100
                Re: The case AGAINST C David Brown <david.brown@hesbynett.no> - 2018-05-06 17:01 +0200
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-06 17:54 +0100
                Re: The case AGAINST C Keith Thompson <kst-u@mib.org> - 2018-05-06 13:38 -0700
                Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-06 21:49 +0100
                Re: The case AGAINST C Richard Damon <Richard@Damon-Family.org> - 2018-05-06 17:19 -0400
                Re: The case AGAINST C Keith Thompson <kst-u@mib.org> - 2018-05-06 15:24 -0700
                Re: The case AGAINST C Keith Thompson <kst-u@mib.org> - 2018-05-06 15:16 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-06 23:55 -0700
                Re: The case AGAINST C Steve Carroll <frelwizzen@gmail.com> - 2018-05-06 11:59 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-01 14:51 -0700
                Re: The case AGAINST C Steven Petruzzellis <frelwizzen@gmail.com> - 2018-05-02 04:46 -0700
                Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-01 11:45 -0700
              Re: The case AGAINST C fir <profesor.fir@gmail.com> - 2018-05-01 06:10 -0700
        Re: The case AGAINST C C W Rose <cwr@seckford.org> - 2018-05-02 15:23 +0100
          Re: The case AGAINST C bartc <bc@freeuk.com> - 2018-05-02 17:36 +0100
  Re: The case AGAINST C "Mr. Man-wai Chang" <toylet.toylet@gmail.com> - 2018-04-30 22:03 +0800
  Re: The case AGAINST C Jens Stuckelberger <Jens_Stuckelberger@nowhere.net> - 2018-05-01 13:46 +0000

csiph-web