sysinstall.h revision 46117
159412Smsmith/*
265577Sdes * The new sysinstall program.
365577Sdes *
459412Smsmith * This is probably the last attempt in the `sysinstall' line, the next
559412Smsmith * generation being slated to essentially a complete rewrite.
659412Smsmith *
759412Smsmith * $Id: sysinstall.h,v 1.161 1999/04/24 01:53:55 jkh Exp $
859412Smsmith *
959412Smsmith * Copyright (c) 1995
1059412Smsmith *	Jordan Hubbard.  All rights reserved.
1159412Smsmith *
1259412Smsmith * Redistribution and use in source and binary forms, with or without
1359412Smsmith * modification, are permitted provided that the following conditions
1459412Smsmith * are met:
1559412Smsmith * 1. Redistributions of source code must retain the above copyright
1659412Smsmith *    notice, this list of conditions and the following disclaimer,
1759412Smsmith *    verbatim and that no modifications are made prior to this
1859412Smsmith *    point in the file.
1959412Smsmith * 2. Redistributions in binary form must reproduce the above copyright
2059412Smsmith *    notice, this list of conditions and the following disclaimer in the
2159412Smsmith *    documentation and/or other materials provided with the distribution.
2259412Smsmith *
2359412Smsmith * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
2459412Smsmith * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2559412Smsmith * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2659412Smsmith * ARE DISCLAIMED.  IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
2759412Smsmith * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2859412Smsmith * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2959412Smsmith * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
3059412Smsmith * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3159412Smsmith * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3259412Smsmith * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3359412Smsmith * SUCH DAMAGE.
3459412Smsmith *
3559412Smsmith */
3659412Smsmith
3759412Smsmith#ifndef _SYSINSTALL_H_INCLUDE
3859412Smsmith#define _SYSINSTALL_H_INCLUDE
3959412Smsmith
4059412Smsmith#include <sys/types.h>
4159412Smsmith#include <sys/wait.h>
4259412Smsmith#include <errno.h>
4359412Smsmith#include <setjmp.h>
4459412Smsmith#include <stdio.h>
4583926Sdes#include <stdlib.h>
4676166Smarkm#include <string.h>
4774135Sjlemon#include <unistd.h>
4865633Sdes#include <dialog.h>
4983926Sdes#include "ui_objects.h"
5076166Smarkm#include "dir.h"
5165633Sdes#include "colors.h"
5283926Sdes#include "libdisk.h"
5376166Smarkm#include "dist.h"
5474135Sjlemon
5578025Sdes/*** Defines ***/
5676827Salfred
5785289Sdes/* device limits */
5865633Sdes#define DEV_NAME_MAX		64	/* The maximum length of a device name	*/
5965633Sdes#define DEV_MAX			100	/* The maximum number of devices we'll deal with */
6069995Sdes#define INTERFACE_MAX		50	/* Maximum number of network interfaces we'll deal with */
6183926Sdes#define IO_ERROR		-2	/* Status code for I/O error rather than normal EOF */
6276839Sjlemon
6383926Sdes/* Number of seconds to wait for data to come off even the slowest media */
6465633Sdes#define MEDIA_TIMEOUT		300
6583926Sdes
6683926Sdes/*
6759412Smsmith * I make some pretty gross assumptions about having a max of 50 chunks
6859412Smsmith * total - 8 slices and 42 partitions.  I can't easily display many more
6983926Sdes * than that on the screen at once!
7083926Sdes *
7159412Smsmith * For 2.1 I'll revisit this and try to make it more dynamic, but since
7259412Smsmith * this will catch 99.99% of all possible cases, I'm not too worried.
7367588Sdes */
7459412Smsmith#define MAX_CHUNKS	40
7560860Sdes
7669995Sdes/* Internal environment variable names */
7759412Smsmith#define DISK_PARTITIONED		"_diskPartitioned"
7869799Sdes#define DISK_LABELLED			"_diskLabelled"
7967589Sdes#define DISK_SELECTED			"_diskSelected"
8078113Sdes#define SYSTEM_STATE			"_systemState"
8178113Sdes#define RUNNING_ON_ROOT			"_runningOnRoot"
8278113Sdes#define TCP_CONFIGURED			"_tcpConfigured"
8378113Sdes
8478113Sdes/* Ones that can be tweaked from config files */
8578113Sdes#define VAR_BLANKTIME			"blanktime"
8678113Sdes#define VAR_BOOTMGR			"bootManager"
8778113Sdes#define VAR_BROWSER_BINARY		"browserBinary"
8878113Sdes#define VAR_BROWSER_PACKAGE		"browserPackage"
8967589Sdes#define VAR_CPIO_VERBOSITY		"cpioVerbose"
9059412Smsmith#define VAR_DEBUG			"debug"
9178113Sdes#define VAR_DESKSTYLE			"_deskStyle"
9259412Smsmith#define VAR_DISK			"disk"
9387275Srwatson#define VAR_DISTS			"dists"
9485129Sdes#define VAR_DIST_MAIN			"distMain"
9569995Sdes#define VAR_DIST_DES			"distDES"
9685289Sdes#define VAR_DIST_SRC			"distSRC"
9778025Sdes#define VAR_DIST_X11			"distX11"
9884248Sdes#define VAR_DIST_XSERVER		"distXserver"
9959412Smsmith#define VAR_DIST_XFONTS			"distXfonts"
10067588Sdes#define VAR_DEDICATE_DISK		"dedicateDisk"
10167588Sdes#define VAR_DOMAINNAME			"domainname"
10267588Sdes#define VAR_EDITOR			"editor"
10376405Sdes#define VAR_EXTRAS			"ifconfig_"
10467588Sdes#define VAR_COMMAND			"command"
10567588Sdes#define VAR_CONFIG_FILE			"configFile"
10669799Sdes#define VAR_FTP_DIR			"ftpDirectory"
10767588Sdes#define VAR_FTP_PASS			"ftpPass"
10867588Sdes#define VAR_FTP_PATH			"_ftpPath"
10974135Sjlemon#define VAR_FTP_PORT			"ftpPort"
11078113Sdes#define VAR_FTP_STATE			"ftpState"
11178113Sdes#define VAR_FTP_USER			"ftpUser"
11278113Sdes#define VAR_FTP_HOST			"ftpHost"
11378025Sdes#define VAR_GATEWAY			"defaultrouter"
11478025Sdes#define VAR_GEOMETRY			"geometry"
11559412Smsmith#define VAR_HOSTNAME			"hostname"
11659412Smsmith#define VAR_IFCONFIG			"ifconfig_"
11759412Smsmith#define VAR_INTERFACES			"network_interfaces"
11859412Smsmith#define VAR_INSTALL_CFG			"installConfig"
11959412Smsmith#define VAR_INSTALL_ROOT		"installRoot"
12059412Smsmith#define VAR_IPADDR			"ipaddr"
12176839Sjlemon#define VAR_KEYMAP			"keymap"
12276839Sjlemon#define VAR_LABEL			"label"
12376839Sjlemon#define VAR_LABEL_COUNT			"labelCount"
12460860Sdes#define VAR_MEDIA_TYPE			"mediaType"
12559412Smsmith#define VAR_MEDIA_TIMEOUT		"MEDIA_TIMEOUT"
12659412Smsmith#define VAR_MOUSED			"moused_enable"
12759412Smsmith#define VAR_MOUSED_PORT			"moused_port"
12859412Smsmith#define VAR_MOUSED_TYPE			"moused_type"
12959412Smsmith#define VAR_NAMESERVER			"nameserver"
13059412Smsmith#define VAR_NETINTERACTIVE		"netInteractive"
13159412Smsmith#define VAR_NETMASK			"netmask"
13259412Smsmith#define VAR_NETWORK_DEVICE		"netDev"
13359412Smsmith#define VAR_NFS_PATH			"nfs"
13459412Smsmith#define VAR_NFS_HOST			"nfsHost"
13559412Smsmith#define VAR_NFS_SECURE			"nfs_reserved_port_only"
13659412Smsmith#define VAR_NFS_SERVER			"nfs_server_enable"
13759412Smsmith#define VAR_NO_CONFIRM			"noConfirm"
13859412Smsmith#define VAR_NO_ERROR			"noError"
13964560Sbde#define VAR_NO_WARN			"noWarn"
14064560Sbde#define VAR_NO_USR			"noUsr"
14164560Sbde#define VAR_NONINTERACTIVE		"nonInteractive"
14264560Sbde#define VAR_NOVELL			"novell"
14376839Sjlemon#define VAR_NTPDATE_FLAGS		"ntpdate_flags"
14476839Sjlemon#define VAR_PACKAGE			"package"
14564560Sbde#define VAR_PARTITION			"partition"
14659412Smsmith#define VAR_PCNFSD			"pcnfsd"
14760860Sdes#define VAR_PKG_TMPDIR			"PKG_TMPDIR"
14871471Sjhb#define VAR_PORTS_PATH			"ports"
14960860Sdes#define VAR_RELNAME			"releaseName"
15060860Sdes#define VAR_ROOT_SIZE			"rootSize"
15160860Sdes#define VAR_ROUTER			"router"
15259412Smsmith#define VAR_ROUTER_ENABLE		"router_enable"
15359412Smsmith#define VAR_ROUTERFLAGS			"routerflags"
15459412Smsmith#define VAR_SERIAL_SPEED		"serialSpeed"
15559412Smsmith#define VAR_SLOW_ETHER			"slowEthernetCard"
15659412Smsmith#define VAR_SWAP_SIZE			"swapSize"
15759412Smsmith#define VAR_TAPE_BLOCKSIZE		"tapeBlocksize"
15859412Smsmith#define VAR_UFS_PATH			"ufs"
15959412Smsmith#define VAR_USR_SIZE			"usrSize"
16059412Smsmith#define VAR_VAR_SIZE			"varSize"
16159412Smsmith#define VAR_XF86_CONFIG			"_xf86config"
16259412Smsmith
16378025Sdes#define DEFAULT_TAPE_BLOCKSIZE	"20"
16478031Sdes
16569799Sdes/* One MB worth of blocks */
16676839Sjlemon#define ONE_MEG				2048
16769799Sdes
16869799Sdes/* Which selection attributes to use */
16969799Sdes#define ATTR_SELECTED			(ColorDisplay ? item_selected_attr : item_attr)
17069799Sdes#define ATTR_TITLE	button_active_attr
17169799Sdes
17276839Sjlemon/* Handy strncpy() macro */
17376839Sjlemon#define SAFE_STRCPY(to, from)	sstrncpy((to), (from), sizeof (to) - 1)
17469799Sdes
17569799Sdes/*** Types ***/
17669799Sdestypedef unsigned int Boolean;
17769799Sdestypedef struct disk Disk;
17869799Sdestypedef struct chunk Chunk;
17959412Smsmith
18078025Sdes/* Bitfields for menu options */
18159412Smsmith#define DMENU_NORMAL_TYPE	0x1     /* Normal dialog menu           */
18259412Smsmith#define DMENU_RADIO_TYPE	0x2     /* Radio dialog menu            */
18378113Sdes#define DMENU_CHECKLIST_TYPE	0x4     /* Multiple choice menu         */
18478113Sdes#define DMENU_SELECTION_RETURNS 0x8     /* Immediate return on item selection */
18578113Sdes
18678113Sdestypedef struct _dmenu {
18778025Sdes    int type;				/* What sort of menu we are	*/
18878025Sdes    char *title;			/* Our title			*/
18959412Smsmith    char *prompt;			/* Our prompt			*/
19078113Sdes    char *helpline;			/* Line of help at bottom	*/
19178113Sdes    char *helpfile;			/* Help file for "F1"		*/
19278113Sdes    dialogMenuItem items[0];		/* Array of menu items		*/
19378113Sdes} DMenu;
19478113Sdes
19578113Sdes/* An rc.conf variable */
19678113Sdestypedef struct _variable {
19778113Sdes    struct _variable *next;
19878113Sdes    char *name;
19978113Sdes    char *value;
20078113Sdes    int dirty;
20178113Sdes} Variable;
20278113Sdes
20378113Sdes#define NO_ECHO_OBJ(type)	((type) | (DITEM_NO_ECHO << 16))
20478113Sdes#define TYPE_OF_OBJ(type)	((type) & 0xff)
20578113Sdes#define ATTR_OF_OBJ(type)	((type) >> 16)
20678113Sdes
20778113Sdes/* A screen layout structure */
20878113Sdestypedef struct _layout {
20978113Sdes    int         y;              /* x & Y co-ordinates */
21078113Sdes    int         x;
21178113Sdes    int         len;            /* The size of the dialog on the screen */
21278113Sdes    int         maxlen;         /* How much the user can type in ... */
21378113Sdes    char        *prompt;        /* The string for the prompt */
21478113Sdes    char        *help;          /* The display for the help line */
21578113Sdes    void        *var;           /* The var to set when this changes */
21678113Sdes    int         type;           /* The type of the dialog to create */
21778113Sdes    void        *obj;           /* The obj pointer returned by libdialog */
21878113Sdes} Layout;
21978113Sdes
22078113Sdestypedef enum {
22178113Sdes    DEVICE_TYPE_NONE,
22278113Sdes    DEVICE_TYPE_DISK,
22378113Sdes    DEVICE_TYPE_FLOPPY,
22478113Sdes    DEVICE_TYPE_FTP,
22578113Sdes    DEVICE_TYPE_NETWORK,
22678113Sdes    DEVICE_TYPE_CDROM,
22778113Sdes    DEVICE_TYPE_TAPE,
22878113Sdes    DEVICE_TYPE_DOS,
22978113Sdes    DEVICE_TYPE_UFS,
23078113Sdes    DEVICE_TYPE_NFS,
23178113Sdes    DEVICE_TYPE_ANY,
23278113Sdes} DeviceType;
23378113Sdes
23478113Sdes/* CDROM mount codes */
23578113Sdes#define CD_UNMOUNTED		0
23678113Sdes#define CD_ALREADY_MOUNTED	1
23778113Sdes#define CD_WE_MOUNTED_IT	2
23878113Sdes
23978113Sdes/* A "device" from sysinstall's point of view */
24078113Sdestypedef struct _device {
24178113Sdes    char name[DEV_NAME_MAX];
24278113Sdes    char *description;
24378113Sdes    char *devname;
24478113Sdes    DeviceType type;
24578113Sdes    Boolean enabled;
24678113Sdes    Boolean (*init)(struct _device *dev);
24778113Sdes    FILE * (*get)(struct _device *dev, char *file, Boolean probe);
24878113Sdes    void (*shutdown)(struct _device *dev);
24978113Sdes    void *private;
25078113Sdes    unsigned int flags;
25178113Sdes} Device;
25278113Sdes
25378113Sdes/* Some internal representations of partitions */
25478113Sdestypedef enum {
25578113Sdes    PART_NONE,
25678113Sdes    PART_SLICE,
25778113Sdes    PART_SWAP,
25878113Sdes    PART_FILESYSTEM,
25978113Sdes    PART_FAT,
26069799Sdes} PartType;
26159412Smsmith
26269799Sdes/* The longest newfs command we'll hand to system() */
26378031Sdes#define NEWFS_CMD_MAX	256
26478031Sdes
26569799Sdestypedef struct _part_info {
26678031Sdes    Boolean newfs;
26778031Sdes    char mountpoint[FILENAME_MAX];
26878031Sdes    char newfs_cmd[NEWFS_CMD_MAX];
26978031Sdes} PartInfo;
27078031Sdes
27178031Sdes/* An option */
27278031Sdestypedef struct _opt {
27367589Sdes    char *name;
27467589Sdes    char *desc;
27567589Sdes    enum { OPT_IS_STRING, OPT_IS_INT, OPT_IS_FUNC, OPT_IS_VAR } type;
27659412Smsmith    void *data;
27759412Smsmith    void *aux;
27867589Sdes    char *(*check)();
27959412Smsmith} Option;
28059412Smsmith
28167589Sdes/* Weird index nodey things we use for keeping track of package information */
28259412Smsmithtypedef enum { PACKAGE, PLACE } node_type;	/* Types of nodes */
28359412Smsmith
28467589Sdestypedef struct _pkgnode {	/* A node in the reconstructed hierarchy */
28559412Smsmith    struct _pkgnode *next;	/* My next sibling			*/
28659412Smsmith    node_type type;		/* What am I?				*/
28767589Sdes    char *name;			/* My name				*/
28859412Smsmith    char *desc;			/* My description (Hook)		*/
28959412Smsmith    struct _pkgnode *kids;	/* My little children			*/
29067589Sdes    void *data;			/* A place to hang my data		*/
29159412Smsmith} PkgNode;
29259412Smsmithtypedef PkgNode *PkgNodePtr;
29378031Sdes
29459412Smsmith/* A single package */
29559412Smsmithtypedef struct _indexEntry {	/* A single entry in an INDEX file */
29659412Smsmith    char *name;			/* name				*/
29778025Sdes    char *path;			/* full path to port		*/
29878031Sdes    char *prefix;		/* port prefix			*/
29969799Sdes    char *comment;		/* one line description		*/
30069799Sdes    char *descrfile;		/* path to description file	*/
30169799Sdes    char *deps;			/* packages this depends on	*/
30269799Sdes    int  depc;			/* how many depend on me	*/
30369799Sdes    int  installed;		/* indicates if it is installed */
30459412Smsmith    char *maintainer;		/* maintainer			*/
30578031Sdes} IndexEntry;
30678031Sdestypedef IndexEntry *IndexEntryPtr;
30767589Sdes
30878031Sdestypedef int (*commandFunc)(char *key, void *data);
30967589Sdes
31078031Sdes#define HOSTNAME_FIELD_LEN	128
31167589Sdes#define IPADDR_FIELD_LEN	16
31278031Sdes#define EXTRAS_FIELD_LEN	128
31378031Sdes
31478031Sdes/* This is the structure that Network devices carry around in their private, erm, structures */
31567589Sdestypedef struct _devPriv {
31678025Sdes    char ipaddr[IPADDR_FIELD_LEN];
31778025Sdes    char netmask[IPADDR_FIELD_LEN];
31878031Sdes    char extras[EXTRAS_FIELD_LEN];
31969799Sdes} DevInfo;
32069799Sdes
32178025Sdes
32269799Sdes/*** Externs ***/
32369799Sdesextern jmp_buf		BailOut;		/* Used to get the heck out */
32469799Sdesextern int		DebugFD;		/* Where diagnostic output goes			*/
32578031Sdesextern Boolean		Fake;			/* Don't actually modify anything - testing	*/
32669995Sdesextern Boolean		SystemWasInstalled;	/* Did we install it?				*/
32778025Sdesextern Boolean		RunningAsInit;		/* Are we running stand-alone?			*/
32859412Smsmithextern Boolean		DialogActive;		/* Is the dialog() stuff up?			*/
32978113Sdesextern Boolean		ColorDisplay;		/* Are we on a color display?			*/
33065633Sdesextern Boolean		OnVTY;			/* On a syscons VTY?				*/
33178113Sdesextern Variable		*VarHead;		/* The head of the variable chain		*/
33285289Sdesextern Device		*mediaDevice;		/* Where we're getting our distribution from	*/
33385289Sdesextern unsigned int	Dists;			/* Which distributions we want			*/
33485289Sdesextern unsigned int	DESDists;		/* Which naughty distributions we want		*/
33585289Sdesextern unsigned int	SrcDists;		/* Which src distributions we want		*/
33685289Sdesextern unsigned int	XF86Dists;		/* Which XFree86 dists we want			*/
33785289Sdesextern unsigned int	XF86ServerDists;	/* The XFree86 servers we want			*/
33885289Sdesextern unsigned int	XF86FontDists;		/* The XFree86 fonts we want			*/
33985289Sdesextern int		BootMgr;		/* Which boot manager to use 			*/
34085289Sdesextern int		StatusLine;		/* Where to print our status messages		*/
34185289Sdesextern DMenu		MenuInitial;		/* Initial installation menu			*/
34285289Sdesextern DMenu		MenuFixit;		/* Fixit repair menu				*/
34385289Sdesextern DMenu		MenuMBRType;		/* Type of MBR to write on the disk		*/
34485289Sdesextern DMenu		MenuConfigure;		/* Final configuration menu			*/
34585289Sdesextern DMenu		MenuDocumentation;	/* Documentation menu				*/
34685289Sdesextern DMenu		MenuFTPOptions;		/* FTP Installation options			*/
34785289Sdesextern DMenu		MenuIndex;		/* Index menu					*/
34885289Sdesextern DMenu		MenuOptions;		/* Installation options				*/
34985289Sdesextern DMenu		MenuOptionsLanguage;	/* Language options menu			*/
35085289Sdesextern DMenu		MenuMedia;		/* Media type menu				*/
35185289Sdesextern DMenu		MenuMouse;		/* Mouse type menu				*/
35285289Sdesextern DMenu		MenuMediaCDROM;		/* CDROM media menu				*/
35385289Sdesextern DMenu		MenuMediaDOS;		/* DOS media menu				*/
35485289Sdesextern DMenu		MenuMediaFloppy;	/* Floppy media menu				*/
35585289Sdesextern DMenu		MenuMediaFTP;		/* FTP media menu				*/
35685289Sdesextern DMenu		MenuMediaTape;		/* Tape media menu				*/
35785289Sdesextern DMenu		MenuNetworkDevice;	/* Network device menu				*/
35885289Sdesextern DMenu		MenuNTP;		/* NTP time server menu				*/
35985289Sdesextern DMenu		MenuStartup;		/* Startup services menu			*/
36085289Sdesextern DMenu		MenuSyscons;		/* System console configuration menu		*/
36185289Sdesextern DMenu		MenuSysconsFont;	/* System console font configuration menu	*/
36285289Sdesextern DMenu		MenuSysconsKeymap;	/* System console keymap configuration menu	*/
36385289Sdesextern DMenu		MenuSysconsKeyrate;	/* System console keyrate configuration menu	*/
36485289Sdesextern DMenu		MenuSysconsSaver;	/* System console saver configuration menu	*/
36585289Sdesextern DMenu		MenuSysconsScrnmap;	/* System console screenmap configuration menu	*/
36685289Sdesextern DMenu		MenuNetworking;		/* Network configuration menu			*/
36785289Sdesextern DMenu		MenuInstallCustom;	/* Custom Installation menu			*/
36885289Sdesextern DMenu		MenuDistributions;	/* Distribution menu				*/
36985289Sdesextern DMenu		MenuDiskDevices;	/* Disk type devices				*/
37085289Sdesextern DMenu		MenuSubDistributions;	/* Custom distribution menu			*/
37185289Sdesextern DMenu		MenuDESDistributions;	/* DES distribution menu			*/
37285289Sdesextern DMenu		MenuSrcDistributions;	/* Source distribution menu			*/
37385289Sdesextern DMenu		MenuXF86;		/* XFree86 main menu				*/
37485289Sdesextern DMenu		MenuXF86Select;		/* XFree86 distribution selection menu		*/
37585289Sdesextern DMenu		MenuXF86SelectCore;	/* XFree86 core distribution menu		*/
37685289Sdesextern DMenu		MenuXF86SelectServer;	/* XFree86 server distribution menu		*/
37785289Sdesextern DMenu		MenuXF86SelectPC98Server; /* XFree86 server distribution menu		*/
37885289Sdesextern DMenu		MenuXF86SelectFonts;	/* XFree86 font selection menu			*/
37985289Sdesextern DMenu		MenuXF86SelectFonts;	/* XFree86 font selection menu			*/
38085289Sdesextern DMenu		MenuXDesktops;		/* Disk devices menu				*/
38185289Sdesextern DMenu		MenuHTMLDoc;		/* HTML Documentation menu			*/
38285289Sdesextern DMenu		MenuUsermgmt;		/* User management menu				*/
38385289Sdesextern DMenu		MenuFixit;		/* Fixit floppy/CDROM/shell menu		*/
38485289Sdesextern DMenu		MenuXF86Config;		/* Select XFree86 configuration type		*/
38585289Sdes
38685289Sdes/* Stuff from libdialog which isn't properly declared outside */
38785289Sdesextern void display_helpfile(void);
38885289Sdesextern void display_helpline(WINDOW *w, int y, int width);
38985289Sdes
39085289Sdes/*** Prototypes ***/
39185289Sdes
39285289Sdes/* anonFTP.c */
39385289Sdesextern int	configAnonFTP(dialogMenuItem *self);
39485289Sdes
39585289Sdes/* cdrom.c */
39685289Sdesextern Boolean	mediaInitCDROM(Device *dev);
39785289Sdesextern FILE	*mediaGetCDROM(Device *dev, char *file, Boolean probe);
39885289Sdesextern void	mediaShutdownCDROM(Device *dev);
39985289Sdes
40078113Sdes/* command.c */
40178113Sdesextern void	command_clear(void);
40278025Sdesextern void	command_sort(void);
40378025Sdesextern void	command_execute(void);
40465633Sdesextern void	command_shell_add(char *key, char *fmt, ...);
40578025Sdesextern void	command_func_add(char *key, commandFunc func, void *data);
40669799Sdes
40769799Sdes/* config.c */
40869799Sdesextern void	configEnvironmentRC_conf(void);
40969799Sdesextern void	configEnvironmentResolv(char *config);
41069799Sdesextern void	configRC_conf(void);
41169799Sdesextern int	configFstab(dialogMenuItem *self);
41285657Sdillonextern int	configRC(dialogMenuItem *self);
41369799Sdesextern int	configResolv(dialogMenuItem *self);
41469799Sdesextern int	configPackages(dialogMenuItem *self);
41569799Sdesextern int	configSaver(dialogMenuItem *self);
41669799Sdesextern int	configSaverTimeout(dialogMenuItem *self);
41769799Sdesextern int	configNTP(dialogMenuItem *self);
41869799Sdesextern int	configUsers(dialogMenuItem *self);
41969799Sdesextern int	configXSetup(dialogMenuItem *self);
42069799Sdesextern int	configXDesktop(dialogMenuItem *self);
42169799Sdesextern int	configRouter(dialogMenuItem *self);
42269799Sdesextern int	configPCNFSD(dialogMenuItem *self);
42385657Sdillonextern int	configNFSServer(dialogMenuItem *self);
42478025Sdesextern int	configWriteRC_conf(dialogMenuItem *self);
42565633Sdes
42665633Sdes/* crc.c */
42778113Sdesextern int	crc(int, unsigned long *, unsigned long *);
42878113Sdes
42978113Sdes/* devices.c */
43078025Sdesextern DMenu	*deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)(dialogMenuItem *d),
43178025Sdes				  int (*check)(dialogMenuItem *d));
43265633Sdesextern void	deviceGetAll(void);
43365633Sdesextern void	deviceReset(void);
43465633Sdesextern void	deviceRescan(void);
43565633Sdesextern Device	**deviceFind(char *name, DeviceType type);
43685657Sdillonextern Device	**deviceFindDescr(char *name, char *desc, DeviceType class);
43785657Sdillonextern int	deviceCount(Device **devs);
43869799Sdesextern Device	*new_device(char *name);
43978025Sdesextern Device	*deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled,
44065633Sdes				Boolean (*init)(Device *mediadev),
44165633Sdes				FILE * (*get)(Device *dev, char *file, Boolean probe),
44278113Sdes				void (*shutDown)(Device *mediadev),
44378113Sdes				void *private);
44478113Sdesextern Boolean	dummyInit(Device *dev);
44578025Sdesextern FILE	*dummyGet(Device *dev, char *dist, Boolean probe);
44678025Sdesextern void	dummyShutdown(Device *dev);
44765633Sdes
44887275Srwatson/* disks.c */
44987275Srwatsonextern int	diskPartitionEditor(dialogMenuItem *self);
45087275Srwatsonextern int	diskPartitionWrite(dialogMenuItem *self);
45187275Srwatsonextern int	diskGetSelectCount(Device ***devs);
45287275Srwatsonextern void	diskPartition(Device *dev);
45387275Srwatson
45478025Sdes/* dispatch.c */
45569995Sdesextern int	dispatchCommand(char *command);
45687275Srwatsonextern int	dispatch_load_floppy(dialogMenuItem *self);
45778025Sdesextern int	dispatch_load_file_int(int);
45865633Sdesextern int	dispatch_load_file(dialogMenuItem *self);
45965633Sdes
46078113Sdes
46178113Sdes/* dist.c */
46278113Sdesextern int	distReset(dialogMenuItem *self);
46378025Sdesextern int	distConfig(dialogMenuItem *self);
46478025Sdesextern int	distSetCustom(dialogMenuItem *self);
46576839Sjlemonextern int	distSetDeveloper(dialogMenuItem *self);
46678025Sdesextern int	distSetXDeveloper(dialogMenuItem *self);
46776839Sjlemonextern int	distSetKernDeveloper(dialogMenuItem *self);
46876839Sjlemonextern int	distSetXKernDeveloper(dialogMenuItem *self);
46976839Sjlemonextern int	distSetUser(dialogMenuItem *self);
47076839Sjlemonextern int	distSetXUser(dialogMenuItem *self);
47176839Sjlemonextern int	distSetMinimum(dialogMenuItem *self);
47276839Sjlemonextern int	distSetEverything(dialogMenuItem *self);
47376839Sjlemonextern int	distSetDES(dialogMenuItem *self);
47476839Sjlemonextern int	distSetSrc(dialogMenuItem *self);
47576839Sjlemonextern int	distSetXF86(dialogMenuItem *self);
47678116Sdesextern int	distExtractAll(dialogMenuItem *self);
47776839Sjlemon
47878025Sdes/* dmenu.c */
47978025Sdesextern int	dmenuDisplayFile(dialogMenuItem *tmp);
48076839Sjlemonextern int	dmenuSubmenu(dialogMenuItem *tmp);
48176839Sjlemonextern int	dmenuSystemCommand(dialogMenuItem *tmp);
48278113Sdesextern int	dmenuSystemCommandBox(dialogMenuItem *tmp);
48378113Sdesextern int	dmenuExit(dialogMenuItem *tmp);
48478113Sdesextern int	dmenuISetVariable(dialogMenuItem *tmp);
48578025Sdesextern int	dmenuSetVariable(dialogMenuItem *tmp);
48678025Sdesextern int	dmenuSetKmapVariable(dialogMenuItem *tmp);
48767588Sdesextern int	dmenuSetVariables(dialogMenuItem *tmp);
48869995Sdesextern int	dmenuToggleVariable(dialogMenuItem *tmp);
48967588Sdesextern int	dmenuSetFlag(dialogMenuItem *tmp);
49069995Sdesextern int	dmenuSetValue(dialogMenuItem *tmp);
49178025Sdesextern Boolean	dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max, Boolean buttons);
49278025Sdesextern Boolean	dmenuOpenSimple(DMenu *menu, Boolean buttons);
49367588Sdesextern int	dmenuVarCheck(dialogMenuItem *item);
49467588Sdesextern int	dmenuVarsCheck(dialogMenuItem *item);
49573923Sjhbextern int	dmenuFlagCheck(dialogMenuItem *item);
49673923Sjhbextern int	dmenuRadioCheck(dialogMenuItem *item);
49773923Sjhb
49867588Sdes/* doc.c */
49967588Sdesextern int	docBrowser(dialogMenuItem *self);
50067588Sdesextern int	docShowDocument(dialogMenuItem *self);
50167588Sdes
50267588Sdes/* dos.c */
50367588Sdesextern Boolean	mediaCloseDOS(Device *dev, FILE *fp);
50467588Sdesextern Boolean	mediaInitDOS(Device *dev);
50567588Sdesextern FILE	*mediaGetDOS(Device *dev, char *file, Boolean probe);
50667588Sdesextern void	mediaShutdownDOS(Device *dev);
50767588Sdes
50867588Sdes/* floppy.c */
50967588Sdesextern int	getRootFloppy(void);
51067588Sdesextern Boolean	mediaInitFloppy(Device *dev);
51167588Sdesextern FILE	*mediaGetFloppy(Device *dev, char *file, Boolean probe);
51267588Sdesextern void	mediaShutdownFloppy(Device *dev);
51367588Sdes
51467588Sdes/* ftp_strat.c */
51567588Sdesextern Boolean	mediaCloseFTP(Device *dev, FILE *fp);
51669995Sdesextern Boolean	mediaInitFTP(Device *dev);
51769995Sdesextern FILE	*mediaGetFTP(Device *dev, char *file, Boolean probe);
51867588Sdesextern void	mediaShutdownFTP(Device *dev);
51969995Sdes
52067588Sdes/* globals.c */
52167588Sdesextern void	globalsInit(void);
52269799Sdes
52369799Sdes/* index.c */
52467588Sdesint		index_read(FILE *fp, PkgNodePtr papa);
52567588Sdesint		index_menu(PkgNodePtr root, PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll);
52667588Sdesvoid		index_init(PkgNodePtr top, PkgNodePtr plist);
52767588Sdesvoid		index_node_free(PkgNodePtr top, PkgNodePtr plist);
52867588Sdesvoid		index_sort(PkgNodePtr top);
52969799Sdesvoid		index_print(PkgNodePtr top, int level);
53069799Sdesint		index_extract(Device *dev, PkgNodePtr top, PkgNodePtr plist);
53169799Sdes
53269799Sdes/* install.c */
53367588Sdesextern Boolean	checkLabels(Boolean whinge, Chunk **rdev, Chunk **sdev, Chunk **udev, Chunk **vdev);
53478025Sdesextern int	installCommit(dialogMenuItem *self);
53567588Sdesextern int	installCustomCommit(dialogMenuItem *self);
53678025Sdesextern int	installExpress(dialogMenuItem *self);
53767588Sdesextern int	installNovice(dialogMenuItem *self);
53867588Sdesextern int	installFixitHoloShell(dialogMenuItem *self);
53967588Sdesextern int	installFixitCDROM(dialogMenuItem *self);
54067588Sdesextern int	installFixitFloppy(dialogMenuItem *self);
54167588Sdesextern int	installFixupBin(dialogMenuItem *self);
54267588Sdesextern int	installFixupXFree(dialogMenuItem *self);
54367588Sdesextern int	installUpgrade(dialogMenuItem *self);
54467588Sdesextern int	installFilesystems(dialogMenuItem *self);
54567588Sdesextern int	installVarDefaults(dialogMenuItem *self);
54667588Sdesextern void	installEnvironment(void);
54767588Sdesextern Boolean	copySelf(void);
54867588Sdes
54967588Sdes/* kget.c */
55067588Sdesextern int	kget(char *out);
55167588Sdes
55267588Sdes/* keymap.c */
55367588Sdesextern int	loadKeymap(const char *lang);
55478113Sdes
55578113Sdes/* label.c */
55678113Sdesextern int	diskLabelEditor(dialogMenuItem *self);
55778025Sdesextern int	diskLabelCommit(dialogMenuItem *self);
55878025Sdes
55967588Sdes/* lndir.c */
56069995Sdesextern int	lndir(char *from, char *to);
56167588Sdes
56269799Sdes/* makedevs.c (auto-generated) */
56374135Sjlemonextern const char	termcap_ansi[];
56467588Sdesextern const char	termcap_vt100[];
56572200Sbmilekicextern const char	termcap_cons25[];
56667588Sdesextern const char	termcap_cons25_m[];
56767588Sdesextern const char	termcap_cons25r[];
56867588Sdesextern const char	termcap_cons25r_m[];
56967588Sdesextern const char	termcap_cons25l1[];
57072200Sbmilekicextern const char	termcap_cons25l1_m[];
57167588Sdesextern const u_char	font_iso_8x16[];
57269995Sdesextern const u_char	font_cp850_8x16[];
57378025Sdesextern const u_char	font_cp866_8x16[];
57478031Sdesextern const u_char	koi8_r2cp866[];
57567588Sdesextern u_char		default_scrnmap[];
57667588Sdes
57767588Sdes/* media.c */
57867588Sdesextern char	*cpioVerbosity(void);
57978025Sdesextern void	mediaClose(void);
58071471Sjhbextern int	mediaTimeout(void);
58178025Sdesextern int	mediaSetCDROM(dialogMenuItem *self);
58273923Sjhbextern int	mediaSetFloppy(dialogMenuItem *self);
58378031Sdesextern int	mediaSetDOS(dialogMenuItem *self);
58478031Sdesextern int	mediaSetTape(dialogMenuItem *self);
58578031Sdesextern int	mediaSetFTP(dialogMenuItem *self);
58678031Sdesextern int	mediaSetFTPActive(dialogMenuItem *self);
58778031Sdesextern int	mediaSetFTPPassive(dialogMenuItem *self);
58878031Sdesextern int	mediaSetUFS(dialogMenuItem *self);
58978031Sdesextern int	mediaSetNFS(dialogMenuItem *self);
59078031Sdesextern int	mediaSetFTPUserPass(dialogMenuItem *self);
59178031Sdesextern int	mediaSetCPIOVerbosity(dialogMenuItem *self);
59278031Sdesextern int	mediaGetType(dialogMenuItem *self);
59378025Sdesextern Boolean	mediaExtractDist(char *dir, char *dist, FILE *fp);
59467588Sdesextern Boolean	mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic);
59578031Sdesextern Boolean	mediaExtractDistEnd(int zpid, int cpid);
59671471Sjhbextern Boolean	mediaVerify(void);
59778025Sdesextern FILE	*mediaGenericGet(char *base, const char *file);
59867588Sdes
59967588Sdes/* misc.c */
60067588Sdesextern Boolean	file_readable(char *fname);
60169799Sdesextern Boolean	file_executable(char *fname);
60269799Sdesextern Boolean	directory_exists(const char *dirname);
60369799Sdesextern char	*root_bias(char *path);
60469799Sdesextern char	*itoa(int value);
60569799Sdesextern char	*string_concat(char *p1, char *p2);
60669799Sdesextern char	*string_concat3(char *p1, char *p2, char *p3);
60769799Sdesextern char	*string_prune(char *str);
60869799Sdesextern char	*string_skipwhite(char *str);
60967588Sdesextern char	*string_copy(char *s1, char *s2);
61078025Sdesextern char	*pathBaseName(const char *path);
61178025Sdesextern void	safe_free(void *ptr);
61278025Sdesextern void	*safe_malloc(size_t size);
61378025Sdesextern void	*safe_realloc(void *orig, size_t size);
61478025Sdesextern dialogMenuItem *item_add(dialogMenuItem *list, char *prompt, char *title,
61578025Sdes				int (*checked)(dialogMenuItem *self),
61669995Sdes				int (*fire)(dialogMenuItem *self),
61769995Sdes				void (*selected)(dialogMenuItem *self, int is_selected),
61878025Sdes				void *data, int aux, int *curr, int *max);
61967588Sdesextern void	items_free(dialogMenuItem *list, int *curr, int *max);
62067588Sdesextern int	Mkdir(char *);
62167588Sdesextern int	Mount(char *, void *data);
62267588Sdesextern WINDOW	*openLayoutDialog(char *helpfile, char *title, int x, int y, int width, int height);
62367588Sdesextern ComposeObj *initLayoutDialog(WINDOW *win, Layout *layout, int x, int y, int *max);
62467588Sdesextern int	layoutDialogLoop(WINDOW *win, Layout *layout, ComposeObj **obj,
62567588Sdes				 int *n, int max, int *cbutton, int *cancel);
62667588Sdes
62767588Sdesextern WINDOW	*savescr(void);
62867588Sdesextern void	restorescr(WINDOW *w);
62967588Sdesextern char	*sstrncpy(char *dst, const char *src, int size);
63067588Sdes
63171471Sjhb/* mouse.c */
63278025Sdesextern int	mousedTest(dialogMenuItem *self);
63369799Sdesextern int	mousedDisable(dialogMenuItem *self);
63469799Sdes
63569799Sdes/* msg.c */
63669799Sdesextern Boolean	isDebug(void);
63778025Sdesextern void	msgInfo(char *fmt, ...);
63878025Sdesextern void	msgYap(char *fmt, ...);
63978025Sdesextern void	msgWarn(char *fmt, ...);
64071471Sjhbextern void	msgDebug(char *fmt, ...);
64167588Sdesextern void	msgError(char *fmt, ...);
64267588Sdesextern void	msgFatal(char *fmt, ...);
64367588Sdesextern void	msgConfirm(char *fmt, ...);
64467588Sdesextern void	msgNotify(char *fmt, ...);
64567588Sdesextern void	msgWeHaveOutput(char *fmt, ...);
64667588Sdesextern int	msgYesNo(char *fmt, ...);
64778025Sdesextern char	*msgGetInput(char *buf, char *fmt, ...);
64878025Sdesextern int	msgSimpleConfirm(char *);
64978025Sdesextern int	msgSimpleNotify(char *);
65078025Sdes
65178025Sdes/* network.c */
65267588Sdesextern Boolean	mediaInitNetwork(Device *dev);
65374135Sjlemonextern void	mediaShutdownNetwork(Device *dev);
65478113Sdes
65578113Sdes/* nfs.c */
65678113Sdesextern Boolean	mediaInitNFS(Device *dev);
65778025Sdesextern FILE	*mediaGetNFS(Device *dev, char *file, Boolean probe);
65878025Sdesextern void	mediaShutdownNFS(Device *dev);
65974135Sjlemon
66083366Sjulian/* options.c */
66178025Sdesextern int	optionsEditor(dialogMenuItem *self);
66274135Sjlemon
66374135Sjlemon/* package.c */
66478113Sdesextern int	packageAdd(dialogMenuItem *self);
66578113Sdesextern int	package_add(char *name);
66678113Sdesextern int	package_extract(Device *dev, char *name, Boolean depended);
66778025Sdesextern Boolean	package_exists(char *name);
66878113Sdes
66978113Sdes/* system.c */
67078113Sdesextern void	systemInitialize(int argc, char **argv);
67178113Sdesextern void	systemShutdown(int status);
67278113Sdesextern int	execExecute(char *cmd, char *name);
67378113Sdesextern int	systemExecute(char *cmd);
67478113Sdesextern int	systemDisplayHelp(char *file);
67578113Sdesextern char	*systemHelpFile(char *file, char *buf);
67678113Sdesextern void	systemChangeFont(const u_char font[]);
67778113Sdesextern void	systemChangeLang(char *lang);
67878113Sdesextern void	systemChangeTerminal(char *color, const u_char c_termcap[], char *mono, const u_char m_termcap[]);
67978113Sdesextern void	systemChangeScreenmap(const u_char newmap[]);
68078113Sdesextern void	systemCreateHoloshell(void);
68178113Sdesextern int	vsystem(char *fmt, ...);
68278113Sdes
68383366Sjulian/* tape.c */
68478113Sdesextern char	*mediaTapeBlocksize(void);
68583366Sjulianextern Boolean	mediaInitTape(Device *dev);
68678113Sdesextern FILE	*mediaGetTape(Device *dev, char *file, Boolean probe);
68778113Sdesextern void	mediaShutdownTape(Device *dev);
68878113Sdes
68978113Sdes/* tcpip.c */
69078113Sdesextern int	tcpOpenDialog(Device *dev);
69178113Sdesextern int	tcpMenuSelect(dialogMenuItem *self);
69278113Sdesextern Device	*tcpDeviceSelect(void);
69378113Sdes
69478113Sdes/* termcap.c */
69578113Sdesextern int	set_termcap(void);
69678113Sdes
69778113Sdes/* ufs.c */
69878113Sdesextern void	mediaShutdownUFS(Device *dev);
69978113Sdesextern Boolean	mediaInitUFS(Device *dev);
70078113Sdesextern FILE	*mediaGetUFS(Device *dev, char *file, Boolean probe);
70178113Sdes
70278113Sdes/* user.c */
70378113Sdesextern int	userAddGroup(dialogMenuItem *self);
70485129Sdesextern int	userAddUser(dialogMenuItem *self);
70574135Sjlemon
70674135Sjlemon/* variable.c */
70774135Sjlemonextern void	variable_set(char *var, int dirty);
70874135Sjlemonextern void	variable_set2(char *name, char *value, int dirty);
70985289Sdesextern char 	*variable_get(char *var);
71078025Sdesextern int 	variable_cmp(char *var, char *value);
71174135Sjlemonextern void	variable_unset(char *var);
71274135Sjlemonextern char	*variable_get_value(char *var, char *prompt, int dirty);
71378025Sdesextern int 	variable_check(char *data);
71474135Sjlemonextern int	dump_variables(dialogMenuItem *self);
71574135Sjlemon
71678113Sdes/* wizard.c */
71778113Sdesextern void	slice_wizard(Disk *d);
71878113Sdes
71978025Sdes#endif
72078025Sdes/* _SYSINSTALL_H_INCLUDE */
72174135Sjlemon