sysinstall.h revision 8336
1139743Simp/*
239213Sgibbs * The new sysinstall program.
339213Sgibbs *
439213Sgibbs * This is probably the last attempt in the `sysinstall' line, the next
539213Sgibbs * generation being slated to essentially a complete rewrite.
639213Sgibbs *
739213Sgibbs * $Id: sysinstall.h,v 1.10 1995/05/07 02:04:29 jkh Exp $
839213Sgibbs *
939213Sgibbs * Copyright (c) 1995
1039213Sgibbs *	Jordan Hubbard.  All rights reserved.
1139213Sgibbs *
1239213Sgibbs * Redistribution and use in source and binary forms, with or without
1339213Sgibbs * modification, are permitted provided that the following conditions
1439213Sgibbs * are met:
1539213Sgibbs * 1. Redistributions of source code must retain the above copyright
1639213Sgibbs *    notice, this list of conditions and the following disclaimer,
1739213Sgibbs *    verbatim and that no modifications are made prior to this
1839213Sgibbs *    point in the file.
1939213Sgibbs * 2. Redistributions in binary form must reproduce the above copyright
2039213Sgibbs *    notice, this list of conditions and the following disclaimer in the
2139213Sgibbs *    documentation and/or other materials provided with the distribution.
2239213Sgibbs * 3. All advertising materials mentioning features or use of this software
2339213Sgibbs *    must display the following acknowledgement:
2439213Sgibbs *	This product includes software developed by Jordan Hubbard
2539213Sgibbs *	for the FreeBSD Project.
2639213Sgibbs * 4. The name of Jordan Hubbard or the FreeBSD project may not be used to
2739213Sgibbs *    endorse or promote products derived from this software without specific
2839213Sgibbs *    prior written permission.
29116162Sobrien *
30116162Sobrien * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND
31116162Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
3239213Sgibbs * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
3339213Sgibbs * ARE DISCLAIMED.  IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE
3439213Sgibbs * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3539213Sgibbs * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3639213Sgibbs * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION)
3760041Sphk * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3839213Sgibbs * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3939213Sgibbs * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
4039213Sgibbs * SUCH DAMAGE.
4150073Sken *
4239213Sgibbs */
4339213Sgibbs
4439213Sgibbs#ifndef _SYSINSTALL_H_INCLUDE
4539213Sgibbs#define _SYSINSTALL_H_INCLUDE
4639213Sgibbs
4739213Sgibbs#include <stdio.h>
4839213Sgibbs#include <stdlib.h>
4939213Sgibbs#include <string.h>
5039213Sgibbs#include <unistd.h>
5139213Sgibbs#include <dialog.h>
5239213Sgibbs#include "libdisk.h"
5350073Sken
5450073Sken/*** Defines ***/
5539213Sgibbs
5639213Sgibbs/* Bitfields for menu options */
5739213Sgibbs#define DMENU_NORMAL_TYPE	0x1	/* Normal dialog menu		*/
5839213Sgibbs#define DMENU_RADIO_TYPE	0x2	/* Radio dialog menu		*/
5939213Sgibbs#define DMENU_MULTIPLE_TYPE	0x4	/* Multiple choice menu		*/
6039213Sgibbs#define DMENU_SELECTION_RETURNS	0x8	/* Select item then exit	*/
6139213Sgibbs
6239213Sgibbs/* Bitfields for distributions - hope we never have more than 32! :-) */
6339213Sgibbs#define DIST_BIN		0x1
6439213Sgibbs#define DIST_GAMES		0x2
6539213Sgibbs#define DIST_MANPAGES		0x4
6639213Sgibbs#define DIST_PROFLIBS		0x8
6739213Sgibbs#define DIST_DICT		0x10
6839213Sgibbs#define DIST_SRC		0x20
6939213Sgibbs#define DIST_DES		0x40
7039213Sgibbs#define DIST_COMPAT1X		0x80
7139213Sgibbs#define DIST_XFREE86		0x100
7239213Sgibbs#define DIST_ALL		0xFFF
7339213Sgibbs
7439213Sgibbs/* Canned distribution sets */
7539213Sgibbs#define _DIST_DEVELOPER \
7639213Sgibbs	(DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_PROFLIBS | DIST_SRC)
7739213Sgibbs
7839213Sgibbs#define _DIST_XDEVELOPER \
7959249Sphk	(_DIST_DEVELOPER | DIST_XFREE86)
80112006Sphk
8160938Sjake#define _DIST_USER \
8239213Sgibbs	(DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_COMPAT1X)
8339213Sgibbs
8439213Sgibbs#define _DIST_XUSER \
8550073Sken	(_DIST_USER | DIST_XFREE86)
86130585Sphk
8739213Sgibbs
8839213Sgibbs/* Subtypes for SRC distribution */
8939213Sgibbs#define DIST_SRC_BASE		0x1
9039213Sgibbs#define DIST_SRC_GNU		0x2
9139213Sgibbs#define DIST_SRC_ETC		0x4
9239213Sgibbs#define DIST_SRC_GAMES		0x8
9339213Sgibbs#define DIST_SRC_INCLUDE	0x10
9439213Sgibbs#define DIST_SRC_LIB		0x20
9539213Sgibbs#define DIST_SRC_LIBEXEC	0x40
9640603Sken#define DIST_SRC_LKM		0x80
9739213Sgibbs#define DIST_SRC_RELEASE	0x100
9839213Sgibbs#define DIST_SRC_SBIN		0x200
9939213Sgibbs#define DIST_SRC_SHARE		0x400
10039213Sgibbs#define DIST_SRC_SYS		0x800
10150073Sken#define DIST_SRC_UBIN		0x1000
10239213Sgibbs#define DIST_SRC_USBIN		0x2000
10339213Sgibbs#define DIST_SRC_ALL		0xFFFF
10439213Sgibbs
10539213Sgibbs/* variable limits */
10639213Sgibbs#define VAR_NAME_MAX		128
10739213Sgibbs#define VAR_VALUE_MAX		1024
10839213Sgibbs
10939213Sgibbs/* device limits */
11039213Sgibbs#define DEV_NAME_MAX		128
11139213Sgibbs
11239213Sgibbs/* handy */
11339213Sgibbs#define ONE_MEG			1048576
11439213Sgibbs
11539213Sgibbs
11639213Sgibbs/*** Types ***/
11772119Spetertypedef unsigned int Boolean;
11839213Sgibbs
11939213Sgibbstypedef enum {
12047625Sphk    DMENU_SHELL_ESCAPE,			/* Fork a shell			*/
121126080Sphk    DMENU_DISPLAY_FILE,			/* Display a file's contents	*/
122168752Sscottl    DMENU_SUBMENU,			/* Recurse into another menu	*/
123111815Sphk    DMENU_SYSTEM_COMMAND,		/* Run shell commmand		*/
124111815Sphk    DMENU_SYSTEM_COMMAND_BOX,		/* Same as above, but in prgbox	*/
125111815Sphk    DMENU_SET_VARIABLE,			/* Set an environment/system var */
126111815Sphk    DMENU_CALL,				/* Call back a C function	*/
127111815Sphk    DMENU_CANCEL,			/* Cancel out of this menu	*/
128111815Sphk    DMENU_NOP,				/* Do nothing special for item	*/
129111815Sphk} DMenuItemType;
13039213Sgibbs
13139213Sgibbstypedef struct _dmenuItem {
13250073Sken    char *title;			/* Our title			*/
13350073Sken    char *prompt;			/* Our prompt			*/
13450073Sken    DMenuItemType type;			/* What type of item we are	*/
13550073Sken    void *ptr;				/* Generic data ptr		*/
13639213Sgibbs    Boolean disabled;			/* Are we temporarily disabled?	*/
137130585Sphk} DMenuItem;
13839213Sgibbs
13939213Sgibbstypedef struct _dmenu {
14039213Sgibbs    unsigned int options;		/* What sort of menu we are	*/
141168752Sscottl    char *title;			/* Our title			*/
14239213Sgibbs    char *prompt;			/* Our prompt			*/
143101940Snjl    char *helpline;			/* Line of help at bottom	*/
144168752Sscottl    char *helpfile;			/* Help file for "F1"		*/
14539213Sgibbs    DMenuItem items[0];			/* Array of menu items		*/
14639213Sgibbs} DMenu;
14739213Sgibbs
14839213Sgibbs/* A sysconfig variable */
149168752Sscottltypedef struct _variable {
15040603Sken    struct _variable *next;
151168752Sscottl    char name[VAR_NAME_MAX];
152168752Sscottl    char value[VAR_VALUE_MAX];
15340603Sken} Variable;
15440603Sken
15540603Skentypedef enum {
156168752Sscottl    DEVICE_TYPE_ANY,
157168752Sscottl    DEVICE_TYPE_DISK,
158168752Sscottl    DEVICE_TYPE_FLOPPY,
159168752Sscottl    DEVICE_TYPE_NETWORK,
160168752Sscottl    DEVICE_TYPE_CDROM,
16141297Sken    DEVICE_TYPE_TAPE,
16239213Sgibbs    DEVICE_TYPE_SERIAL,
163168752Sscottl    DEVICE_TYPE_PARALLEL,
164168752Sscottl} DeviceType;
16541297Sken
16639213Sgibbs/* A "device" from sysinstall's point of view */
16739213Sgibbstypedef struct _device {
16839213Sgibbs    char name[DEV_NAME_MAX];
16939213Sgibbs    DeviceType type;
17039213Sgibbs} Device;
171130585Sphk
17239213Sgibbs/* Some internal representations of partitions */
17339213Sgibbstypedef enum {
17439213Sgibbs    PART_NONE,
17539213Sgibbs    PART_SLICE,
176101940Snjl    PART_SWAP,
17739213Sgibbs    PART_FILESYSTEM
17839213Sgibbs} PartType;
17939213Sgibbs
18039213Sgibbs/* The longest newfs command we'll hand to system() */
18139213Sgibbs#define NEWFS_CMD_MAX	256
182168752Sscottl
18339213Sgibbstypedef struct _part_info {
18439213Sgibbs    Boolean newfs;
18539213Sgibbs    char mountpoint[FILENAME_MAX];
18639213Sgibbs    char newfs_cmd[NEWFS_CMD_MAX];
18739213Sgibbs} PartInfo;
18839213Sgibbs
18939213Sgibbs
19039213Sgibbs/*** Externs ***/
19139213Sgibbsextern int		CpioFD;	  /* The file descriptor for our CPIO floppy */
19239213Sgibbsextern int		DebugFD;  /* Where diagnostic output goes	*/
19339213Sgibbsextern Boolean		OnCDROM;  /* Are we running off of a CDROM?	*/
19439213Sgibbsextern Boolean		OnSerial; /* Are we on a serial console?	*/
19539213Sgibbsextern Boolean		SystemWasInstalled; /* Did we install it?       */
19659249Sphkextern Boolean		DialogActive; /* Is the dialog() stuff up?	*/
19739213Sgibbsextern Boolean		ColorDisplay; /* Are we on a color display?     */
19839213Sgibbsextern Boolean		OnVTY;    /* On a syscons VTY?			*/
19939213Sgibbsextern Variable		*VarHead; /* The head of the variable chain	*/
20039213Sgibbsextern unsigned int	Dists;    /* Which distributions we want        */
201101940Snjlextern unsigned int	SrcDists; /* Which src distributions we want    */
20276362Sphk
20339213Sgibbs
20476362Sphk/*** Prototypes ***/
20576362Sphk
20639213Sgibbs/* globals.c */
207168752Sscottlextern void	globalsInit(void);
20839213Sgibbs
20939213Sgibbs/* install.c */
21039213Sgibbsextern int	installCustom(char *str);
21139213Sgibbsextern int	installExpress(char *str);
21239213Sgibbsextern int	installMaint(char *str);
21339213Sgibbs
214168752Sscottl/* dist.c */
21576362Sphkextern int	distSetDeveloper(char *str);
21676362Sphkextern int	distSetXDeveloper(char *str);
21739213Sgibbsextern int	distSetUser(char *str);
21839213Sgibbsextern int	distSetXUser(char *str);
21939213Sgibbsextern int	distSetMinimum(char *str);
22039213Sgibbsextern int	distSetEverything(char *str);
22139213Sgibbs
22259249Sphk/* system.c */
22339213Sgibbsextern void	systemInitialize(int argc, char **argv);
22439213Sgibbsextern void	systemShutdown(void);
22539213Sgibbsextern void	systemWelcome(void);
22639213Sgibbsextern int	systemExecute(char *cmd);
22739213Sgibbsextern int	systemShellEscape(void);
228168752Sscottlextern int	systemDisplayFile(char *file);
22939213Sgibbsextern char	*systemHelpFile(char *file, char *buf);
23039213Sgibbsextern void	systemChangeFont(const u_char font[]);
23139213Sgibbsextern void	systemChangeLang(char *lang);
23239213Sgibbsextern void	systemChangeTerminal(char *color, const u_char c_termcap[],
23339213Sgibbs				     char *mono, const u_char m_termcap[]);
23439213Sgibbsextern void	systemChangeScreenmap(const u_char newmap[]);
23539213Sgibbsextern int	vsystem(char *fmt, ...);
23639213Sgibbs
23739213Sgibbs/* disks.c */
23839213Sgibbsextern void	partition_disks(struct disk **disks);
23939213Sgibbsextern int	write_disks(struct disk **disks);
24039213Sgibbsextern void	make_filesystems(struct disk **disks);
24139213Sgibbsextern void	cpio_extract(struct disk **disks);
242169605Sscottlextern void	extract_dists(struct disk **disks);
24339213Sgibbsextern void	install_configuration_files(struct disk **disks);
24439213Sgibbsextern void	do_final_setup(struct disk **disks);
24539213Sgibbs
24639213Sgibbs/* dmenu.c */
24739213Sgibbsextern void	dmenuOpen(DMenu *menu, int *choice, int *scroll,
24839213Sgibbs			  int *curr, int *max);
24939213Sgibbs
25039213Sgibbs/* misc.c */
25139213Sgibbsextern Boolean	file_readable(char *fname);
25239213Sgibbsextern Boolean	file_executable(char *fname);
25339213Sgibbsextern char	*string_concat(char *p1, char *p2);
25439213Sgibbsextern char	*string_prune(char *str);
25539213Sgibbsextern char	*string_skipwhite(char *str);
25639213Sgibbsextern void	safe_free(void *ptr);
25739213Sgibbsextern void	*safe_malloc(size_t size);
25839213Sgibbsextern char	**item_add(char **list, char *item, int *curr, int *max);
25939213Sgibbsextern char	**item_add_pair(char **list, char *item1, char *item2,
26039213Sgibbs				int *curr, int *max);
26139213Sgibbsextern void	items_free(char **list, int *curr, int *max);
26239213Sgibbs
26339213Sgibbs/* termcap.c */
26439213Sgibbsextern int	set_termcap(void);
26539213Sgibbs
26639213Sgibbs/* msg.c */
26739213Sgibbsextern void	msgInfo(char *fmt, ...);
26839213Sgibbsextern void	msgYap(char *fmt, ...);
26939213Sgibbsextern void	msgWarn(char *fmt, ...);
27039213Sgibbsextern void	msgError(char *fmt, ...);
27139213Sgibbsextern void	msgFatal(char *fmt, ...);
27239213Sgibbsextern void	msgConfirm(char *fmt, ...);
27339213Sgibbsextern void	msgNotify(char *fmt, ...);
27439213Sgibbsextern int	msgYesNo(char *fmt, ...);
27539213Sgibbsextern char	*msgGetInput(char *buf, char *fmt, ...);
27639213Sgibbs
27739213Sgibbs/* media.c */
27859249Sphkextern int	mediaSetCDROM(char *str);
27939213Sgibbsextern int	mediaSetFloppy(char *str);
28050073Skenextern int	mediaSetDOS(char *str);
28150073Skenextern int	mediaSetTape(char *str);
28239213Sgibbsextern int	mediaSetFTP(char *str);
28339213Sgibbsextern int	mediaSetFS(char *str);
284169605Sscottl
285112006Sphk/* devices.c */
28639213Sgibbsextern Device	*device_get_all(DeviceType type, int *ndevs);
28739213Sgibbsextern struct disk *device_slice_disk(struct disk *d);
28856148Smjacobextern DMenu	*device_create_disk_menu(DMenu *menu, Device **rdevs,
28943819Sken					 int (*func)());
29039213Sgibbs
29153257Sken/* variables.c */
29253257Skenextern void	variable_set(char *var);
29353257Skenextern void	variable_set2(char *name, char *value);
294168872Sscottl
295101940Snjl/* lang.c */
296101940Snjlextern void	lang_set_Danish(char *str);
29739213Sgibbsextern void	lang_set_Dutch(char *str);
29839213Sgibbsextern void	lang_set_English(char *str);
29939213Sgibbsextern void	lang_set_French(char *str);
30039213Sgibbsextern void	lang_set_German(char *str);
30139213Sgibbsextern void	lang_set_Italian(char *str);
30239213Sgibbsextern void	lang_set_Japanese(char *str);
30339213Sgibbsextern void	lang_set_Norwegian(char *str);
30439213Sgibbsextern void	lang_set_Russian(char *str);
305169605Sscottlextern void	lang_set_Spanish(char *str);
306169605Sscottlextern void	lang_set_Swedish(char *str);
30739213Sgibbs
30839213Sgibbs/* makedevs.c (auto-generated) */
30939213Sgibbsextern const char termcap_vt100[];
31039213Sgibbsextern const char termcap_cons25[];
31139213Sgibbsextern const char termcap_cons25_m[];
31239213Sgibbsextern const char termcap_cons25r[];
31339213Sgibbsextern const char termcap_cons25r_m[];
31439213Sgibbsextern const char termcap_cons25l1[];
31540603Skenextern const char termcap_cons25l1_m[];
31640603Skenextern const u_char font_iso_8x14[];
31740603Skenextern const u_char font_cp850_8x14[];
31840603Skenextern const u_char font_koi8_r_8x14[];
31940603Skenextern const u_char koi8_r2cp866[];
32040603Sken
32140603Sken/* wizard.c */
32240603Skenextern void	slice_wizard(struct disk *d);
32340603Sken
324169605Sscottl#endif
32540603Sken/* _SYSINSTALL_H_INCLUDE */
32640603Sken