delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/03/25/07:30:24

From: michael DOT mauch AT gmx DOT de (Michael Mauch)
Newsgroups: comp.os.msdos.djgpp
Subject: How should gethostname() work?
Date: Wed, 25 Mar 1998 13:27:32 +0100
Organization: Gerhard-Mercator-Universitaet -GH- Duisburg
Lines: 66
Message-ID: <6fat7h$2jh$1@news-hrz.uni-duisburg.de>
NNTP-Posting-Host: ppp95.uni-duisburg.de
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Hi,

gethostname() gets the name of the host the program is executing on by
calling Int 21h, function 5E00h (in the first place). This works find on
Windows 95 with TCP/IP and/or DUN installed: it retrieves the "computer
name" entered in the "Identification" tab of the networking control
panel (converted to uppercase).

But the name delivered by the above function is blank padded, so
gethostname() will give "MY_HOST         " instead of "MY_HOST".

Wouldn't it be better if gethostname() stripped the trailing blanks? Or
should that be handled by the users of gethostname()? How is it done on
Unix?

Also, I see that gethostname() retrieves only up to 16 characters of the
host name. Shouldn't that be MAXGETHOSTNAME (==128)?

Regards...
		Michael

*** gethostn.c0	Tue Jun 13 08:58:54 1995
--- gethostn.c	Wed Mar 25 11:01:06 1998
***************
*** 6,18 ****
  #include <stdlib.h>
  #include <dpmi.h>
  #include <go32.h>
  
  static char pc_n[]= "pc";
  
  int
  gethostname (char *buf, int size)
  {
!   char *h, dosbuf[16];
    int len;
    __dpmi_regs r;
  
--- 6,19 ----
  #include <stdlib.h>
  #include <dpmi.h>
  #include <go32.h>
+ #include <sys/param.h>
  
  static char pc_n[]= "pc";
  
  int
  gethostname (char *buf, int size)
  {
!   char *h, dosbuf[MAXGETHOSTNAME], *p;
    int len;
    __dpmi_regs r;
  
***************
*** 36,41 ****
--- 37,45 ----
    }
  
    len = strlen (h);
+   for (p = h + len - 1; p>=h; p--)
+     if (' ' == *p)
+       *p = '\0', len--;
    if (len + 1 > size)
    {
      errno = ERANGE;

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019