sade.h revision 19577
185587Sobrien/*
285587Sobrien * The new sysinstall program.
385587Sobrien *
485587Sobrien * This is probably the last attempt in the `sysinstall' line, the next
585587Sobrien * generation being slated to essentially a complete rewrite.
685587Sobrien *
785587Sobrien * $Id: sysinstall.h,v 1.86 1996/11/09 16:47:08 joerg Exp $
885587Sobrien *
985587Sobrien * Copyright (c) 1995
1085587Sobrien *	Jordan Hubbard.  All rights reserved.
1185587Sobrien *
1285587Sobrien * Redistribution and use in source and binary forms, with or without
1385587Sobrien * modification, are permitted provided that the following conditions
1485587Sobrien * are met:
1585587Sobrien * 1. Redistributions of source code must retain the above copyright
1685587Sobrien *    notice, this list of conditions and the following disclaimer,
1785587Sobrien *    verbatim and that no modifications are made prior to this
1885587Sobrien *    point in the file.
1985587Sobrien * 2. Redistributions in binary form must reproduce the above copyright
2085587Sobrien *    notice, this list of conditions and the following disclaimer in the
2185587Sobrien *    documentation and/or other materials provided with the distribution.
2285587Sobrien *
2385587Sobrien * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
2485587Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2585587Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2685587Sobrien * ARE DISCLAIMED.  IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
2785587Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2885587Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2985587Sobrien * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
3085587Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3185587Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3285587Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3385587Sobrien * SUCH DAMAGE.
3485587Sobrien *
3585587Sobrien */
3685587Sobrien
3785587Sobrien#ifndef _SYSINSTALL_H_INCLUDE
3885587Sobrien#define _SYSINSTALL_H_INCLUDE
3985587Sobrien
4085587Sobrien#include <stdio.h>
41107806Sobrien#include <stdlib.h>
4285587Sobrien#include <string.h>
4385587Sobrien#include <unistd.h>
4485587Sobrien#include <dialog.h>
4585587Sobrien#include <sys/types.h>
4685587Sobrien#include <sys/wait.h>
4785587Sobrien#include "libdisk.h"
4885587Sobrien#include "dist.h"
4985587Sobrien#include "version.h"
5085587Sobrien
5185587Sobrien/*** Defines ***/
5285587Sobrien
5385587Sobrien/* Different packages we depend on - update this when package version change! */
5485587Sobrien#define PACKAGE_GATED	"gated-3.5b3"
5585587Sobrien#define PACKAGE_APACHE	"apache-1.1.1"
5685587Sobrien#define PACKAGE_NETCON	"commerce/netcon/bsd60"
5785587Sobrien#define PACKAGE_PCNFSD	"pcnfsd-93.02.16"
5885587Sobrien#define PACKAGE_SAMBA	"samba-1.9.15p8"
5985587Sobrien#define PACKAGE_LYNX	"lynx-2.6"
6085587Sobrien
6185587Sobrien/* variable limits */
6285587Sobrien#define VAR_NAME_MAX		128
6385587Sobrien#define VAR_VALUE_MAX		1024
6485587Sobrien
6585587Sobrien/* device limits */
6685587Sobrien#define DEV_NAME_MAX		64	/* The maximum length of a device name	*/
6785587Sobrien#define DEV_MAX			100	/* The maximum number of devices we'll deal with */
6885587Sobrien#define INTERFACE_MAX		50	/* Maximum number of network interfaces we'll deal with */
6985587Sobrien#define IO_ERROR		-2	/* Status code for I/O error rather than normal EOF */
7085587Sobrien
7185587Sobrien/*
7285587Sobrien * I make some pretty gross assumptions about having a max of 50 chunks
7385587Sobrien * total - 8 slices and 42 partitions.  I can't easily display many more
7485587Sobrien * than that on the screen at once!
7585587Sobrien *
7685587Sobrien * For 2.1 I'll revisit this and try to make it more dynamic, but since
7785587Sobrien * this will catch 99.99% of all possible cases, I'm not too worried.
7885587Sobrien */
7985587Sobrien#define MAX_CHUNKS	40
8085587Sobrien
8185587Sobrien/* Internal environment variable names */
8285587Sobrien#define DISK_PARTITIONED		"_diskPartitioned"
8385587Sobrien#define DISK_LABELLED			"_diskLabelled"
8485587Sobrien#define DISK_SELECTED			"_diskSelected"
8585587Sobrien#define SYSTEM_STATE			"_systemState"
8685587Sobrien#define RUNNING_ON_ROOT			"_runningOnRoot"
8785587Sobrien#define TCP_CONFIGURED			"_tcpConfigured"
8885587Sobrien
8985587Sobrien/* Ones that can be tweaked from config files */
9085587Sobrien#define VAR_BLANKTIME			"blanktime"
9185587Sobrien#define VAR_BOOTMGR			"bootManager"
9285587Sobrien#define VAR_BROWSER_BINARY		"browserBinary"
9385587Sobrien#define VAR_BROWSER_PACKAGE		"browserPackage"
9485587Sobrien#define VAR_CPIO_VERBOSITY		"cpioVerbose"
9585587Sobrien#define VAR_DEBUG			"debug"
9685587Sobrien#define VAR_DISK			"disk"
9785587Sobrien#define VAR_DOMAINNAME			"domainname"
9885587Sobrien#define VAR_EDITOR			"editor"
9985587Sobrien#define VAR_EXTRAS			"ifconfig_"
10085587Sobrien#define VAR_FTP_DIR			"ftpDirectory"
10185587Sobrien#define VAR_FTP_PASS			"ftpPass"
10285587Sobrien#define VAR_FTP_PATH			"ftp"
10385587Sobrien#define VAR_FTP_PORT			"ftpPort"
10485587Sobrien#define VAR_FTP_STATE			"ftpState"
10585587Sobrien#define VAR_FTP_USER			"ftpUser"
10685587Sobrien#define VAR_FTP_HOST			"ftpHost"
10785587Sobrien#define VAR_GATEWAY			"defaultrouter"
10890902Sdes#define VAR_GEOMETRY			"geometry"
10985587Sobrien#define VAR_HOSTNAME			"hostname"
11085587Sobrien#define VAR_IFCONFIG			"ifconfig_"
11185587Sobrien#define VAR_INTERFACES			"network_interfaces"
11285587Sobrien#define VAR_INSTALL_ROOT		"installRoot"
11385587Sobrien#define VAR_IPADDR			"ipaddr"
11485587Sobrien#define VAR_LABEL			"label"
11585587Sobrien#define VAR_LABEL_COUNT			"labelCount"
11685587Sobrien#define VAR_MEDIA_TYPE			"mediaType"
11785587Sobrien#define VAR_NAMESERVER			"nameserver"
11885587Sobrien#define VAR_NETMASK			"netmask"
11985587Sobrien#define VAR_NFS_PATH			"nfs"
12085587Sobrien#define VAR_NFS_HOST			"nfsHost"
12185587Sobrien#define VAR_NFS_SECURE			"nfsSecure"
12285587Sobrien#define VAR_NFS_SERVER			"nfs_server"
12385587Sobrien#define VAR_NO_CONFIRM			"noConfirm"
12485587Sobrien#define VAR_NOVELL			"novell"
12585587Sobrien#define VAR_NTPDATE			"ntpdate"
12685587Sobrien#define VAR_PCNFSD			"pcnfsd"
12785587Sobrien#define VAR_PKG_TMPDIR			"PKG_TMPDIR"
12885587Sobrien#define VAR_PORTS_PATH			"ports"
12985587Sobrien#define VAR_RELNAME			"releaseName"
13085587Sobrien#define VAR_ROOT_SIZE			"rootSize"
13185587Sobrien#define VAR_ROUTER			"router"
13285587Sobrien#define VAR_ROUTERFLAGS			"routerflags"
13385587Sobrien#define VAR_SERIAL_SPEED		"serialSpeed"
13485587Sobrien#define VAR_SLOW_ETHER			"slowEthernetCard"
13585587Sobrien#define VAR_SWAP_SIZE			"swapSize"
13690902Sdes#define VAR_TAPE_BLOCKSIZE		"tapeBlocksize"
137146299Sru#define VAR_UFS_PATH			"ufs"
13885587Sobrien#define VAR_USR_SIZE			"usrSize"
13985587Sobrien#define VAR_VAR_SIZE			"varSize"
14085587Sobrien
14185587Sobrien#define DEFAULT_TAPE_BLOCKSIZE	"20"
14285587Sobrien
14385587Sobrien/* One MB worth of blocks */
14485587Sobrien#define ONE_MEG				2048
14585587Sobrien
14685587Sobrien/* Which selection attributes to use */
14785587Sobrien#define ATTR_SELECTED			(ColorDisplay ? item_selected_attr : item_attr)
14885587Sobrien#define ATTR_TITLE	button_active_attr
14985587Sobrien
15085587Sobrien
15185587Sobrien/*** Types ***/
15285587Sobrientypedef unsigned int Boolean;
15385587Sobrientypedef struct disk Disk;
15490902Sdestypedef struct chunk Chunk;
155146299Sru
15690902Sdes/* Bitfields for menu options */
157146299Sru#define DMENU_NORMAL_TYPE	0x1     /* Normal dialog menu           */
15890902Sdes#define DMENU_RADIO_TYPE	0x2     /* Radio dialog menu            */
159146299Sru#define DMENU_CHECKLIST_TYPE	0x4     /* Multiple choice menu         */
160146299Sru#define DMENU_SELECTION_RETURNS 0x8     /* Immediate return on item selection */
161146299Sru
16290902Sdestypedef struct _dmenu {
16385587Sobrien    int type;				/* What sort of menu we are	*/
16485587Sobrien    char *title;			/* Our title			*/
16585587Sobrien    char *prompt;			/* Our prompt			*/
16690902Sdes    char *helpline;			/* Line of help at bottom	*/
16785587Sobrien    char *helpfile;			/* Help file for "F1"		*/
16885587Sobrien    dialogMenuItem items[0];		/* Array of menu items		*/
16985587Sobrien} DMenu;
17085587Sobrien
17185587Sobrien/* A sysconfig variable */
17285587Sobrientypedef struct _variable {
17385587Sobrien    struct _variable *next;
17485587Sobrien    char name[VAR_NAME_MAX];
17585587Sobrien    char value[VAR_VALUE_MAX];
17685587Sobrien} Variable;
17785587Sobrien
17885587Sobrien/* For attribs */
17985587Sobrien#define MAX_ATTRIBS	200
18085587Sobrien#define MAX_NAME	64
18185587Sobrien#define MAX_VALUE	256
18285587Sobrien
18385587Sobrientypedef struct _attribs {
18485587Sobrien    char name[MAX_NAME];
18585587Sobrien    char value[MAX_VALUE];
18685587Sobrien} Attribs;
18785587Sobrien
18885587Sobrientypedef enum {
18985587Sobrien    DEVICE_TYPE_NONE,
19085587Sobrien    DEVICE_TYPE_DISK,
191146299Sru    DEVICE_TYPE_FLOPPY,
19285587Sobrien    DEVICE_TYPE_FTP,
19385587Sobrien    DEVICE_TYPE_NETWORK,
194146299Sru    DEVICE_TYPE_CDROM,
19585587Sobrien    DEVICE_TYPE_TAPE,
19685587Sobrien    DEVICE_TYPE_DOS,
19785587Sobrien    DEVICE_TYPE_UFS,
19885587Sobrien    DEVICE_TYPE_NFS,
19990902Sdes    DEVICE_TYPE_ANY,
20085587Sobrien} DeviceType;
20185587Sobrien
20285587Sobrien/* CDROM mount codes */
20385587Sobrien#define CD_UNMOUNTED		0
20485587Sobrien#define CD_ALREADY_MOUNTED	1
20585587Sobrien#define CD_WE_MOUNTED_IT	2
20685587Sobrien
20785587Sobrien/* A "device" from sysinstall's point of view */
20885587Sobrientypedef struct _device {
20985587Sobrien    char name[DEV_NAME_MAX];
21085587Sobrien    char *description;
21185587Sobrien    char *devname;
21285587Sobrien    DeviceType type;
21385587Sobrien    Boolean enabled;
21485587Sobrien    Boolean (*init)(struct _device *dev);
21585587Sobrien    int (*get)(struct _device *dev, char *file, Boolean probe);
21685587Sobrien    Boolean (*close)(struct _device *dev, int fd);
21785587Sobrien    void (*shutdown)(struct _device *dev);
21885587Sobrien    void *private;
21985587Sobrien    unsigned int flags;
22085587Sobrien} Device;
22185587Sobrien
22285587Sobrien/* Some internal representations of partitions */
22385587Sobrientypedef enum {
22485587Sobrien    PART_NONE,
22585587Sobrien    PART_SLICE,
22685587Sobrien    PART_SWAP,
22785587Sobrien    PART_FILESYSTEM,
22885587Sobrien    PART_FAT,
22985587Sobrien} PartType;
23085587Sobrien
23185587Sobrien/* The longest newfs command we'll hand to system() */
23285587Sobrien#define NEWFS_CMD_MAX	256
23385587Sobrien
23485587Sobrientypedef struct _part_info {
23585587Sobrien    Boolean newfs;
23685587Sobrien    char mountpoint[FILENAME_MAX];
23785587Sobrien    char newfs_cmd[NEWFS_CMD_MAX];
23885587Sobrien} PartInfo;
23985587Sobrien
24085587Sobrien/* An option */
24185587Sobrientypedef struct _opt {
24285587Sobrien    char *name;
24385587Sobrien    char *desc;
24485587Sobrien    enum { OPT_IS_STRING, OPT_IS_INT, OPT_IS_FUNC, OPT_IS_VAR } type;
24585587Sobrien    void *data;
24685587Sobrien    void *aux;
24785587Sobrien    char *(*check)();
24885587Sobrien} Option;
24985587Sobrien
25085587Sobrien/* Weird index nodey things we use for keeping track of package information */
25185587Sobrientypedef enum { PACKAGE, PLACE } node_type;	/* Types of nodes */
25285587Sobrien
25385587Sobrientypedef struct _pkgnode {	/* A node in the reconstructed hierarchy */
25485587Sobrien    struct _pkgnode *next;	/* My next sibling			*/
25585587Sobrien    node_type type;		/* What am I?				*/
25685587Sobrien    char *name;			/* My name				*/
25785587Sobrien    char *desc;			/* My description (Hook)		*/
25885587Sobrien    struct _pkgnode *kids;	/* My little children			*/
25985587Sobrien    void *data;			/* A place to hang my data		*/
26085587Sobrien} PkgNode;
26185587Sobrientypedef PkgNode *PkgNodePtr;
26285587Sobrien
26385587Sobrien/* A single package */
26485587Sobrientypedef struct _indexEntry {	/* A single entry in an INDEX file */
26585587Sobrien    char *name;			/* name				*/
26685587Sobrien    char *path;			/* full path to port		*/
26785587Sobrien    char *prefix;		/* port prefix			*/
26885587Sobrien    char *comment;		/* one line description		*/
26985587Sobrien    char *descrfile;		/* path to description file	*/
27085587Sobrien    char *deps;			/* packages this depends on	*/
27185587Sobrien    char *maintainer;		/* maintainer			*/
27285587Sobrien} IndexEntry;
27385587Sobrientypedef IndexEntry *IndexEntryPtr;
27485587Sobrien
27585587Sobrientypedef int (*commandFunc)(char *key, void *data);
27685587Sobrien
27785587Sobrien#define HOSTNAME_FIELD_LEN	128
27885587Sobrien#define IPADDR_FIELD_LEN	16
27985587Sobrien#define EXTRAS_FIELD_LEN	128
28085587Sobrien
28185587Sobrien/* This is the structure that Network devices carry around in their private, erm, structures */
28285587Sobrientypedef struct _devPriv {
28385587Sobrien    char ipaddr[IPADDR_FIELD_LEN];
28485587Sobrien    char netmask[IPADDR_FIELD_LEN];
28585587Sobrien    char extras[EXTRAS_FIELD_LEN];
28685587Sobrien} DevInfo;
28785587Sobrien
28885587Sobrien
28985587Sobrien/*** Externs ***/
29085587Sobrienextern int		DebugFD;		/* Where diagnostic output goes			*/
29185587Sobrienextern Boolean		Fake;			/* Don't actually modify anything - testing	*/
29285587Sobrienextern Boolean		SystemWasInstalled;	/* Did we install it?				*/
29385587Sobrienextern Boolean		RunningAsInit;		/* Are we running stand-alone?			*/
29485587Sobrienextern Boolean		DialogActive;		/* Is the dialog() stuff up?			*/
29585587Sobrienextern Boolean		ColorDisplay;		/* Are we on a color display?			*/
29685587Sobrienextern Boolean		OnVTY;			/* On a syscons VTY?				*/
29785587Sobrienextern Variable		*VarHead;		/* The head of the variable chain		*/
29885587Sobrienextern Device		*mediaDevice;		/* Where we're getting our distribution from	*/
29985587Sobrienextern unsigned int	Dists;			/* Which distributions we want			*/
30085587Sobrienextern unsigned int	DESDists;		/* Which naughty distributions we want		*/
30185587Sobrienextern unsigned int	SrcDists;		/* Which src distributions we want		*/
30285587Sobrienextern unsigned int	XF86Dists;		/* Which XFree86 dists we want			*/
30385587Sobrienextern unsigned int	XF86ServerDists;	/* The XFree86 servers we want			*/
30485587Sobrienextern unsigned int	XF86FontDists;		/* The XFree86 fonts we want			*/
30585587Sobrienextern int		BootMgr;		/* Which boot manager to use 			*/
30685587Sobrienextern int		StatusLine;		/* Where to print our status messages		*/
30785587Sobrienextern DMenu		MenuInitial;		/* Initial installation menu			*/
30885587Sobrienextern DMenu		MenuFixit;		/* Fixit repair menu				*/
30985587Sobrienextern DMenu		MenuMBRType;		/* Type of MBR to write on the disk		*/
31085587Sobrienextern DMenu		MenuConfigure;		/* Final configuration menu			*/
31185587Sobrienextern DMenu		MenuDocumentation;	/* Documentation menu				*/
31285587Sobrienextern DMenu		MenuFTPOptions;		/* FTP Installation options			*/
31385587Sobrienextern DMenu		MenuIndex;		/* Index menu					*/
31485587Sobrienextern DMenu		MenuOptions;		/* Installation options				*/
31585587Sobrienextern DMenu		MenuOptionsLanguage;	/* Language options menu			*/
31685587Sobrienextern DMenu		MenuMedia;		/* Media type menu				*/
31785587Sobrienextern DMenu		MenuMouse;		/* Mouse type menu				*/
31885587Sobrienextern DMenu		MenuMediaCDROM;		/* CDROM media menu				*/
31985587Sobrienextern DMenu		MenuMediaDOS;		/* DOS media menu				*/
32085587Sobrienextern DMenu		MenuMediaFloppy;	/* Floppy media menu				*/
32185587Sobrienextern DMenu		MenuMediaFTP;		/* FTP media menu				*/
32285587Sobrienextern DMenu		MenuMediaTape;		/* Tape media menu				*/
32385587Sobrienextern DMenu		MenuNetworkDevice;	/* Network device menu				*/
32490902Sdesextern DMenu		MenuNTP;		/* NTP time server menu				*/
32590902Sdesextern DMenu		MenuSyscons;		/* System console configuration menu		*/
32690902Sdesextern DMenu		MenuSysconsFont;	/* System console font configuration menu	*/
32785587Sobrienextern DMenu		MenuSysconsKeymap;	/* System console keymap configuration menu	*/
32885587Sobrienextern DMenu		MenuSysconsKeyrate;	/* System console keyrate configuration menu	*/
32985587Sobrienextern DMenu		MenuSysconsSaver;	/* System console saver configuration menu	*/
33085587Sobrienextern DMenu		MenuSysconsScrnmap;	/* System console screenmap configuration menu	*/
33185587Sobrienextern DMenu		MenuNetworking;		/* Network configuration menu			*/
33285587Sobrienextern DMenu		MenuInstallCustom;	/* Custom Installation menu			*/
33385587Sobrienextern DMenu		MenuDistributions;	/* Distribution menu				*/
33485587Sobrienextern DMenu		MenuSubDistributions;	/* Custom distribution menu			*/
33585587Sobrienextern DMenu		MenuDESDistributions;	/* DES distribution menu			*/
33685587Sobrienextern DMenu		MenuSrcDistributions;	/* Source distribution menu			*/
33785587Sobrienextern DMenu		MenuXF86;		/* XFree86 main menu				*/
33885587Sobrienextern DMenu		MenuXF86Select;		/* XFree86 distribution selection menu		*/
33985587Sobrienextern DMenu		MenuXF86SelectCore;	/* XFree86 core distribution menu		*/
34085587Sobrienextern DMenu		MenuXF86SelectServer;	/* XFree86 server distribution menu		*/
34185587Sobrienextern DMenu		MenuXF86SelectPC98Server; /* XFree86 server distribution menu		*/
34285587Sobrienextern DMenu		MenuXF86SelectFonts;	/* XFree86 font selection menu			*/
34385587Sobrienextern DMenu		MenuDiskDevices;	/* Disk devices menu				*/
34485587Sobrienextern DMenu		MenuHTMLDoc;		/* HTML Documentation menu			*/
34585587Sobrien
34685587Sobrien
34785587Sobrien/*** Prototypes ***/
34885587Sobrien
34985587Sobrien/* apache.c */
35085587Sobrienextern int	configApache(dialogMenuItem *self);
35185587Sobrien
35285587Sobrien/* anonFTP.c */
35385587Sobrienextern int	configAnonFTP(dialogMenuItem *self);
35485587Sobrien
35585587Sobrien/* attrs.c */
35685587Sobrienextern char	*attr_match(Attribs *attr, char *name);
35785587Sobrienextern int	attr_parse_file(Attribs *attr, char *file);
35885587Sobrienextern int	attr_parse(Attribs *attr, int fd);
35985587Sobrien
36085587Sobrien/* cdrom.c */
36185587Sobrienextern Boolean	mediaInitCDROM(Device *dev);
36285587Sobrienextern int	mediaGetCDROM(Device *dev, char *file, Boolean probe);
36385587Sobrienextern void	mediaShutdownCDROM(Device *dev);
36485587Sobrien
36585587Sobrien/* command.c */
36685587Sobrienextern void	command_clear(void);
36785587Sobrienextern void	command_sort(void);
36885587Sobrienextern void	command_execute(void);
36985587Sobrienextern void	command_shell_add(char *key, char *fmt, ...);
37085587Sobrienextern void	command_func_add(char *key, commandFunc func, void *data);
37185587Sobrien
37285587Sobrien/* config.c */
37385587Sobrienextern int	configFstab(void);
37485587Sobrienextern void	configSysconfig(char *config);
37585587Sobrienextern void	configResolv(void);
37685587Sobrienextern int	configPackages(dialogMenuItem *self);
37785587Sobrienextern int	configSaver(dialogMenuItem *self);
37885587Sobrienextern int	configSaverTimeout(dialogMenuItem *self);
37985587Sobrienextern int	configNTP(dialogMenuItem *self);
38085587Sobrienextern int	configXFree86(dialogMenuItem *self);
38185587Sobrienextern int	configRouter(dialogMenuItem *self);
38290902Sdesextern int	configSamba(dialogMenuItem *self);
38390902Sdesextern int	configPCNFSD(dialogMenuItem *self);
38485587Sobrienextern int	configNFSServer(dialogMenuItem *self);
38585587Sobrienextern int	configWriteSysconfig(dialogMenuItem *self);
38685587Sobrien#ifdef NETCON_EXTENTIONS
38785587Sobrienextern int	configNovell(dialogMenuItem *self);
38885587Sobrien#endif
38985587Sobrien
39085587Sobrien/* crc.c */
39185587Sobrienextern int	crc(int, unsigned long *, unsigned long *);
39285587Sobrien
39385587Sobrien/* devices.c */
39485587Sobrienextern DMenu	*deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)(dialogMenuItem *d),
39585587Sobrien				  int (*check)(dialogMenuItem *d));
39685587Sobrienextern void	deviceGetAll(void);
39785587Sobrienextern Device	**deviceFind(char *name, DeviceType type);
39885587Sobrienextern int	deviceCount(Device **devs);
39985587Sobrienextern Device	*new_device(char *name);
40085587Sobrienextern Device	*deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled,
40185587Sobrien				Boolean (*init)(Device *mediadev), int (*get)(Device *dev, char *file, Boolean probe),
40285587Sobrien				Boolean (*close)(Device *mediadev, int fd), void (*shutDown)(Device *mediadev),
40385587Sobrien				void *private);
40485587Sobrienextern Boolean	dummyInit(Device *dev);
40585587Sobrienextern int	dummyGet(Device *dev, char *dist, Boolean probe);
40685587Sobrienextern Boolean	dummyClose(Device *dev, int fd);
40785587Sobrienextern void	dummyShutdown(Device *dev);
40885587Sobrien
40985587Sobrien/* disks.c */
41085587Sobrienextern int	diskPartitionEditor(dialogMenuItem *self);
41185587Sobrienextern int	diskPartitionWrite(dialogMenuItem *self);
41285587Sobrienextern void	diskPartition(Device *dev, Disk *d);
41385587Sobrien
41485587Sobrien/* dispatch.c */
41585587Sobrienextern int	dispatchCommand(char *command);
41685587Sobrien
41785587Sobrien/* dist.c */
41885587Sobrienextern int	distReset(dialogMenuItem *self);
41985587Sobrienextern int	distSetCustom(char *str);
42085587Sobrienextern int	distSetDeveloper(dialogMenuItem *self);
42185587Sobrienextern int	distSetXDeveloper(dialogMenuItem *self);
42285587Sobrienextern int	distSetKernDeveloper(dialogMenuItem *self);
42385587Sobrienextern int	distSetUser(dialogMenuItem *self);
42485587Sobrienextern int	distSetXUser(dialogMenuItem *self);
42585587Sobrienextern int	distSetMinimum(dialogMenuItem *self);
42685587Sobrienextern int	distSetEverything(dialogMenuItem *self);
42785587Sobrienextern int	distSetDES(dialogMenuItem *self);
42885587Sobrienextern int	distSetSrc(dialogMenuItem *self);
42985587Sobrienextern int	distSetXF86(dialogMenuItem *self);
43085587Sobrienextern int	distExtractAll(dialogMenuItem *self);
43185587Sobrien
43285587Sobrien/* dmenu.c */
43385587Sobrienextern int	dmenuDisplayFile(dialogMenuItem *tmp);
43485587Sobrienextern int	dmenuSubmenu(dialogMenuItem *tmp);
43585587Sobrienextern int	dmenuSystemCommand(dialogMenuItem *tmp);
43685587Sobrienextern int	dmenuSystemCommandBox(dialogMenuItem *tmp);
43785587Sobrienextern int	dmenuExit(dialogMenuItem *tmp);
43885587Sobrienextern int	dmenuSetVariable(dialogMenuItem *tmp);
43985587Sobrienextern int	dmenuSetKmapVariable(dialogMenuItem *tmp);
44085587Sobrienextern int	dmenuSetVariables(dialogMenuItem *tmp);
44185587Sobrienextern int	dmenuToggleVariable(dialogMenuItem *tmp);
44285587Sobrienextern int	dmenuSetFlag(dialogMenuItem *tmp);
44385587Sobrienextern int	dmenuSetValue(dialogMenuItem *tmp);
44485587Sobrienextern Boolean	dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max, Boolean buttons);
44585587Sobrienextern Boolean	dmenuOpenSimple(DMenu *menu, Boolean buttons);
44685587Sobrienextern int	dmenuVarCheck(dialogMenuItem *item);
44785587Sobrienextern int	dmenuFlagCheck(dialogMenuItem *item);
44885587Sobrienextern int	dmenuRadioCheck(dialogMenuItem *item);
44985587Sobrien
45085587Sobrien/* doc.c */
45185587Sobrienextern int	docBrowser(dialogMenuItem *self);
45285587Sobrienextern int	docShowDocument(dialogMenuItem *self);
45385587Sobrien
45485587Sobrien/* dos.c */
45585587Sobrienextern Boolean	mediaInitDOS(Device *dev);
45685587Sobrienextern int	mediaGetDOS(Device *dev, char *file, Boolean probe);
45785587Sobrienextern void	mediaShutdownDOS(Device *dev);
45885587Sobrien
45985587Sobrien/* floppy.c */
46085587Sobrienextern int	getRootFloppy(void);
46185587Sobrienextern Boolean	mediaInitFloppy(Device *dev);
46285587Sobrienextern int	mediaGetFloppy(Device *dev, char *file, Boolean probe);
46385587Sobrienextern void	mediaShutdownFloppy(Device *dev);
46485587Sobrien
46585587Sobrien/* ftp_strat.c */
46685587Sobrienextern Boolean	mediaCloseFTP(Device *dev, int fd);
46785587Sobrienextern Boolean	mediaInitFTP(Device *dev);
46885587Sobrienextern int	mediaGetFTP(Device *dev, char *file, Boolean probe);
46985587Sobrienextern void	mediaShutdownFTP(Device *dev);
47085587Sobrien
47185587Sobrien/* globals.c */
47285587Sobrienextern void	globalsInit(void);
47385587Sobrien
47485587Sobrien/* index.c */
47585587Sobrienint		index_get(char *fname, PkgNodePtr papa);
47685587Sobrienint		index_read(int fd, PkgNodePtr papa);
47785587Sobrienint		index_menu(PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll);
47885587Sobrienvoid		index_init(PkgNodePtr top, PkgNodePtr plist);
47985587Sobrienvoid		index_node_free(PkgNodePtr top, PkgNodePtr plist);
48085587Sobrienvoid		index_sort(PkgNodePtr top);
48185587Sobrienvoid		index_print(PkgNodePtr top, int level);
48285587Sobrienint		index_extract(Device *dev, PkgNodePtr top, PkgNodePtr plist);
48385587Sobrien
48485587Sobrien/* install.c */
48585587Sobrienextern Boolean	checkLabels(Boolean whinge, Chunk **rdev, Chunk **sdev, Chunk **udev, Chunk **vdev);
48685587Sobrienextern int	installCommit(dialogMenuItem *self);
48785587Sobrienextern int	installCustomCommit(dialogMenuItem *self);
48885587Sobrienextern int	installExpress(dialogMenuItem *self);
48985587Sobrienextern int	installNovice(dialogMenuItem *self);
49085587Sobrienextern int	installFixitCDROM(dialogMenuItem *self);
49185587Sobrienextern int	installFixitFloppy(dialogMenuItem *self);
49285587Sobrienextern int	installFixup(dialogMenuItem *self);
49385587Sobrienextern int	installUpgrade(dialogMenuItem *self);
49485587Sobrienextern int	installFilesystems(dialogMenuItem *self);
49585587Sobrienextern int	installVarDefaults(dialogMenuItem *self);
49685587Sobrienextern Boolean	copySelf(void);
49785587Sobrien
49885587Sobrien/* keymap.c */
49985587Sobrienextern int	loadKeymap(const char *lang);
50085587Sobrien
50185587Sobrien/* label.c */
50285587Sobrienextern int	diskLabelEditor(dialogMenuItem *self);
50385587Sobrienextern int	diskLabelCommit(dialogMenuItem *self);
50485587Sobrien
505107806Sobrien/* lndir.c */
50685587Sobrienextern int	lndir(char *from, char *to);
50785587Sobrien
50885587Sobrien/* makedevs.c (auto-generated) */
50985587Sobrienextern const char	termcap_vt100[];
51085587Sobrienextern const char	termcap_cons25[];
51185587Sobrienextern const char	termcap_cons25_m[];
51285587Sobrienextern const char	termcap_cons25r[];
51385587Sobrienextern const char	termcap_cons25r_m[];
51485587Sobrienextern const char	termcap_cons25l1[];
51585587Sobrienextern const char	termcap_cons25l1_m[];
51685587Sobrienextern const u_char	font_iso_8x16[];
51785587Sobrienextern const u_char	font_cp850_8x16[];
51885587Sobrienextern const u_char	font_cp866_8x16[];
51985587Sobrienextern const u_char	koi8_r2cp866[];
52085587Sobrienextern u_char		default_scrnmap[];
52185587Sobrien
52285587Sobrien/* media.c */
52385587Sobrienextern char	*cpioVerbosity(void);
52485587Sobrienextern int	mediaSetCDROM(dialogMenuItem *self);
52585587Sobrienextern int	mediaSetFloppy(dialogMenuItem *self);
52685587Sobrienextern int	mediaSetDOS(dialogMenuItem *self);
52785587Sobrienextern int	mediaSetTape(dialogMenuItem *self);
52885587Sobrienextern int	mediaSetFTP(dialogMenuItem *self);
52985587Sobrienextern int	mediaSetFTPActive(dialogMenuItem *self);
53085587Sobrienextern int	mediaSetFTPPassive(dialogMenuItem *self);
53185587Sobrienextern int	mediaSetUFS(dialogMenuItem *self);
53285587Sobrienextern int	mediaSetNFS(dialogMenuItem *self);
53385587Sobrienextern int	mediaSetFTPUserPass(dialogMenuItem *self);
53485587Sobrienextern int	mediaSetCPIOVerbosity(dialogMenuItem *self);
535118194Sruextern int	mediaGetType(dialogMenuItem *self);
536118194Sruextern Boolean	mediaExtractDist(char *dir, int fd);
53785587Sobrienextern Boolean	mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic);
53885587Sobrienextern Boolean	mediaExtractDistEnd(int zpid, int cpid);
53985587Sobrienextern Boolean	mediaVerify(void);
54085587Sobrien
54185587Sobrien/* misc.c */
54285587Sobrienextern Boolean	file_readable(char *fname);
54385587Sobrienextern Boolean	file_executable(char *fname);
54485587Sobrienextern Boolean	directory_exists(const char *dirname);
54585587Sobrienextern char	*root_bias(char *path);
54685587Sobrienextern char	*itoa(int value);
54785587Sobrienextern char	*string_concat(char *p1, char *p2);
54885587Sobrienextern char	*string_concat3(char *p1, char *p2, char *p3);
54985587Sobrienextern char	*string_prune(char *str);
55085587Sobrienextern char	*string_skipwhite(char *str);
55185587Sobrienextern char	*string_copy(char *s1, char *s2);
55285587Sobrienextern char	*pathBaseName(const char *path);
55385587Sobrienextern void	safe_free(void *ptr);
55485587Sobrienextern void	*safe_malloc(size_t size);
55585587Sobrienextern void	*safe_realloc(void *orig, size_t size);
556125505Sruextern dialogMenuItem *item_add(dialogMenuItem *list, char *prompt, char *title,
55785587Sobrien				int (*checked)(dialogMenuItem *self),
558125505Sru				int (*fire)(dialogMenuItem *self),
55985587Sobrien				void (*selected)(dialogMenuItem *self, int is_selected),
56085587Sobrien				void *data, int aux, int *curr, int *max);
56185587Sobrienextern void	items_free(dialogMenuItem *list, int *curr, int *max);
56285587Sobrienextern int	Mkdir(char *);
56385587Sobrienextern int	Mount(char *, void *data);
56485587Sobrienextern WINDOW	*savescr(void);
56585587Sobrienextern void	restorescr(WINDOW *w);
56685587Sobrien
56785587Sobrien/* msg.c */
56885587Sobrienextern Boolean	isDebug(void);
56985587Sobrienextern void	msgInfo(char *fmt, ...);
57085587Sobrienextern void	msgYap(char *fmt, ...);
57185587Sobrienextern void	msgWarn(char *fmt, ...);
57285587Sobrienextern void	msgDebug(char *fmt, ...);
57385587Sobrienextern void	msgError(char *fmt, ...);
57485587Sobrienextern void	msgFatal(char *fmt, ...);
57585587Sobrienextern void	msgConfirm(char *fmt, ...);
57685587Sobrienextern void	msgNotify(char *fmt, ...);
57785587Sobrienextern void	msgWeHaveOutput(char *fmt, ...);
57885587Sobrienextern int	msgYesNo(char *fmt, ...);
57985587Sobrienextern char	*msgGetInput(char *buf, char *fmt, ...);
58085587Sobrienextern int	msgSimpleConfirm(char *);
58185587Sobrienextern int	msgSimpleNotify(char *);
582107806Sobrien
58385587Sobrien/* network.c */
58485587Sobrienextern Boolean	mediaInitNetwork(Device *dev);
58585587Sobrienextern void	mediaShutdownNetwork(Device *dev);
58685587Sobrien
58785587Sobrien/* nfs.c */
58885587Sobrienextern Boolean	mediaInitNFS(Device *dev);
589extern int	mediaGetNFS(Device *dev, char *file, Boolean probe);
590extern void	mediaShutdownNFS(Device *dev);
591
592/* options.c */
593extern int	optionsEditor(dialogMenuItem *self);
594
595/* package.c */
596extern int	package_add(char *name);
597extern int	package_extract(Device *dev, char *name, Boolean depended);
598extern Boolean	package_exists(char *name);
599
600/* system.c */
601extern void	systemInitialize(int argc, char **argv);
602extern void	systemShutdown(int status);
603extern int	execExecute(char *cmd, char *name);
604extern int	systemExecute(char *cmd);
605extern int	systemDisplayHelp(char *file);
606extern char	*systemHelpFile(char *file, char *buf);
607extern void	systemChangeFont(const u_char font[]);
608extern void	systemChangeLang(char *lang);
609extern void	systemChangeTerminal(char *color, const u_char c_termcap[], char *mono, const u_char m_termcap[]);
610extern void	systemChangeScreenmap(const u_char newmap[]);
611extern void	systemCreateHoloshell(void);
612extern int	vsystem(char *fmt, ...);
613
614/* tape.c */
615extern char	*mediaTapeBlocksize(void);
616extern Boolean	mediaInitTape(Device *dev);
617extern int	mediaGetTape(Device *dev, char *file, Boolean probe);
618extern void	mediaShutdownTape(Device *dev);
619
620/* tcpip.c */
621extern int	tcpOpenDialog(Device *dev);
622extern int	tcpMenuSelect(dialogMenuItem *self);
623extern int	tcpInstallDevice(char *str);
624extern Boolean	tcpDeviceSelect(void);
625
626/* termcap.c */
627extern int	set_termcap(void);
628
629/* ufs.c */
630extern void	mediaShutdownUFS(Device *dev);
631extern Boolean	mediaInitUFS(Device *dev);
632extern int	mediaGetUFS(Device *dev, char *file, Boolean probe);
633
634/* variable.c */
635extern void	variable_set(char *var);
636extern void	variable_set2(char *name, char *value);
637extern char 	*variable_get(char *var);
638extern void	variable_unset(char *var);
639extern char	*variable_get_value(char *var, char *prompt);
640
641/* wizard.c */
642extern void	slice_wizard(Disk *d);
643
644#endif
645/* _SYSINSTALL_H_INCLUDE */
646