home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
- #include <libc/stubs.h>
- #include <unistd.h>
- #include <errno.h>
- #include <string.h>
- #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;
-
- /* Try asking [a lan extension of] dos for a name. */
- r.x.ax = 0x5e00;
- r.h.ch = 0; /* Try to detect overloading of 0x5e00 */
- r.x.dx = __tb & 15;
- r.x.ds = __tb / 16;
- __dpmi_int (0x21, &r);
- if ((r.x.flags & 1) || r.h.ch == 0)
- {
- /* Failed. Try $HOSTNAME, then "pc". */
- h = getenv ("HOSTNAME");
- if (h == 0)
- h = pc_n;
- }
- else
- {
- dosmemget (__tb, sizeof (dosbuf), dosbuf);
- h = dosbuf;
- }
-
- len = strlen (h);
- if (len + 1 > size)
- {
- errno = ERANGE;
- return -1;
- }
- strcpy (buf, h);
- return 0;
- }
-
-
-