Patch from Larry Doolittle (with minor touchups from me so everything compiles
[oweals/busybox.git] / hostname.c
index 77b545dedbae65b5a4a16f48650f33d05ee34a11..44d529c83fc287e2625fc658bdbe5b282d6b61fc 100644 (file)
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: hostname.c,v 1.12 2000/07/16 20:57:15 kraai Exp $
+ * $Id: hostname.c,v 1.15 2000/10/12 22:30:31 andersen Exp $
  * Mini hostname implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -23,7 +23,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
-#include "internal.h"
+#include "busybox.h"
 #include <errno.h>
 #include <arpa/inet.h>
 #include <netdb.h>
@@ -46,18 +46,14 @@ void do_sethostname(char *s, int isfile)
                        exit(1);
                }
        } else {
-               if ((f = fopen(s, "r")) == NULL) {
-                       perror(s);
+               f = xfopen(s, "r");
+               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);
-               } 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);
-                       }
                }
        }
 }
@@ -93,6 +89,12 @@ int hostname_main(int argc, char **argv)
                                }
                                filename = *(++argv);
                                break;
+                       case '-':
+                               if (strcmp(++(*argv), "file") || --argc ==0 ) {
+                                       usage(hostname_usage);
+                               }
+                               filename = *(++argv);
+                               break;
                        default:
                                usage(hostname_usage);
                        }