+ (void)unlink(to_name);
+ }
+ install(*argv, to_name, NO);
+ exit(0);
+}
+
+/*
+ * install --
+ * build a path name and install the file
+ */
+static
+install(from_name, to_name, isdir)
+ char *from_name, *to_name;
+ int isdir;
+{
+ struct stat from_sb;
+ int devnull, from_fd, to_fd;
+ char *C,
+ *rindex();
+
+ if ((from_fd = open(from_name, O_RDONLY, 0)) < 0) {
+ fprintf(stderr, "install: open: %s: %s\n", from_name, sys_errlist[errno]);
+ exit(1);
+ }
+
+ /* if try to install "/dev/null" to a directory, fails */
+ devnull = isdir ? NO : !strcmp(from_name, "/dev/null");
+ if (!devnull) {
+ if (fstat(from_fd, &from_sb)) {
+ fprintf(stderr, "install: can't find %s.\n", from_name);
+ exit(1);
+ }
+ if (!(from_sb.st_mode & S_IFREG)) {
+ fprintf(stderr, "install: %s isn't a regular file.\n", from_name);
+ exit(1);
+ }