diff --git a/release/sysinstall/install.c b/release/sysinstall/install.c index 32b98e3e5d22..5b0fb1372189 100644 --- a/release/sysinstall/install.c +++ b/release/sysinstall/install.c @@ -499,12 +499,12 @@ installNovice(dialogMenuItem *self) } if (mediaDevice->type != DEVICE_TYPE_FTP && mediaDevice->type != DEVICE_TYPE_NFS) { if (!msgYesNo("Would you like to configure any SLIP/PPP or network interface devices?")) { - Device *save = mediaDevice; + Device *tmp; - /* This will also set the media device, which we don't want */ - tcpDeviceSelect(); - /* so we restore our saved value below */ - mediaDevice = save; + tmp = tcpDeviceSelect(); + if (tmp && !msgYesNo("Would you like to bring the %s interface up right now?", tmp->name)) + if (!tmp->init(tmp)) + msgConfirm("Initialization of %s device failed.", tmp->name); dialog_clear_norefresh(); } } diff --git a/release/sysinstall/media.c b/release/sysinstall/media.c index 8362b7b16d30..09e272fa8a59 100644 --- a/release/sysinstall/media.c +++ b/release/sysinstall/media.c @@ -335,18 +335,16 @@ mediaSetFTP(dialogMenuItem *self) "would you like to skip over it now?") != 0) { if (networkDev) networkDev->shutdown(networkDev); - networkDev = NULL; - if (!tcpDeviceSelect()) { + if (!(networkDev = tcpDeviceSelect())) { variable_unset(VAR_FTP_PATH); return DITEM_FAILURE | what; } - if (!mediaDevice || !mediaDevice->init(mediaDevice)) { - if (isDebug()) - msgDebug("mediaSetFTP: Net device init failed.\n"); - variable_unset(VAR_FTP_PATH); - return DITEM_FAILURE | what; - } - networkDev = mediaDevice; + } + if (!networkDev->init(networkDev)) { + if (isDebug()) + msgDebug("mediaSetFTP: Net device init failed.\n"); + variable_unset(VAR_FTP_PATH); + return DITEM_FAILURE | what; } hostname = cp + 6; if ((cp = index(hostname, ':')) != NULL) { @@ -448,15 +446,12 @@ mediaSetNFS(dialogMenuItem *self) "would you like to skip over it now?") != 0) { if (networkDev) networkDev->shutdown(networkDev); - networkDev = NULL; - if (!tcpDeviceSelect()) + if (!(networkDev = tcpDeviceSelect())) return DITEM_FAILURE; - if (!mediaDevice || !mediaDevice->init(mediaDevice)) { - if (isDebug()) - msgDebug("mediaSetNFS: Net device init failed\n"); - return DITEM_FAILURE; - } - networkDev = mediaDevice; + } + if (!networkDev->init(networkDev)) { + if (isDebug()) + msgDebug("mediaSetNFS: Net device init failed\n"); } if (variable_get(VAR_NAMESERVER)) { if ((gethostbyname(cp) == NULL) && (inet_addr(cp) == INADDR_NONE)) { diff --git a/release/sysinstall/sysinstall.h b/release/sysinstall/sysinstall.h index 087cc0d750ca..2d5c5d54cbed 100644 --- a/release/sysinstall/sysinstall.h +++ b/release/sysinstall/sysinstall.h @@ -666,7 +666,7 @@ extern void mediaShutdownTape(Device *dev); /* tcpip.c */ extern int tcpOpenDialog(Device *dev); extern int tcpMenuSelect(dialogMenuItem *self); -extern Boolean tcpDeviceSelect(void); +extern Device *tcpDeviceSelect(void); /* termcap.c */ extern int set_termcap(void); diff --git a/release/sysinstall/tcpip.c b/release/sysinstall/tcpip.c index b9934218138a..e6056604d0a3 100644 --- a/release/sysinstall/tcpip.c +++ b/release/sysinstall/tcpip.c @@ -309,6 +309,8 @@ tcpOpenDialog(Device *devp) return ret; } +static Device *NetDev; + static int netHook(dialogMenuItem *self) { @@ -317,33 +319,31 @@ netHook(dialogMenuItem *self) devs = deviceFindDescr(self->prompt, self->title, DEVICE_TYPE_NETWORK); if (devs) { if (DITEM_STATUS(tcpOpenDialog(devs[0])) != DITEM_FAILURE) - mediaDevice = devs[0]; + NetDev = devs[0]; else - devs = NULL; + NetDev = NULL; } return devs ? DITEM_LEAVE_MENU : DITEM_FAILURE; } /* Get a network device */ -Boolean +Device * tcpDeviceSelect(void) { DMenu *menu; - Device **devs; + Device **devs, *rval; int cnt; - int status; devs = deviceFind(NULL, DEVICE_TYPE_NETWORK); cnt = deviceCount(devs); if (!cnt) { msgConfirm("No network devices available!"); - status = FALSE; + rval = NULL; } else if (cnt == 1) { if (DITEM_STATUS(tcpOpenDialog(devs[0]) == DITEM_FAILURE)) - return FALSE; - mediaDevice = devs[0]; - status = TRUE; + return NULL; + rval = devs[0]; } else { menu = deviceCreateMenu(&MenuNetworkDevice, DEVICE_TYPE_NETWORK, netHook, NULL); @@ -351,14 +351,20 @@ tcpDeviceSelect(void) msgFatal("Unable to create network device menu! Argh!"); status = dmenuOpenSimple(menu, FALSE); free(menu); + rval = NetDev; } - return status; + return rval; } /* Do it from a menu that doesn't care about status */ int tcpMenuSelect(dialogMenuItem *self) { - (void)tcpDeviceSelect(); + Device *tmp; + + tmp = tcpDeviceSelect(); + if (tmp && !msgYesNo("Would you like to bring the %s interface up right now?", tmp->name)) + if (!tmp->init(tmp)) + msgConfirm("Initialization of %s device failed.", tmp->name); return DITEM_SUCCESS | DITEM_RESTORE; } diff --git a/usr.sbin/sade/install.c b/usr.sbin/sade/install.c index 32b98e3e5d22..5b0fb1372189 100644 --- a/usr.sbin/sade/install.c +++ b/usr.sbin/sade/install.c @@ -499,12 +499,12 @@ installNovice(dialogMenuItem *self) } if (mediaDevice->type != DEVICE_TYPE_FTP && mediaDevice->type != DEVICE_TYPE_NFS) { if (!msgYesNo("Would you like to configure any SLIP/PPP or network interface devices?")) { - Device *save = mediaDevice; + Device *tmp; - /* This will also set the media device, which we don't want */ - tcpDeviceSelect(); - /* so we restore our saved value below */ - mediaDevice = save; + tmp = tcpDeviceSelect(); + if (tmp && !msgYesNo("Would you like to bring the %s interface up right now?", tmp->name)) + if (!tmp->init(tmp)) + msgConfirm("Initialization of %s device failed.", tmp->name); dialog_clear_norefresh(); } } diff --git a/usr.sbin/sade/sade.h b/usr.sbin/sade/sade.h index 087cc0d750ca..2d5c5d54cbed 100644 --- a/usr.sbin/sade/sade.h +++ b/usr.sbin/sade/sade.h @@ -666,7 +666,7 @@ extern void mediaShutdownTape(Device *dev); /* tcpip.c */ extern int tcpOpenDialog(Device *dev); extern int tcpMenuSelect(dialogMenuItem *self); -extern Boolean tcpDeviceSelect(void); +extern Device *tcpDeviceSelect(void); /* termcap.c */ extern int set_termcap(void); diff --git a/usr.sbin/sysinstall/install.c b/usr.sbin/sysinstall/install.c index 32b98e3e5d22..5b0fb1372189 100644 --- a/usr.sbin/sysinstall/install.c +++ b/usr.sbin/sysinstall/install.c @@ -499,12 +499,12 @@ installNovice(dialogMenuItem *self) } if (mediaDevice->type != DEVICE_TYPE_FTP && mediaDevice->type != DEVICE_TYPE_NFS) { if (!msgYesNo("Would you like to configure any SLIP/PPP or network interface devices?")) { - Device *save = mediaDevice; + Device *tmp; - /* This will also set the media device, which we don't want */ - tcpDeviceSelect(); - /* so we restore our saved value below */ - mediaDevice = save; + tmp = tcpDeviceSelect(); + if (tmp && !msgYesNo("Would you like to bring the %s interface up right now?", tmp->name)) + if (!tmp->init(tmp)) + msgConfirm("Initialization of %s device failed.", tmp->name); dialog_clear_norefresh(); } } diff --git a/usr.sbin/sysinstall/media.c b/usr.sbin/sysinstall/media.c index 8362b7b16d30..09e272fa8a59 100644 --- a/usr.sbin/sysinstall/media.c +++ b/usr.sbin/sysinstall/media.c @@ -335,18 +335,16 @@ mediaSetFTP(dialogMenuItem *self) "would you like to skip over it now?") != 0) { if (networkDev) networkDev->shutdown(networkDev); - networkDev = NULL; - if (!tcpDeviceSelect()) { + if (!(networkDev = tcpDeviceSelect())) { variable_unset(VAR_FTP_PATH); return DITEM_FAILURE | what; } - if (!mediaDevice || !mediaDevice->init(mediaDevice)) { - if (isDebug()) - msgDebug("mediaSetFTP: Net device init failed.\n"); - variable_unset(VAR_FTP_PATH); - return DITEM_FAILURE | what; - } - networkDev = mediaDevice; + } + if (!networkDev->init(networkDev)) { + if (isDebug()) + msgDebug("mediaSetFTP: Net device init failed.\n"); + variable_unset(VAR_FTP_PATH); + return DITEM_FAILURE | what; } hostname = cp + 6; if ((cp = index(hostname, ':')) != NULL) { @@ -448,15 +446,12 @@ mediaSetNFS(dialogMenuItem *self) "would you like to skip over it now?") != 0) { if (networkDev) networkDev->shutdown(networkDev); - networkDev = NULL; - if (!tcpDeviceSelect()) + if (!(networkDev = tcpDeviceSelect())) return DITEM_FAILURE; - if (!mediaDevice || !mediaDevice->init(mediaDevice)) { - if (isDebug()) - msgDebug("mediaSetNFS: Net device init failed\n"); - return DITEM_FAILURE; - } - networkDev = mediaDevice; + } + if (!networkDev->init(networkDev)) { + if (isDebug()) + msgDebug("mediaSetNFS: Net device init failed\n"); } if (variable_get(VAR_NAMESERVER)) { if ((gethostbyname(cp) == NULL) && (inet_addr(cp) == INADDR_NONE)) { diff --git a/usr.sbin/sysinstall/sysinstall.h b/usr.sbin/sysinstall/sysinstall.h index 087cc0d750ca..2d5c5d54cbed 100644 --- a/usr.sbin/sysinstall/sysinstall.h +++ b/usr.sbin/sysinstall/sysinstall.h @@ -666,7 +666,7 @@ extern void mediaShutdownTape(Device *dev); /* tcpip.c */ extern int tcpOpenDialog(Device *dev); extern int tcpMenuSelect(dialogMenuItem *self); -extern Boolean tcpDeviceSelect(void); +extern Device *tcpDeviceSelect(void); /* termcap.c */ extern int set_termcap(void); diff --git a/usr.sbin/sysinstall/tcpip.c b/usr.sbin/sysinstall/tcpip.c index b9934218138a..e6056604d0a3 100644 --- a/usr.sbin/sysinstall/tcpip.c +++ b/usr.sbin/sysinstall/tcpip.c @@ -309,6 +309,8 @@ tcpOpenDialog(Device *devp) return ret; } +static Device *NetDev; + static int netHook(dialogMenuItem *self) { @@ -317,33 +319,31 @@ netHook(dialogMenuItem *self) devs = deviceFindDescr(self->prompt, self->title, DEVICE_TYPE_NETWORK); if (devs) { if (DITEM_STATUS(tcpOpenDialog(devs[0])) != DITEM_FAILURE) - mediaDevice = devs[0]; + NetDev = devs[0]; else - devs = NULL; + NetDev = NULL; } return devs ? DITEM_LEAVE_MENU : DITEM_FAILURE; } /* Get a network device */ -Boolean +Device * tcpDeviceSelect(void) { DMenu *menu; - Device **devs; + Device **devs, *rval; int cnt; - int status; devs = deviceFind(NULL, DEVICE_TYPE_NETWORK); cnt = deviceCount(devs); if (!cnt) { msgConfirm("No network devices available!"); - status = FALSE; + rval = NULL; } else if (cnt == 1) { if (DITEM_STATUS(tcpOpenDialog(devs[0]) == DITEM_FAILURE)) - return FALSE; - mediaDevice = devs[0]; - status = TRUE; + return NULL; + rval = devs[0]; } else { menu = deviceCreateMenu(&MenuNetworkDevice, DEVICE_TYPE_NETWORK, netHook, NULL); @@ -351,14 +351,20 @@ tcpDeviceSelect(void) msgFatal("Unable to create network device menu! Argh!"); status = dmenuOpenSimple(menu, FALSE); free(menu); + rval = NetDev; } - return status; + return rval; } /* Do it from a menu that doesn't care about status */ int tcpMenuSelect(dialogMenuItem *self) { - (void)tcpDeviceSelect(); + Device *tmp; + + tmp = tcpDeviceSelect(); + if (tmp && !msgYesNo("Would you like to bring the %s interface up right now?", tmp->name)) + if (!tmp->init(tmp)) + msgConfirm("Initialization of %s device failed.", tmp->name); return DITEM_SUCCESS | DITEM_RESTORE; }