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