diff options
Diffstat (limited to 'hostname.c')
-rw-r--r-- | hostname.c | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/hostname.c b/hostname.c deleted file mode 100644 index d87851509..000000000 --- a/hostname.c +++ /dev/null | |||
@@ -1,128 +0,0 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * $Id: hostname.c,v 1.30 2001/06/26 02:06:08 bug1 Exp $ | ||
4 | * Mini hostname implementation for busybox | ||
5 | * | ||
6 | * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> | ||
7 | * | ||
8 | * adjusted by Erik Andersen <andersee@debian.org> to remove | ||
9 | * use of long options and GNU getopt. Improved the usage info. | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License as published by | ||
13 | * the Free Software Foundation; either version 2 of the License, or | ||
14 | * (at your option) any later version. | ||
15 | * | ||
16 | * This program is distributed in the hope that it will be useful, | ||
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
19 | * General Public License for more details. | ||
20 | * | ||
21 | * You should have received a copy of the GNU General Public License | ||
22 | * along with this program; if not, write to the Free Software | ||
23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
24 | */ | ||
25 | |||
26 | #include <errno.h> | ||
27 | #include <arpa/inet.h> | ||
28 | #include <netdb.h> | ||
29 | #include <unistd.h> | ||
30 | #include <string.h> | ||
31 | #include <stdio.h> | ||
32 | #include <stdlib.h> | ||
33 | #include "busybox.h" | ||
34 | |||
35 | static void do_sethostname(char *s, int isfile) | ||
36 | { | ||
37 | FILE *f; | ||
38 | char buf[255]; | ||
39 | |||
40 | if (!s) | ||
41 | return; | ||
42 | if (!isfile) { | ||
43 | if (sethostname(s, strlen(s)) < 0) { | ||
44 | if (errno == EPERM) | ||
45 | error_msg_and_die("you must be root to change the hostname"); | ||
46 | else | ||
47 | perror_msg_and_die("sethostname"); | ||
48 | } | ||
49 | } else { | ||
50 | f = xfopen(s, "r"); | ||
51 | fgets(buf, 255, f); | ||
52 | #ifdef BB_FEATURE_CLEAN_UP | ||
53 | fclose(f); | ||
54 | #endif | ||
55 | chomp(buf); | ||
56 | do_sethostname(buf, 0); | ||
57 | } | ||
58 | } | ||
59 | |||
60 | int hostname_main(int argc, char **argv) | ||
61 | { | ||
62 | int opt_short = 0; | ||
63 | int opt_domain = 0; | ||
64 | int opt_ip = 0; | ||
65 | struct hostent *h; | ||
66 | char *filename = NULL; | ||
67 | char buf[255]; | ||
68 | char *s = NULL; | ||
69 | |||
70 | if (argc < 1) | ||
71 | show_usage(); | ||
72 | |||
73 | while (--argc > 0 && **(++argv) == '-') { | ||
74 | while (*(++(*argv))) { | ||
75 | switch (**argv) { | ||
76 | case 's': | ||
77 | opt_short = 1; | ||
78 | break; | ||
79 | case 'i': | ||
80 | opt_ip = 1; | ||
81 | break; | ||
82 | case 'd': | ||
83 | opt_domain = 1; | ||
84 | break; | ||
85 | case 'F': | ||
86 | if (--argc == 0) { | ||
87 | show_usage(); | ||
88 | } | ||
89 | filename = *(++argv); | ||
90 | break; | ||
91 | case '-': | ||
92 | if (strcmp(++(*argv), "file") || --argc ==0 ) { | ||
93 | show_usage(); | ||
94 | } | ||
95 | filename = *(++argv); | ||
96 | break; | ||
97 | default: | ||
98 | show_usage(); | ||
99 | } | ||
100 | if (filename != NULL) | ||
101 | break; | ||
102 | } | ||
103 | } | ||
104 | |||
105 | if (argc >= 1) { | ||
106 | do_sethostname(*argv, 0); | ||
107 | } else if (filename != NULL) { | ||
108 | do_sethostname(filename, 1); | ||
109 | } else { | ||
110 | gethostname(buf, 255); | ||
111 | if (opt_short) { | ||
112 | s = strchr(buf, '.'); | ||
113 | if (!s) | ||
114 | s = buf; | ||
115 | *s = 0; | ||
116 | puts(buf); | ||
117 | } else if (opt_domain) { | ||
118 | s = strchr(buf, '.'); | ||
119 | puts(s ? s + 1 : ""); | ||
120 | } else if (opt_ip) { | ||
121 | h = xgethostbyname(buf); | ||
122 | puts(inet_ntoa(*(struct in_addr *) (h->h_addr))); | ||
123 | } else { | ||
124 | puts(buf); | ||
125 | } | ||
126 | } | ||
127 | return(0); | ||
128 | } | ||