freebsd-nq/usr.sbin/sysinstall/doc.c
Jordan K. Hubbard 957bdf511e Major surgery.
1. Use new dialog menu hacks (no strings, just arrays of dialogMenuItem structs)
   so that I can create composite menus with radio/checkbox/... items in them,
   removing some long-standing UI bogons in various menus.  This work isn't
   finished yet, but will be done in two phases.  This is phase one.

2. Remove all the script installation stuff.  I never got time to document it,
   it was arcane and it just complicated much of the code.  There are better
   ways of doing this if I want to do auto-driven installations later.

3. Remove much dead code and otherwise attempt to remove as much historical
   grot as possible so that this code is easier to hack on.  This is also
   a two-stage process, phase one of which is now complete.
1996-04-07 03:52:36 +00:00

104 lines
3.2 KiB
C

/*
* The new sysinstall program.
*
* This is probably the last program in the `sysinstall' line - the next
* generation being essentially a complete rewrite.
*
* $Id: doc.c,v 1.10 1995/11/06 12:49:23 jkh Exp $
*
* Jordan Hubbard
*
* My contributions are in the public domain.
*
*/
#include "sysinstall.h"
/*
* This is called from the main menu. Try to find a copy of Lynx from somewhere
* and fire it up on the first copy of the handbook we can find.
*/
int
docBrowser(dialogMenuItem *self)
{
char *browser = variable_get(VAR_BROWSER_PACKAGE);
if (RunningAsInit && !strstr(variable_get(SYSTEM_STATE), "install")) {
msgConfirm("This option may only be used after the system is installed, sorry!");
return RET_FAIL;
}
/* Make sure we have media available */
if (!mediaVerify())
return RET_FAIL;
/* First, make sure we have whatever browser we've chosen is here */
if (package_add(browser) != RET_SUCCESS) {
dialog_clear();
msgConfirm("Unable to install the %s HTML browser package. You may\n"
"wish to verify that your media is configured correctly and\n"
"try again.", browser);
return RET_FAIL;
}
if (!file_executable(variable_get(VAR_BROWSER_BINARY))) {
dialog_clear();
if (!msgYesNo("Hmmm. The %s package claims to have installed, but I can't\n"
"find its binary in %s! You may wish to try a different\n"
"location to load the package from (go to Media menu) and see if that\n"
"makes a difference.\n\n"
"I suggest that we remove the version that was extracted since it does\n"
"not appear to be correct. Would you like me to do that now?"))
vsystem("pkg_delete %s %s", !strcmp(variable_get(VAR_CPIO_VERBOSITY), "high") ? "-v" : "", browser);
return RET_FAIL;
}
/* Run browser on the appropriate doc */
if (dmenuOpenSimple(&MenuHTMLDoc))
return RET_SUCCESS;
else
return RET_FAIL;
}
/* Try to show one of the documents requested from the HTML doc menu */
int
docShowDocument(dialogMenuItem *self)
{
char tmp[512], target[512];
char *where = NULL;
char *browser = variable_get(VAR_BROWSER_BINARY);
char *str = self->prompt;
if (!file_executable(browser)) {
dialog_clear();
msgConfirm("Can't find the browser in %s! Please ensure that it's\n"
"properly set in the Options editor.", browser);
return RET_FAIL;
}
if (!strcmp(str, "Home"))
where = "http://www.freebsd.org";
else if (!strcmp(str, "Other"))
where = msgGetInput("http://www.freebsd.org", "Please enter the URL of the location you wish to visit.");
else if (!strcmp(str, "FAQ")) {
strcpy(target, "/usr/share/doc/FAQ/freebsd-faq.html");
if (!file_readable(target))
strcpy(target, "http://www.freebsd.org/FAQ");
where = target;
}
else if (!strcmp(str, "Handbook")) {
strcpy(target, "/usr/share/doc/handbook/handbook.html");
if (!file_readable(target))
strcpy(target, "http://www.freebsd.org/handbook");
where = target;
}
if (where) {
sprintf(tmp, "%s %s", browser, where);
systemExecute(tmp);
return RET_SUCCESS;
}
else {
msgConfirm("Hmmmmm! I can't seem to access the documentation you selected!\n"
"Have you loaded the bin distribution? Is your network connected?");
return RET_FAIL;
}
}