I agree, very strange.Fred wrote:The first time ever i've seen a structure like that...
@frederick: your hex dump suggests fixed length character arrays padded with zeros A rough count suggests 65 bytes.
Could your documentation be incorrect?
Code: Select all
À cette fin, Linux utilise les appels système sethostname(2) et setdo‐
mainname(2). Notez qu’aucun standard ne dit que le nom d’hôte fixé par
sethostname(2) représente la même chaîne que le champ nodename de la
structure renvoyée par uname() (de fait, certains systèmes autorisent
un nom d’hôte de 256 octets et un nom de noeud sur 8 octets), mais
c’est le cas sous Linux. La même chose est vraie pour setdomainname(2)
et le champ domainname.
La longueur des champs de la structure varie. Certains systèmes
d’exploitation ou bibliothèques utilisent des valeurs en dur de 9, 33,
65, ou 257. D’autres systèmes utilisent SYS_NMLN, _SYS_NMLN, UTSLEN ou
_UTSNAME_LENGTH. Clairement, il faut éviter d’utiliser ces constantes,
employez plutôt sizeof(...). On choisit souvent la valeur 257 qui per‐
met de stocker un nom d’hôte Internet entier.
Il y a eu trois appels système uname() sous Linux. Le premier utilisait
une longueur de 9, le second de 65 et le troisième utilise également 65
mais ajoute le champ domainname.
Code: Select all
struct old_utsname {
char sysname[65];
char nodename[65];
char release[65];
char version[65];
char machine[65];
};
Code: Select all
Structure old_utsname
sysname.s{65}
nodename.s{65}
release.s{65}
version.s{65}
machine.s{65}
EndStructure
Global *test.old_utsname=AllocateMemory(SizeOf(old_utsname))
If uname_(*test) = 0
With *test
Debug \sysname
Debug \nodename
Debug \release
Debug \version
Debug \machine
EndWith
Else
Debug "error"
EndIf
Code: Select all
Structure old_utsname
sysname.s{65}
nodename.s{65}
release.s{65}
version.s{65}
machine.s{65}
EndStructure
Global test.old_utsname
If uname_(@test) = 0
With test
Debug \sysname
Debug \nodename
Debug \release
Debug \version
Debug \machine
EndWith
Else
Debug "error"
EndIf