X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=hostname.c;h=a6e001d54459dcfb502d680c25c3818a35b1d1f8;hb=7cf9fed83f6e7bf86eb4cac324b98734739fa861;hp=ef921024b972b307b53d33bbe5d6be54f7100e51;hpb=7ab9c7ee52db8759d457819f5480378fa3aa97cc;p=oweals%2Fbusybox.git diff --git a/hostname.c b/hostname.c index ef921024b..a6e001d54 100644 --- a/hostname.c +++ b/hostname.c @@ -1,6 +1,6 @@ /* vi: set sw=4 ts=4: */ /* - * $Id: hostname.c,v 1.8 2000/05/12 19:41:47 erik Exp $ + * $Id: hostname.c,v 1.26 2001/03/09 21:24:12 andersen Exp $ * Mini hostname implementation for busybox * * Copyright (C) 1999 by Randolph Chung @@ -23,29 +23,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "internal.h" +#include "busybox.h" #include #include #include #include +#include #include +#include -static const char *hostname_usage = - "hostname [OPTION] {hostname | -F file}\n" -#ifndef BB_FEATURE_TRIVIAL_HELP - "\nGet or set the hostname or DNS domain name. If a hostname is given\n" - "(or a file with the -F parameter), the host name will be set.\n\n" - "Options:\n" - "\t-s\t\tShort\n" - - "\t-i\t\tAddresses for the hostname\n" - "\t-d\t\tDNS domain name\n" - "\t-F FILE\t\tUse the contents of FILE to specify the hostname\n" -#endif - ; - - -void do_sethostname(char *s, int isfile) +static void do_sethostname(char *s, int isfile) { FILE *f; char buf[255]; @@ -55,26 +42,17 @@ void do_sethostname(char *s, int isfile) if (!isfile) { if (sethostname(s, strlen(s)) < 0) { if (errno == EPERM) - fprintf(stderr, - "hostname: you must be root to change the hostname\n"); + error_msg_and_die("you must be root to change the hostname"); else - perror("sethostname"); - exit(1); + perror_msg_and_die("sethostname"); } } else { - if ((f = fopen(s, "r")) == NULL) { - perror(s); - exit(1); - } else { - fgets(buf, 255, f); - fclose(f); - if (buf[strlen(buf) - 1] == '\n') - buf[strlen(buf) - 1] = 0; - if (sethostname(buf, strlen(buf)) < 0) { - perror("sethostname"); - exit(1); - } - } + f = xfopen(s, "r"); + fgets(buf, 255, f); + fclose(f); + chomp(buf); + if (sethostname(buf, strlen(buf)) < 0) + perror_msg_and_die("sethostname"); } } @@ -89,7 +67,7 @@ int hostname_main(int argc, char **argv) char *s = NULL; if (argc < 1) - usage(hostname_usage); + show_usage(); while (--argc > 0 && **(++argv) == '-') { while (*(++(*argv))) { @@ -104,14 +82,19 @@ int hostname_main(int argc, char **argv) opt_domain = 1; break; case 'F': - filename = optarg; if (--argc == 0) { - usage(hostname_usage); + show_usage(); + } + filename = *(++argv); + break; + case '-': + if (strcmp(++(*argv), "file") || --argc ==0 ) { + show_usage(); } filename = *(++argv); break; default: - usage(hostname_usage); + show_usage(); } if (filename != NULL) break; @@ -144,5 +127,5 @@ int hostname_main(int argc, char **argv) printf("%s\n", buf); } } - exit(0); + return(0); }