diff options
Diffstat (limited to 'release/sysinstall')
-rw-r--r-- | release/sysinstall/apache.c | 4 | ||||
-rw-r--r-- | release/sysinstall/installFinal.c | 273 | ||||
-rw-r--r-- | release/sysinstall/installPreconfig.c | 9 | ||||
-rw-r--r-- | release/sysinstall/installUpgrade.c | 21 | ||||
-rw-r--r-- | release/sysinstall/lndir.c | 217 | ||||
-rw-r--r-- | release/sysinstall/options.c | 14 |
6 files changed, 379 insertions, 159 deletions
diff --git a/release/sysinstall/apache.c b/release/sysinstall/apache.c index 88995deedbc8..d4b38fe8e298 100644 --- a/release/sysinstall/apache.c +++ b/release/sysinstall/apache.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: apache.c,v 1.8 1995/10/27 17:31:03 jkh Exp $ + * $Id: apache.c,v 1.9 1995/10/30 08:04:43 jkh Exp $ * * Copyright (c) 1995 * Coranth Gryphon. All rights reserved. @@ -394,7 +394,7 @@ apacheOpenDialog() } int -installApache(char *unused) +configApache(char *unused) { int i,maxcon; char company[64], file[128]; diff --git a/release/sysinstall/installFinal.c b/release/sysinstall/installFinal.c index 1642b0826cb4..7aa08344fe96 100644 --- a/release/sysinstall/installFinal.c +++ b/release/sysinstall/installFinal.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: installFinal.c,v 1.12 1995/10/26 08:55:47 jkh Exp $ + * $Id: installFinal.c,v 1.13 1995/10/27 03:59:36 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard & Coranth Gryphon. All rights reserved. @@ -52,6 +52,8 @@ #include <unistd.h> #include <sys/mount.h> +/* This file contains all the final configuration thingies */ + static DMenu MenuSamba = { DMENU_MULTIPLE_TYPE | DMENU_SELECTION_RETURNS, "Samba Services Menu", @@ -76,169 +78,178 @@ static DMenu MenuSamba = { #define SMB_CONF "./smb.conf" -/* Do any final network configuration hackery */ +/* Load gated package and maybe even seek to configure or explain it a little */ int -installNetworking(char *unused) +configGated(char *unused) +{ + variable_set2("gated", "YES"); + return RET_SUCCESS; +} + +/* Configure this machine as an anonymous FTP server */ +int +configAnonFTP(char *unused) { - int i, tval; - char tbuf[256]; char *tptr; - FILE *fptr; + char tbuf[256]; + int i = RET_SUCCESS; - i = RET_SUCCESS; + tptr = msgGetInput("/u", "What directory should the anonymous ftp account point to?"); + if (tptr && *tptr && (tptr[0] == '/')) { + int len = strlen(tbuf); - /* Do we want to install and set up gated? */ - if (variable_get("gated")) { - /* Load gated package and maybe even seek to configure or explain it a little */ - } + strcpy(tbuf, tptr); + if (tbuf[len - 1] == '/') + tbuf[len - 1] = '\0'; - /* Set up anonymous FTP access to this machine? */ - if (variable_get("anon_ftp")) { - tptr = msgGetInput("/u", "What directory should the anonymous ftp's home be under?"); - if (tptr && *tptr && (tptr[0] == '/')) { - int len = strlen(tbuf); - - strcpy(tbuf, tptr); - if (tbuf[len - 1] == '/') - tbuf[len - 1] = '\0'; - - if (vsystem("adduser -uid %d -home %s -shell date -dotdir no -batch %s %s \"%s\" ", - FTP_UID, tbuf, FTP_NAME, FTP_GROUP, FTP_COMMENT)) { - dialog_clear(); - msgConfirm("Unable to create FTP user! Anonymous FTP setup failed."); - i = RET_FAIL; - } - else { - vsystem("mkdir %s/%s/pub", tbuf, FTP_NAME); - vsystem("mkdir %s/%s/upload", tbuf, FTP_NAME); - vsystem("chmod 0777 %s/%s/upload", tbuf, FTP_NAME); - } + if (vsystem("adduser -uid %d -home %s -shell date -dotdir no -batch %s %s \"%s\" ", + FTP_UID, tbuf, FTP_NAME, FTP_GROUP, FTP_COMMENT)) { + dialog_clear(); + msgConfirm("Unable to create FTP user! Anonymous FTP setup failed."); + i = RET_FAIL; } else { - dialog_clear(); - msgConfirm("Invalid Directory. Anonymous FTP will not be set up."); + vsystem("mkdir -p %s; chmod 555 %s; chown root %s", tbuf, tbuf, tbuf); + vsystem("mkdir %s/bin && chmod 555 %s/bin", tbuf, tbuf); + vsystem("cp /bin/ls %s/bin && chmod 111 %s/bin/ls", tbuf, tbuf); + vsystem("mkdir %s/etc && chmod 555 %s/etc", tbuf, tbuf); + vsystem("cp /etc/pwd.db /etc/group %s/etc && chmod 444 %s/etc/pwd.db %s/etc/group", tbuf, tbuf, tbuf); + vsystem("mkdir -p %s/pub/incoming", tbuf); + vsystem("chmod 1777 %s/pub/incoming", tbuf); + vsystem("chown -R %s %s/pub", FTP_NAME, tbuf); } } - - /* Set this machine up as a web server? */ - if (variable_get("apache_httpd")) { - i = installApache(NULL); + else { + dialog_clear(); + msgConfirm("Invalid Directory. Anonymous FTP will not be set up."); + i = RET_FAIL; } + return i; +} - /* Set this machine up as a Samba server? */ - if (variable_get("samba")) { - if (!dmenuOpenSimple(&MenuSamba)) - i = RET_FAIL; - else { - fptr = fopen("/tmp/smb.conf","w"); - if (fptr) { - strcpy(tbuf,"FreeBSD - Samba %v"); - if (variable_get("SAMBA_string")) { - tptr = msgGetInput("FreeBSD - Samba %%v", "What should this server list as its description?\n" - "Note that the \"%%v\" refers to the samba version number."); - if (tptr && *tptr) - strcpy(tbuf, tptr); - } +int +configSamba(char *unused) +{ + int i = RET_SUCCESS; + + if (!dmenuOpenSimple(&MenuSamba)) + i = RET_FAIL; + else { + FILE *fptr; + char tbuf[256], *tptr; + int tval; + + fptr = fopen("/tmp/smb.conf","w"); + if (fptr) { + strcpy(tbuf,"FreeBSD - Samba %v"); + if (variable_get("SAMBA_string")) { + tptr = msgGetInput("FreeBSD - Samba %%v", "What should this server list as its description?\n" + "Note that the \"%%v\" refers to the samba version number."); + if (tptr && *tptr) + strcpy(tbuf, tptr); + } - fprintf(fptr, "[global]\n"); - fprintf(fptr, "comment = %s\n", tbuf); - fprintf(fptr, "log file = /var/log/samba.log\n"); - fprintf(fptr, "dont descend = /dev,/proc,/root,/stand\n\n"); + fprintf(fptr, "[global]\n"); + fprintf(fptr, "comment = %s\n", tbuf); + fprintf(fptr, "log file = /var/log/samba.log\n"); + fprintf(fptr, "dont descend = /dev,/proc,/root,/stand\n\n"); - fprintf(fptr, "printing = bsd\n"); - fprintf(fptr, "map archive = no\n"); - fprintf(fptr, "status = yes\n"); - fprintf(fptr, "public = yes\n"); - fprintf(fptr, "read only = no\n"); - fprintf(fptr, "preserve case = yes\n"); - fprintf(fptr, "strip dot = yes\n"); - fprintf(fptr, "security = share\n"); - fprintf(fptr, "guest ok = yes\n\n"); + fprintf(fptr, "printing = bsd\n"); + fprintf(fptr, "map archive = no\n"); + fprintf(fptr, "status = yes\n"); + fprintf(fptr, "public = yes\n"); + fprintf(fptr, "read only = no\n"); + fprintf(fptr, "preserve case = yes\n"); + fprintf(fptr, "strip dot = yes\n"); + fprintf(fptr, "security = share\n"); + fprintf(fptr, "guest ok = yes\n\n"); - if (variable_get("SAMBA_homes")) { - fprintf(fptr, "[homes]\n"); - fprintf(fptr, "browseable = no\n"); - fprintf(fptr, "comment = User Home Directory\n"); - fprintf(fptr, "create mode = 0775\n"); - fprintf(fptr, "public = no\n\n"); - } + if (variable_get("SAMBA_homes")) { + fprintf(fptr, "[homes]\n"); + fprintf(fptr, "browseable = no\n"); + fprintf(fptr, "comment = User Home Directory\n"); + fprintf(fptr, "create mode = 0775\n"); + fprintf(fptr, "public = no\n\n"); + } - if (variable_get("SAMBA_printers")) { - fprintf(fptr, "[printers]\n"); - fprintf(fptr, "path = /var/spool\n"); - fprintf(fptr, "comment = Printers\n"); - fprintf(fptr, "create mode = 0700\n"); - fprintf(fptr, "browseable = no\n"); - fprintf(fptr, "printable = yes\n"); - fprintf(fptr, "read only = yes\n"); - fprintf(fptr, "public = no\n\n"); - } - - if (variable_get("SAMBA_export")) { - for (tval = 0; ! tval; tval = msgYesNo("Another?")) { - tptr = msgGetInput(NULL,"What directory to export?"); - if (tptr && *tptr && (tptr[0] == '/')) { - int len = strlen(tbuf); - - strcpy(tbuf, tptr); - if (tbuf[len - 1] == '/') - tbuf[len - 1] = '\0'; - if (directoryExists(tbuf)) { - tptr = msgGetInput(pathBaseName(tbuf), "What do you want to call this share?"); - if (tptr && *tptr) { - fprintf(fptr, "[%s]\npath = %s\n", tptr, tbuf); - tptr = msgGetInput(NULL, "Enter a short description of this share?"); - if (tptr && *tptr) - fprintf(fptr, "comment = %s\n", tptr); - if (msgYesNo("Do you want this share to be read only?")) - fprintf(fptr, "read only = no\n\n"); - else - fprintf(fptr, "read only = yes\n\n"); - } - else { - dialog_clear(); - msgConfirm("Invalid Share Name."); - } + if (variable_get("SAMBA_printers")) { + fprintf(fptr, "[printers]\n"); + fprintf(fptr, "path = /var/spool\n"); + fprintf(fptr, "comment = Printers\n"); + fprintf(fptr, "create mode = 0700\n"); + fprintf(fptr, "browseable = no\n"); + fprintf(fptr, "printable = yes\n"); + fprintf(fptr, "read only = yes\n"); + fprintf(fptr, "public = no\n\n"); + } + + if (variable_get("SAMBA_export")) { + for (tval = 0; ! tval; tval = msgYesNo("Another?")) { + tptr = msgGetInput(NULL,"What directory to export?"); + if (tptr && *tptr && (tptr[0] == '/')) { + int len = strlen(tbuf); + + strcpy(tbuf, tptr); + if (tbuf[len - 1] == '/') + tbuf[len - 1] = '\0'; + if (directoryExists(tbuf)) { + tptr = msgGetInput(pathBaseName(tbuf), "What do you want to call this share?"); + if (tptr && *tptr) { + fprintf(fptr, "[%s]\npath = %s\n", tptr, tbuf); + tptr = msgGetInput(NULL, "Enter a short description of this share?"); + if (tptr && *tptr) + fprintf(fptr, "comment = %s\n", tptr); + if (msgYesNo("Do you want this share to be read only?")) + fprintf(fptr, "read only = no\n\n"); + else + fprintf(fptr, "read only = yes\n\n"); } else { dialog_clear(); - msgConfirm("Directory does not exist."); + msgConfirm("Invalid Share Name."); } - } /* end if (tptr) */ - } /* end for loop */ - } /* end if (SAMBA_export) */ - - fclose(fptr); - vsystem("mv -f /tmp/smb.conf %s", SMB_CONF); - } - else { - dialog_clear(); - msgConfirm("Unable to open temporary smb.conf file.\nSamba must be configured by hand."); - } + } + else { + dialog_clear(); + msgConfirm("Directory does not exist."); + } + } /* end if (tptr) */ + } /* end for loop */ + } /* end if (SAMBA_export) */ + fclose(fptr); + vsystem("mv -f /tmp/smb.conf %s", SMB_CONF); + } + else { + dialog_clear(); + msgConfirm("Unable to open temporary smb.conf file.\n" + "Samba will have to be configured by hand."); } } + return i; +} - /* Set this machine up with a PC-NFS authentication server? */ - if (variable_get("pcnfsd")) { - /* Load and configure pcnfsd */ - } - +int +configNFSServer(char *unused) +{ /* If we're an NFS server, we need an exports file */ - if (variable_get("nfs_server") && !file_readable("/etc/exports")) { + if (!file_readable("/etc/exports")) { dialog_clear(); msgConfirm("You have chosen to be an NFS server but have not yet configured\n" "the /etc/exports file. You must configure this information before\n" "other hosts will be able to mount file systems from your machine.\n" "Press [ENTER] now to invoke an editor on /etc/exports"); - vsystem("echo '#The following example exports /usr to 3 machines named after ducks:' > /etc/exports"); - vsystem("echo '#/usr huey louie dewie' >> /etc/exports"); + vsystem("echo '#The following examples export /usr to 3 machines named after ducks,' > /etc/exports"); + vsystem("echo '#/home and all directories under it to machines named after dead rock stars,' >> /etc/exports"); + vsystem("echo '#and, finally, /a to 2 privileged machines allowed to write on it as root.' >> /etc/exports"); + vsystem("echo '#/usr huey louie dewie' >> /etc/exports"); + vsystem("echo '#/home -alldirs janice jimmy frank' >> /etc/exports"); + vsystem("echo '#/a -maproot=0 bill albert' >> /etc/exports"); vsystem("echo '#' >> /etc/exports"); vsystem("echo '# You should replace these lines with your actual exported filesystems.' >> /etc/exports"); vsystem("echo >> /etc/exports"); systemExecute("ee /etc/exports"); } - configResolv(); - configSysconfig(); - return i; + variable_set2("nfs_server", "YES"); + return RET_SUCCESS; } diff --git a/release/sysinstall/installPreconfig.c b/release/sysinstall/installPreconfig.c index 22ca295fb577..e5f323223c7e 100644 --- a/release/sysinstall/installPreconfig.c +++ b/release/sysinstall/installPreconfig.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: installPreconfig.c,v 1.15 1995/10/27 01:22:57 jkh Exp $ + * $Id: installPreconfig.c,v 1.16 1995/10/27 17:00:23 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -60,6 +60,11 @@ static struct _word { char *name; int (*handler)(char *str); } resWords[] = { + { "configAnonFTP", configAnonFTP }, + { "configApache", configApache }, + { "configGated", configGated }, + { "configNFSServer", configNFSServer }, + { "configSamba", configSamba }, { "diskPartitionEditor", diskPartitionEditor }, { "diskPartitionWrite", diskPartitionWrite }, { "diskLabelEditor", diskLabelEditor }, @@ -79,13 +84,11 @@ static struct _word { { "distExtractAll", distExtractAll }, { "docBrowser", docBrowser }, { "docShowDocument", docShowDocument }, - { "installApache", installApache }, { "installCommit", installCommit }, { "installExpress", installExpress }, { "installUpgrade", installUpgrade }, { "installPreconfig", installPreconfig }, { "installFixup", installFixup }, - { "installNetworking", installNetworking }, { "installFilesystems", installFilesystems }, { "mediaSetCDROM", mediaSetCDROM }, { "mediaSetFloppy", mediaSetFloppy }, diff --git a/release/sysinstall/installUpgrade.c b/release/sysinstall/installUpgrade.c index 4d1986d56f5f..da8641d7eafa 100644 --- a/release/sysinstall/installUpgrade.c +++ b/release/sysinstall/installUpgrade.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: installUpgrade.c,v 1.11 1995/10/26 08:55:49 jkh Exp $ + * $Id: installUpgrade.c,v 1.12 1995/10/27 03:59:38 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -320,20 +320,11 @@ installUpgrade(char *str) } } - if (installNetworking("upgrade") == RET_FAIL) { - dialog_clear(); - msgConfirm("Some of the networking configuration stuff evidently failed, but\n" - "the first stage of the upgrade should otherwise be considered a\n" - "success!\n\n" - "Next comes stage 2, where we attempt to resurrect your /etc\n" - "directory!"); - } - else { - dialog_clear(); - msgConfirm("First stage of upgrade completed successfully!\n\n" - "Next comes stage 2, where we attempt to resurrect your /etc\n" - "directory!"); - } + dialog_clear(); + msgConfirm("First stage of upgrade completed successfully!\n\n" + "Next comes stage 2, where we attempt to resurrect your /etc\n" + "directory!"); + if (chdir(saved_etc)) { dialog_clear(); msgConfirm("Unable to go to your saved /etc directory in %s?! Argh!\n" diff --git a/release/sysinstall/lndir.c b/release/sysinstall/lndir.c new file mode 100644 index 000000000000..665f3627d343 --- /dev/null +++ b/release/sysinstall/lndir.c @@ -0,0 +1,217 @@ +/* $XConsortium: lndir.c,v 1.14 95/01/09 20:08:20 kaleb Exp $ */ +/* $XFree86: xc/config/util/lndir.c,v 3.3 1995/01/28 15:41:09 dawes Exp $ */ +/* Create shadow link tree (after X11R4 script of the same name) + Mark Reinhold (mbr@lcs.mit.edu)/3 January 1990 */ + +/* Hacked somewhat by Jordan Hubbard, The FreeBSD Project, to make it */ +/* an invokable function from sysinstall rather than a stand-alone binary */ + +/* +Copyright (c) 1990, X Consortium + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the X Consortium shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the X Consortium. + +*/ + +/* From the original /bin/sh script: + + Used to create a copy of the a directory tree that has links for all + non-directories (except those named RCS, SCCS or CVS.adm). If you are + building the distribution on more than one machine, you should use + this technique. + + If your master sources are located in /usr/local/src/X and you would like + your link tree to be in /usr/local/src/new-X, do the following: + + % mkdir /usr/local/src/new-X + % cd /usr/local/src/new-X + % lndir ../X +*/ + +#include <stdio.h> +#include <string.h> +#include <sys/errno.h> +#include <sys/stat.h> +#include <sys/param.h> +#include <errno.h> +#include <dirent.h> +#include <stdarg.h> +#include "sysinstall.h" + +#ifndef MAXPATHLEN +#define MAXPATHLEN 2048 +#endif + +static char *rcurdir; +static char *curdir; + +static int +equivalent(char *lname, char *rname) +{ + char *s; + + if (!strcmp(lname, rname)) + return 1; + for (s = lname; *s && (s = strchr(s, '/')); s++) { + while (s[1] == '/') + strcpy(s+1, s+2); + } + return !strcmp(lname, rname); +} + + +/* Recursively create symbolic links from the current directory to the "from" + directory. Assumes that files described by fs and ts are directories. */ + +static int +dodir(char *fn, struct stat *fs, struct stat *ts, int rel) +{ + DIR *df; + struct dirent *dp; + char buf[MAXPATHLEN + 1], *p; + char symbuf[MAXPATHLEN + 1]; + struct stat sb, sc; + int n_dirs; + int symlen; + char *ocurdir; + + if ((fs->st_dev == ts->st_dev) && (fs->st_ino == ts->st_ino)) + return 1; + + if (rel) + strcpy (buf, "../"); + else + buf[0] = '\0'; + strcat (buf, fn); + + if (!(df = opendir (buf))) { + msgDebug("%s: Cannot opendir\n", buf); + return 1; + } + + p = buf + strlen (buf); + *p++ = '/'; + n_dirs = fs->st_nlink; + while ((dp = readdir (df)) != NULL) { + if (dp->d_name[strlen(dp->d_name) - 1] == '~') + continue; + strcpy (p, dp->d_name); + + if (n_dirs > 0) { + if (stat (buf, &sb) < 0) { + msgDebug("Can't stat: %s\n", buf); + continue; + } + + if (S_ISDIR(sb.st_mode)) { + /* directory */ + n_dirs--; + if (dp->d_name[0] == '.' && + (dp->d_name[1] == '\0' || (dp->d_name[1] == '.' && dp->d_name[2] == '\0'))) + continue; + if (!strcmp (dp->d_name, "RCS")) + continue; + if (!strcmp (dp->d_name, "SCCS")) + continue; + if (!strcmp (dp->d_name, "CVS")) + continue; + if (!strcmp (dp->d_name, "CVS.adm")) + continue; + ocurdir = rcurdir; + rcurdir = buf; + curdir = isDebug() ? buf : (char *)0; + if (isDebug()) + msgDebug("%s:\n", buf); + if ((stat(dp->d_name, &sc) < 0) && (errno == ENOENT)) { + if (mkdir(dp->d_name, 0777) < 0 || + stat (dp->d_name, &sc) < 0) { + msgDebug("Unable to make or stat: %s\n", dp->d_name); + curdir = rcurdir = ocurdir; + continue; + } + } + if (readlink (dp->d_name, symbuf, sizeof(symbuf) - 1) >= 0) { + msgDebug("%s: is a link instead of a directory\n", dp->d_name); + curdir = rcurdir = ocurdir; + continue; + } + if (chdir (dp->d_name) < 0) { + msgDebug("Unable to chdir to: %s\n", dp->d_name); + curdir = rcurdir = ocurdir; + continue; + } + (void)dodir(buf, &sb, &sc, (buf[0] != '/')); + if (chdir ("..") < 0) { + msgDebug("Unable to get back to ..\n"); + return RET_FAIL; + } + curdir = rcurdir = ocurdir; + continue; + } + } + + /* non-directory */ + symlen = readlink (dp->d_name, symbuf, sizeof(symbuf) - 1); + if (symlen >= 0) { + symbuf[symlen] = '\0'; + if (!equivalent (symbuf, buf)) + msgDebug("%s: %s\n", dp->d_name, symbuf); + } else if (symlink (buf, dp->d_name) < 0) + msgDebug("Unable to create symlink: %s\n", dp->d_name); + } + + closedir (df); + return 0; +} + +int +lndir(char *from, char *to) +{ + struct stat fs, ts; + + if (!to) + to = "."; + + /* to directory */ + if (stat(to, &ts) < 0) { + msgDebug("Destination directory doesn't exist: %s\n", to); + return RET_FAIL; + } + if (!(S_ISDIR(ts.st_mode))) { + msgDebug ("%s: Not a directory\n", to); + return RET_FAIL; + } + if (chdir(to) < 0) { + msgDebug("Unable to chdir to %s\n", to); + return RET_FAIL; + } + /* from directory */ + if (stat(from, &fs) < 0) { + msgDebug("From directory doesn't exist: %s\n", from); + return RET_FAIL; + } + if (!(S_ISDIR(fs.st_mode))) { + msgDebug ("%s: Not a directory\n", from); + return RET_FAIL; + } + return dodir(from, &fs, &ts, 0); +} diff --git a/release/sysinstall/options.c b/release/sysinstall/options.c index 0ab647a6cb0a..7aec6aa6b317 100644 --- a/release/sysinstall/options.c +++ b/release/sysinstall/options.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated for what's essentially a complete rewrite. * - * $Id: options.c,v 1.23 1995/10/22 01:32:57 jkh Exp $ + * $Id: options.c,v 1.25 1995/10/26 08:56:06 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -100,11 +100,11 @@ mediaCheck(Option opt) return "<unset>"; } -#define TAPE_PROMPT "Please enter the tape block size in 512 byte blocks" -#define RELNAME_PROMPT "Please specify the release you wish to load" +#define TAPE_PROMPT "Please enter the tape block size in 512 byte blocks:" +#define RELNAME_PROMPT "Please specify the release you wish to load:" #define BPKG_PROMPT "Please specify the name of the HTML browser package:" #define BBIN_PROMPT "Please specify a full pathname to the HTML browser binary:" -#define CONFIG_PROMPT "Please specify the name of a configuration file" +#define RETRY_PROMPT "Please specify the number of times to retry an FTP request:" static Option Options[] = { { "NFS Secure", "NFS server talks only on a secure port", @@ -118,7 +118,7 @@ static Option Options[] = { { "FTP OnError", "What to do when FTP requests fail: abort, retry, reselect.", OPT_IS_FUNC, mediaSetFtpOnError, VAR_FTP_ONERROR, varCheck }, { "FTP Retries", "If FTP OnError == retry, this is the number of times to try.", - OPT_IS_VAR, NULL, VAR_FTP_RETRIES, varCheck }, + OPT_IS_VAR, RETRY_PROMPT, VAR_FTP_RETRIES, varCheck }, { "FTP username", "Username and password to use instead of anonymous", OPT_IS_FUNC, mediaSetFtpUserPass, VAR_FTP_USER, varCheck }, { "Tape Blocksize", "Tape media block size in 512 byte blocks", @@ -127,12 +127,10 @@ static Option Options[] = { OPT_IS_FUNC, mediaSetCPIOVerbosity, VAR_CPIO_VERBOSITY, varCheck }, { "Release Name", "Which release to attempt to load from installation media", OPT_IS_VAR, RELNAME_PROMPT, VAR_RELNAME, varCheck }, -{ "Browser Pkg", "This is the browser package that will be used for viewing HTML", +{ "Browser Pkg", "This is the browser package that will be used for viewing HTML docs", OPT_IS_VAR, BPKG_PROMPT, VAR_BROWSER_PACKAGE, varCheck }, { "Browser Exec", "This is the path to the main binary of the browser package", OPT_IS_VAR, BBIN_PROMPT, VAR_BROWSER_BINARY, varCheck }, -{ "Config File", "Name of default configuration file for Load command (top menu)", - OPT_IS_VAR, CONFIG_PROMPT, VAR_CONFIG_FILE, varCheck }, { "Media Type", "The current installation media type.", OPT_IS_FUNC, mediaGetType, VAR_MEDIA_TYPE, mediaCheck }, { "Use Defaults", "Reset all values to startup defaults", |