Subject: Re: gethostname and getdomainname
To: Ignatios Souvatzis <is@jocelyn.rhein.de>
From: Christos Zoulas <christos@zoulas.com>
List: tech-userlevel
Date: 11/14/1999 08:42:16
On Nov 14, 8:23am, is@jocelyn.rhein.de (Ignatios Souvatzis) wrote:
-- Subject: Re: gethostname and getdomainname
| Uhm... checking the return code won't help for portable programs....
|
| neither SUSV2 nor Solaris document that an error return happens if the
| name is truncated, and the errno value for this condition.
| (We dont do it, either).
|
| So our gethostname() would need to _silently_ non-Null-terminate?
|
| Observed behaviour:
|
| OS man:terminate man:errno does:terminate err/errno
|
| SUSV2 maybe - n/a n/a
|
| Solaris no - yes 0/no
| SunOS no - yes 0/no
| Ultrix no - yes 0/no
| DU4.0 maybe - yes 0/no
| Parix no man page ? no 1/0
|
| (in man:terminate, I counted as "no" occurences of "null-terminated unless the
| provided buffer is not sufficient". I counted as "maybe": "if enough space
| is provided, the name is null-terminated".)
|
| (Parix is breandead in that it returns 1 even when it didn't truncate
| the name.)
Solaris claims that the return buffer is not null terminated, but then
goes ahead and null terminates it :-)
Ok. I suppose then that it is better to null terminate the buffer in
gethostname() and return an error. I still think though that it is better
to make sysctl return a non-null-terminated string.
christos