Subject: Re: cryptosrc-intl goto tags are a mess
To: Sean Doran <smd@ebone.net>
From: Olaf Seibert <rhialto@polder.ubc.kun.nl>
List: current-users
Date: 02/06/2000 22:49:16
On Thu 03 Feb 2000 at 02:29:43 +0100, Sean Doran wrote:
> 
> In -current's cryptosrc-intl, there are a bunch of "goto out;" ... "out:"
> statements and tags, and unfortunately many of these conflict with 
> a variable called "out" in the same scope.  -:(

A compiler that refuses to compile that is not a C compiler. K&R2 explicitly
mentions (in A9.1):

    Because labels have their own name space, they do not interfere with
    other iderntifiers and cannot be redeclared.

The ISO standard for C says the same more formally in 6.1.2.3 Name
spaces of identifiers.

> For example:
> 
> /usr/src/crypto-intl/lib/libkrb5/../../dist/heimdal/lib/krb5/rd_req.c: In function `krb5_rd_req':
> /usr/src/crypto-intl/lib/libkrb5/../../dist/heimdal/lib/krb5/rd_req.c:373: `out' redeclared as different kind of symbol
> /usr/src/crypto-intl/lib/libkrb5/../../dist/heimdal/lib/krb5/rd_req.c:418: previous declaration of `out'
> *** Error code 1
> 
> Substituting another string for the "out" targets, apparently confined
> to that directory (lib/krb5/../../dist/heimdal/lib/krb5/), makes things
> build happily.

I suggest your compiler be fixed. The gcc that comes with 1.4.1 does not
complain about this.

Script started on Sun Feb  6 22:45:24 2000
azenomei:~/News$ gcc -v
Using builtin specs.
gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)
azenomei:~/News$ cat c.c
void func(void)
{
    int l;

l: goto l;
}
azenomei:~/News$ gcc -c c.c
azenomei:~/News$ exit

Script done on Sun Feb  6 22:45:34 2000

> 	Sean.
-Olaf.
--
___ Olaf 'Rhialto' Seibert - rhialto@polder.ubc.     -- If one tells the truth,
\X/ .kun.nl     -- one is sure, sooner or later, to be found out. (Oscar Wilde)