A number of improvements in the way statistics are printed, add a "chroot"
option for installing distributions and/or packages to somewhere other than /, say for a case where you're installing to an external disk on some other machine's behalf. More miscellaneous fixes to various problems I stumbled across while adding this stuff.
This commit is contained in:
parent
aa6e3d23d0
commit
8658743f95
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: dist.c,v 1.60 1996/07/02 01:03:37 jkh Exp $
|
||||
* $Id: dist.c,v 1.61 1996/07/08 10:07:57 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -331,7 +331,7 @@ distExtract(char *parent, Distribution *me)
|
||||
{
|
||||
int i, status, total;
|
||||
int cpid, zpid, fd, fd2, chunk, numchunks;
|
||||
char *path, *dist, buf[10240];
|
||||
char *path, *dist, buf[BUFSIZ];
|
||||
const char *tmp;
|
||||
Attribs *dist_attr;
|
||||
WINDOW *w = savescr();
|
||||
@ -374,8 +374,10 @@ distExtract(char *parent, Distribution *me)
|
||||
*/
|
||||
fd = mediaDevice->get(mediaDevice, buf, TRUE);
|
||||
if (fd >= 0) {
|
||||
msgNotify("Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
status = mediaExtractDist(me[i].my_dir, fd);
|
||||
char *dir = root_bias(me[i].my_dir);
|
||||
|
||||
msgNotify("Extracting %s into %s directory...", dist, dir);
|
||||
status = mediaExtractDist(dir, fd);
|
||||
mediaDevice->close(mediaDevice, fd);
|
||||
goto done;
|
||||
}
|
||||
@ -422,32 +424,33 @@ distExtract(char *parent, Distribution *me)
|
||||
if (isDebug())
|
||||
msgDebug("Attempting to extract distribution from %u chunks.\n", numchunks);
|
||||
|
||||
/* We have one or more chunks, go pick them up */
|
||||
mediaExtractDistBegin(me[i].my_dir, &fd2, &zpid, &cpid);
|
||||
total = 0;
|
||||
(void)gettimeofday(&start, (struct timezone *)0);
|
||||
/* We have one or more chunks, go pick them up */
|
||||
mediaExtractDistBegin(root_bias(me[i].my_dir), &fd2, &zpid, &cpid);
|
||||
for (chunk = 0; chunk < numchunks; chunk++) {
|
||||
int n, retval;
|
||||
int n, chunktotal, retval;
|
||||
char prompt[80];
|
||||
|
||||
snprintf(buf, 512, "%s/%s.%c%c", path, dist, (chunk / 26) + 'a', (chunk % 26) + 'a');
|
||||
if (isDebug())
|
||||
msgDebug("trying for piece %d of %d: %s\n", chunk + 1, numchunks, buf);
|
||||
chunktotal = 0;
|
||||
(void)gettimeofday(&start, (struct timezone *)0);
|
||||
fd = mediaDevice->get(mediaDevice, buf, FALSE);
|
||||
if (fd < 0) {
|
||||
msgConfirm("failed to retreive piece file %s!\n"
|
||||
"Aborting the transfer", buf);
|
||||
goto punt;
|
||||
}
|
||||
snprintf(prompt, 80, "Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
snprintf(prompt, 80, "Extracting %s into %s directory...", dist, root_bias(me[i].my_dir));
|
||||
dialog_gauge("Progress", prompt, 8, 15, 6, 50, (int)((float)(chunk + 1) / numchunks * 100));
|
||||
while (1) {
|
||||
int seconds;
|
||||
|
||||
n = read(fd, buf, sizeof buf);
|
||||
n = read(fd, buf, BUFSIZ);
|
||||
if (n <= 0)
|
||||
break;
|
||||
total += n;
|
||||
total += n, chunktotal += n;
|
||||
|
||||
/* Print statistics about how we're doing */
|
||||
(void) gettimeofday(&stop, (struct timezone *)0);
|
||||
@ -458,8 +461,8 @@ distExtract(char *parent, Distribution *me)
|
||||
seconds = stop.tv_sec + (stop.tv_usec / 1000000.0);
|
||||
if (!seconds)
|
||||
seconds = 1;
|
||||
msgInfo("%d bytes read from distribution, chunk %d of %d, %d KBytes/second",
|
||||
total, chunk + 1, numchunks, (total / seconds) / 1024);
|
||||
msgInfo("%d bytes read from %s distribution, chunk %d of %d @ %.1f KBytes/second",
|
||||
total, dist, chunk + 1, numchunks, (chunktotal / seconds) / 1024.0);
|
||||
retval = write(fd2, buf, n);
|
||||
if (retval != n) {
|
||||
mediaDevice->close(mediaDevice, fd);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: ftp_strat.c,v 1.20 1996/07/06 02:03:47 jkh Exp $
|
||||
* $Id: ftp_strat.c,v 1.21 1996/07/08 10:08:03 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -81,16 +81,14 @@ mediaInitFTP(Device *dev)
|
||||
msgFatal("Missing FTP host or directory specification - something's wrong!");
|
||||
|
||||
user = variable_get(VAR_FTP_USER);
|
||||
if (!user || !*user) {
|
||||
snprintf(password, BUFSIZ, "installer@%s", variable_get(VAR_HOSTNAME));
|
||||
if (!user || !*user)
|
||||
login_name = "anonymous";
|
||||
}
|
||||
else
|
||||
login_name = user;
|
||||
if (variable_get(VAR_FTP_PASS))
|
||||
strcpy(password, variable_get(VAR_FTP_PASS));
|
||||
else
|
||||
sprintf(password, "%s@%s", login_name, hostname);
|
||||
sprintf(password, "installer@%s", variable_get(VAR_HOSTNAME));
|
||||
msgNotify("Logging in as %s..", login_name);
|
||||
if (FtpOpen(ftp, hostname, login_name, password) != 0) {
|
||||
if (variable_get(VAR_NO_CONFIRM))
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: install.c,v 1.110 1996/07/08 10:08:07 jkh Exp $
|
||||
* $Id: install.c,v 1.111 1996/07/09 07:17:03 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -802,20 +802,18 @@ installFilesystems(dialogMenuItem *self)
|
||||
int
|
||||
installVarDefaults(dialogMenuItem *self)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
/* Set default startup options */
|
||||
variable_set2(VAR_ROUTEDFLAGS, "-q");
|
||||
variable_set2(VAR_RELNAME, RELEASE_NAME);
|
||||
variable_set2(VAR_CPIO_VERBOSITY, "high");
|
||||
variable_set2(VAR_TAPE_BLOCKSIZE, DEFAULT_TAPE_BLOCKSIZE);
|
||||
if (RunningAsInit)
|
||||
variable_set2(VAR_EDITOR, "/usr/bin/ee");
|
||||
else {
|
||||
char *cp = getenv("EDITOR");
|
||||
|
||||
if (!cp)
|
||||
cp = "/usr/bin/ee";
|
||||
variable_set2(VAR_EDITOR, cp);
|
||||
}
|
||||
variable_set2(VAR_INSTALL_ROOT, "/");
|
||||
cp = getenv("EDITOR");
|
||||
if (!cp)
|
||||
cp = "/usr/bin/ee";
|
||||
variable_set2(VAR_EDITOR, cp);
|
||||
variable_set2(VAR_FTP_USER, "ftp");
|
||||
variable_set2(VAR_BROWSER_PACKAGE, "lynx-2.5FM");
|
||||
variable_set2(VAR_BROWSER_BINARY, "/usr/local/bin/lynx");
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Miscellaneous support routines..
|
||||
*
|
||||
* $Id: misc.c,v 1.20 1996/06/25 18:41:10 jkh Exp $
|
||||
* $Id: misc.c,v 1.21 1996/07/08 08:54:30 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -203,6 +203,20 @@ safe_realloc(void *orig, size_t size)
|
||||
return ptr;
|
||||
}
|
||||
|
||||
/* Create a path biased from the VAR_INSTALL_ROOT variable (if not /) */
|
||||
char *
|
||||
root_bias(char *path)
|
||||
{
|
||||
static char tmp[FILENAME_MAX];
|
||||
char *cp = variable_get(VAR_INSTALL_ROOT);
|
||||
|
||||
if (!strcmp(cp, "/"))
|
||||
return path;
|
||||
strcpy(tmp, variable_get(VAR_INSTALL_ROOT));
|
||||
strcat(tmp, path);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
/*
|
||||
* These next routines are kind of specialized just for building string lists
|
||||
* for dialog_menu().
|
||||
|
@ -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.39 1996/06/14 14:33:58 jkh Exp $
|
||||
* $Id: options.c,v 1.40 1996/07/08 10:08:18 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -99,6 +99,7 @@ mediaCheck(Option opt)
|
||||
#define BBIN_PROMPT "Please specify a full pathname to the HTML browser binary:"
|
||||
#define EDITOR_PROMPT "Please specify the name of the text editor you wish to use:"
|
||||
#define PKG_PROMPT "Please specify a temporary directory with lots of free space:"
|
||||
#define INSTROOT_PROMPT "Please specify a root directory if installing somewhere other than /"
|
||||
|
||||
static Option Options[] = {
|
||||
{ "NFS Secure", "NFS server talks only on a secure port",
|
||||
@ -119,6 +120,8 @@ 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 },
|
||||
{ "Install Root", "Which directory to unpack distributions or packages relative to",
|
||||
OPT_IS_VAR, INSTROOT_PROMPT, VAR_INSTALL_ROOT, varCheck },
|
||||
{ "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",
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: package.c,v 1.40 1996/06/29 02:22:46 jkh Exp $
|
||||
* $Id: package.c,v 1.41 1996/07/08 08:54:32 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -128,6 +128,7 @@ package_extract(Device *dev, char *name, Boolean depended)
|
||||
dup2(DebugFD, 1);
|
||||
close(2);
|
||||
close(pfd[1]);
|
||||
chroot(variable_get(VAR_INSTALL_ROOT));
|
||||
i = execl("/usr/sbin/pkg_add", "/usr/sbin/pkg_add", "-", 0);
|
||||
if (isDebug())
|
||||
msgDebug("pkg_add returns %d status\n", i);
|
||||
@ -154,7 +155,7 @@ package_extract(Device *dev, char *name, Boolean depended)
|
||||
seconds = stop.tv_sec + (stop.tv_usec / 1000000.0);
|
||||
if (!seconds)
|
||||
seconds = 1;
|
||||
msgInfo("%d bytes read from package %s, %d KBytes/second", tot, name, (tot / seconds) / 1024);
|
||||
msgInfo("%d bytes read from package %s @ %.1f KBytes/second", tot, name, (tot / seconds) / 1024.0);
|
||||
/* Write it out */
|
||||
if (write(pfd[1], buf, i) != i) {
|
||||
msgInfo("Write failure to pkg_add! Package may be corrupt.");
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: sysinstall.h,v 1.72 1996/07/08 08:54:33 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.73 1996/07/08 10:08:20 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -102,6 +102,7 @@
|
||||
#define VAR_HOSTNAME "hostname"
|
||||
#define VAR_IFCONFIG "ifconfig_"
|
||||
#define VAR_INTERFACES "network_interfaces"
|
||||
#define VAR_INSTALL_ROOT "installRoot"
|
||||
#define VAR_IPADDR "ipaddr"
|
||||
#define VAR_LABEL "label"
|
||||
#define VAR_LABEL_COUNT "labelCount"
|
||||
@ -517,6 +518,7 @@ extern Boolean mediaVerify(void);
|
||||
extern Boolean file_readable(char *fname);
|
||||
extern Boolean file_executable(char *fname);
|
||||
extern Boolean directory_exists(const char *dirname);
|
||||
extern char *root_bias(char *path);
|
||||
extern char *itoa(int value);
|
||||
extern char *string_concat(char *p1, char *p2);
|
||||
extern char *string_concat3(char *p1, char *p2, char *p3);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: install.c,v 1.110 1996/07/08 10:08:07 jkh Exp $
|
||||
* $Id: install.c,v 1.111 1996/07/09 07:17:03 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -802,20 +802,18 @@ installFilesystems(dialogMenuItem *self)
|
||||
int
|
||||
installVarDefaults(dialogMenuItem *self)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
/* Set default startup options */
|
||||
variable_set2(VAR_ROUTEDFLAGS, "-q");
|
||||
variable_set2(VAR_RELNAME, RELEASE_NAME);
|
||||
variable_set2(VAR_CPIO_VERBOSITY, "high");
|
||||
variable_set2(VAR_TAPE_BLOCKSIZE, DEFAULT_TAPE_BLOCKSIZE);
|
||||
if (RunningAsInit)
|
||||
variable_set2(VAR_EDITOR, "/usr/bin/ee");
|
||||
else {
|
||||
char *cp = getenv("EDITOR");
|
||||
|
||||
if (!cp)
|
||||
cp = "/usr/bin/ee";
|
||||
variable_set2(VAR_EDITOR, cp);
|
||||
}
|
||||
variable_set2(VAR_INSTALL_ROOT, "/");
|
||||
cp = getenv("EDITOR");
|
||||
if (!cp)
|
||||
cp = "/usr/bin/ee";
|
||||
variable_set2(VAR_EDITOR, cp);
|
||||
variable_set2(VAR_FTP_USER, "ftp");
|
||||
variable_set2(VAR_BROWSER_PACKAGE, "lynx-2.5FM");
|
||||
variable_set2(VAR_BROWSER_BINARY, "/usr/local/bin/lynx");
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Miscellaneous support routines..
|
||||
*
|
||||
* $Id: misc.c,v 1.20 1996/06/25 18:41:10 jkh Exp $
|
||||
* $Id: misc.c,v 1.21 1996/07/08 08:54:30 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -203,6 +203,20 @@ safe_realloc(void *orig, size_t size)
|
||||
return ptr;
|
||||
}
|
||||
|
||||
/* Create a path biased from the VAR_INSTALL_ROOT variable (if not /) */
|
||||
char *
|
||||
root_bias(char *path)
|
||||
{
|
||||
static char tmp[FILENAME_MAX];
|
||||
char *cp = variable_get(VAR_INSTALL_ROOT);
|
||||
|
||||
if (!strcmp(cp, "/"))
|
||||
return path;
|
||||
strcpy(tmp, variable_get(VAR_INSTALL_ROOT));
|
||||
strcat(tmp, path);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
/*
|
||||
* These next routines are kind of specialized just for building string lists
|
||||
* for dialog_menu().
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: sysinstall.h,v 1.72 1996/07/08 08:54:33 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.73 1996/07/08 10:08:20 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -102,6 +102,7 @@
|
||||
#define VAR_HOSTNAME "hostname"
|
||||
#define VAR_IFCONFIG "ifconfig_"
|
||||
#define VAR_INTERFACES "network_interfaces"
|
||||
#define VAR_INSTALL_ROOT "installRoot"
|
||||
#define VAR_IPADDR "ipaddr"
|
||||
#define VAR_LABEL "label"
|
||||
#define VAR_LABEL_COUNT "labelCount"
|
||||
@ -517,6 +518,7 @@ extern Boolean mediaVerify(void);
|
||||
extern Boolean file_readable(char *fname);
|
||||
extern Boolean file_executable(char *fname);
|
||||
extern Boolean directory_exists(const char *dirname);
|
||||
extern char *root_bias(char *path);
|
||||
extern char *itoa(int value);
|
||||
extern char *string_concat(char *p1, char *p2);
|
||||
extern char *string_concat3(char *p1, char *p2, char *p3);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: dist.c,v 1.60 1996/07/02 01:03:37 jkh Exp $
|
||||
* $Id: dist.c,v 1.61 1996/07/08 10:07:57 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -331,7 +331,7 @@ distExtract(char *parent, Distribution *me)
|
||||
{
|
||||
int i, status, total;
|
||||
int cpid, zpid, fd, fd2, chunk, numchunks;
|
||||
char *path, *dist, buf[10240];
|
||||
char *path, *dist, buf[BUFSIZ];
|
||||
const char *tmp;
|
||||
Attribs *dist_attr;
|
||||
WINDOW *w = savescr();
|
||||
@ -374,8 +374,10 @@ distExtract(char *parent, Distribution *me)
|
||||
*/
|
||||
fd = mediaDevice->get(mediaDevice, buf, TRUE);
|
||||
if (fd >= 0) {
|
||||
msgNotify("Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
status = mediaExtractDist(me[i].my_dir, fd);
|
||||
char *dir = root_bias(me[i].my_dir);
|
||||
|
||||
msgNotify("Extracting %s into %s directory...", dist, dir);
|
||||
status = mediaExtractDist(dir, fd);
|
||||
mediaDevice->close(mediaDevice, fd);
|
||||
goto done;
|
||||
}
|
||||
@ -422,32 +424,33 @@ distExtract(char *parent, Distribution *me)
|
||||
if (isDebug())
|
||||
msgDebug("Attempting to extract distribution from %u chunks.\n", numchunks);
|
||||
|
||||
/* We have one or more chunks, go pick them up */
|
||||
mediaExtractDistBegin(me[i].my_dir, &fd2, &zpid, &cpid);
|
||||
total = 0;
|
||||
(void)gettimeofday(&start, (struct timezone *)0);
|
||||
/* We have one or more chunks, go pick them up */
|
||||
mediaExtractDistBegin(root_bias(me[i].my_dir), &fd2, &zpid, &cpid);
|
||||
for (chunk = 0; chunk < numchunks; chunk++) {
|
||||
int n, retval;
|
||||
int n, chunktotal, retval;
|
||||
char prompt[80];
|
||||
|
||||
snprintf(buf, 512, "%s/%s.%c%c", path, dist, (chunk / 26) + 'a', (chunk % 26) + 'a');
|
||||
if (isDebug())
|
||||
msgDebug("trying for piece %d of %d: %s\n", chunk + 1, numchunks, buf);
|
||||
chunktotal = 0;
|
||||
(void)gettimeofday(&start, (struct timezone *)0);
|
||||
fd = mediaDevice->get(mediaDevice, buf, FALSE);
|
||||
if (fd < 0) {
|
||||
msgConfirm("failed to retreive piece file %s!\n"
|
||||
"Aborting the transfer", buf);
|
||||
goto punt;
|
||||
}
|
||||
snprintf(prompt, 80, "Extracting %s into %s directory...", me[i].my_name, me[i].my_dir);
|
||||
snprintf(prompt, 80, "Extracting %s into %s directory...", dist, root_bias(me[i].my_dir));
|
||||
dialog_gauge("Progress", prompt, 8, 15, 6, 50, (int)((float)(chunk + 1) / numchunks * 100));
|
||||
while (1) {
|
||||
int seconds;
|
||||
|
||||
n = read(fd, buf, sizeof buf);
|
||||
n = read(fd, buf, BUFSIZ);
|
||||
if (n <= 0)
|
||||
break;
|
||||
total += n;
|
||||
total += n, chunktotal += n;
|
||||
|
||||
/* Print statistics about how we're doing */
|
||||
(void) gettimeofday(&stop, (struct timezone *)0);
|
||||
@ -458,8 +461,8 @@ distExtract(char *parent, Distribution *me)
|
||||
seconds = stop.tv_sec + (stop.tv_usec / 1000000.0);
|
||||
if (!seconds)
|
||||
seconds = 1;
|
||||
msgInfo("%d bytes read from distribution, chunk %d of %d, %d KBytes/second",
|
||||
total, chunk + 1, numchunks, (total / seconds) / 1024);
|
||||
msgInfo("%d bytes read from %s distribution, chunk %d of %d @ %.1f KBytes/second",
|
||||
total, dist, chunk + 1, numchunks, (chunktotal / seconds) / 1024.0);
|
||||
retval = write(fd2, buf, n);
|
||||
if (retval != n) {
|
||||
mediaDevice->close(mediaDevice, fd);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: install.c,v 1.110 1996/07/08 10:08:07 jkh Exp $
|
||||
* $Id: install.c,v 1.111 1996/07/09 07:17:03 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -802,20 +802,18 @@ installFilesystems(dialogMenuItem *self)
|
||||
int
|
||||
installVarDefaults(dialogMenuItem *self)
|
||||
{
|
||||
char *cp;
|
||||
|
||||
/* Set default startup options */
|
||||
variable_set2(VAR_ROUTEDFLAGS, "-q");
|
||||
variable_set2(VAR_RELNAME, RELEASE_NAME);
|
||||
variable_set2(VAR_CPIO_VERBOSITY, "high");
|
||||
variable_set2(VAR_TAPE_BLOCKSIZE, DEFAULT_TAPE_BLOCKSIZE);
|
||||
if (RunningAsInit)
|
||||
variable_set2(VAR_EDITOR, "/usr/bin/ee");
|
||||
else {
|
||||
char *cp = getenv("EDITOR");
|
||||
|
||||
if (!cp)
|
||||
cp = "/usr/bin/ee";
|
||||
variable_set2(VAR_EDITOR, cp);
|
||||
}
|
||||
variable_set2(VAR_INSTALL_ROOT, "/");
|
||||
cp = getenv("EDITOR");
|
||||
if (!cp)
|
||||
cp = "/usr/bin/ee";
|
||||
variable_set2(VAR_EDITOR, cp);
|
||||
variable_set2(VAR_FTP_USER, "ftp");
|
||||
variable_set2(VAR_BROWSER_PACKAGE, "lynx-2.5FM");
|
||||
variable_set2(VAR_BROWSER_BINARY, "/usr/local/bin/lynx");
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Miscellaneous support routines..
|
||||
*
|
||||
* $Id: misc.c,v 1.20 1996/06/25 18:41:10 jkh Exp $
|
||||
* $Id: misc.c,v 1.21 1996/07/08 08:54:30 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -203,6 +203,20 @@ safe_realloc(void *orig, size_t size)
|
||||
return ptr;
|
||||
}
|
||||
|
||||
/* Create a path biased from the VAR_INSTALL_ROOT variable (if not /) */
|
||||
char *
|
||||
root_bias(char *path)
|
||||
{
|
||||
static char tmp[FILENAME_MAX];
|
||||
char *cp = variable_get(VAR_INSTALL_ROOT);
|
||||
|
||||
if (!strcmp(cp, "/"))
|
||||
return path;
|
||||
strcpy(tmp, variable_get(VAR_INSTALL_ROOT));
|
||||
strcat(tmp, path);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
/*
|
||||
* These next routines are kind of specialized just for building string lists
|
||||
* for dialog_menu().
|
||||
|
@ -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.39 1996/06/14 14:33:58 jkh Exp $
|
||||
* $Id: options.c,v 1.40 1996/07/08 10:08:18 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -99,6 +99,7 @@ mediaCheck(Option opt)
|
||||
#define BBIN_PROMPT "Please specify a full pathname to the HTML browser binary:"
|
||||
#define EDITOR_PROMPT "Please specify the name of the text editor you wish to use:"
|
||||
#define PKG_PROMPT "Please specify a temporary directory with lots of free space:"
|
||||
#define INSTROOT_PROMPT "Please specify a root directory if installing somewhere other than /"
|
||||
|
||||
static Option Options[] = {
|
||||
{ "NFS Secure", "NFS server talks only on a secure port",
|
||||
@ -119,6 +120,8 @@ 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 },
|
||||
{ "Install Root", "Which directory to unpack distributions or packages relative to",
|
||||
OPT_IS_VAR, INSTROOT_PROMPT, VAR_INSTALL_ROOT, varCheck },
|
||||
{ "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",
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last program in the `sysinstall' line - the next
|
||||
* generation being essentially a complete rewrite.
|
||||
*
|
||||
* $Id: package.c,v 1.40 1996/06/29 02:22:46 jkh Exp $
|
||||
* $Id: package.c,v 1.41 1996/07/08 08:54:32 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -128,6 +128,7 @@ package_extract(Device *dev, char *name, Boolean depended)
|
||||
dup2(DebugFD, 1);
|
||||
close(2);
|
||||
close(pfd[1]);
|
||||
chroot(variable_get(VAR_INSTALL_ROOT));
|
||||
i = execl("/usr/sbin/pkg_add", "/usr/sbin/pkg_add", "-", 0);
|
||||
if (isDebug())
|
||||
msgDebug("pkg_add returns %d status\n", i);
|
||||
@ -154,7 +155,7 @@ package_extract(Device *dev, char *name, Boolean depended)
|
||||
seconds = stop.tv_sec + (stop.tv_usec / 1000000.0);
|
||||
if (!seconds)
|
||||
seconds = 1;
|
||||
msgInfo("%d bytes read from package %s, %d KBytes/second", tot, name, (tot / seconds) / 1024);
|
||||
msgInfo("%d bytes read from package %s @ %.1f KBytes/second", tot, name, (tot / seconds) / 1024.0);
|
||||
/* Write it out */
|
||||
if (write(pfd[1], buf, i) != i) {
|
||||
msgInfo("Write failure to pkg_add! Package may be corrupt.");
|
||||
|
@ -4,7 +4,7 @@
|
||||
* This is probably the last attempt in the `sysinstall' line, the next
|
||||
* generation being slated to essentially a complete rewrite.
|
||||
*
|
||||
* $Id: sysinstall.h,v 1.72 1996/07/08 08:54:33 jkh Exp $
|
||||
* $Id: sysinstall.h,v 1.73 1996/07/08 10:08:20 jkh Exp $
|
||||
*
|
||||
* Copyright (c) 1995
|
||||
* Jordan Hubbard. All rights reserved.
|
||||
@ -102,6 +102,7 @@
|
||||
#define VAR_HOSTNAME "hostname"
|
||||
#define VAR_IFCONFIG "ifconfig_"
|
||||
#define VAR_INTERFACES "network_interfaces"
|
||||
#define VAR_INSTALL_ROOT "installRoot"
|
||||
#define VAR_IPADDR "ipaddr"
|
||||
#define VAR_LABEL "label"
|
||||
#define VAR_LABEL_COUNT "labelCount"
|
||||
@ -517,6 +518,7 @@ extern Boolean mediaVerify(void);
|
||||
extern Boolean file_readable(char *fname);
|
||||
extern Boolean file_executable(char *fname);
|
||||
extern Boolean directory_exists(const char *dirname);
|
||||
extern char *root_bias(char *path);
|
||||
extern char *itoa(int value);
|
||||
extern char *string_concat(char *p1, char *p2);
|
||||
extern char *string_concat3(char *p1, char *p2, char *p3);
|
||||
|
Loading…
x
Reference in New Issue
Block a user