Pushes the Plan 9 BSD shims into glibc (XCC)
[akaros.git] / tools / compilers / gcc-glibc / glibc-2.19-akaros / sysdeps / akaros / gethostname.c
1 /* 
2  * This file is part of the UCB release of Plan 9. It is subject to the license
3  * terms in the LICENSE file found in the top-level directory of this
4  * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
5  * part of the UCB release of Plan 9, including this file, may be copied,
6  * modified, propagated, or distributed except according to the terms contained
7  * in the LICENSE file.
8  */
9
10 #include <sys/types.h>
11 #include <unistd.h>
12 #include <stdlib.h>
13 #include <fcntl.h>
14 #include <string.h>
15
16 /* Unlike the glibc version, this ensures that name is null-terminated.*/
17 int __gethostname(char *name, size_t namelen)
18 {
19         int n, fd;
20         char buf[128];
21
22         fd = open("/dev/sysname", O_RDONLY);
23         if (fd < 0)
24                 return -1;
25         n = read(fd, buf, sizeof(buf) - 1);
26         close(fd);
27         if (n <= 0)
28                 return -1;
29         buf[n] = 0;
30         strncpy(name, buf, namelen);
31         name[namelen - 1] = 0;
32         return 0;
33 }
34 weak_alias(__gethostname, gethostname)