sade.h revision 8281
1169689Skan/* 2169689Skan * The new sysinstall program. 3169689Skan * 4169689Skan * This is probably the last attempt in the `sysinstall' line, the next 5169689Skan * generation being slated to essentially a complete rewrite. 6169689Skan * 7169689Skan * $Id: sysinstall.h,v 1.6 1995/05/04 19:48:17 jkh Exp $ 8169689Skan * 9169689Skan * Copyright (c) 1995 10169689Skan * Jordan Hubbard. All rights reserved. 11169689Skan * 12169689Skan * Redistribution and use in source and binary forms, with or without 13169689Skan * modification, are permitted provided that the following conditions 14169689Skan * are met: 15169689Skan * 1. Redistributions of source code must retain the above copyright 16169689Skan * notice, this list of conditions and the following disclaimer, 17169689Skan * verbatim and that no modifications are made prior to this 18169689Skan * point in the file. 19169689Skan * 2. Redistributions in binary form must reproduce the above copyright 20169689Skan * notice, this list of conditions and the following disclaimer in the 21169689Skan * documentation and/or other materials provided with the distribution. 22169689Skan * 3. All advertising materials mentioning features or use of this software 23169689Skan * must display the following acknowledgement: 24169689Skan * This product includes software developed by Jordan Hubbard 25169689Skan * for the FreeBSD Project. 26169689Skan * 4. The name of Jordan Hubbard or the FreeBSD project may not be used to 27169689Skan * endorse or promote products derived from this software without specific 28169689Skan * prior written permission. 29169689Skan * 30169689Skan * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND 31169689Skan * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 32169689Skan * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 33169689Skan * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE 34169689Skan * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 35169689Skan * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 36169689Skan * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION) 37169689Skan * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 38169689Skan * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 39169689Skan * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 40169689Skan * SUCH DAMAGE. 41169689Skan * 42169689Skan */ 43169689Skan 44169689Skan#ifndef _SYSINSTALL_H_INCLUDE 45169689Skan#define _SYSINSTALL_H_INCLUDE 46169689Skan 47169689Skan#include <stdio.h> 48169689Skan#include <stdlib.h> 49169689Skan#include <string.h> 50169689Skan#include <unistd.h> 51169689Skan#include <dialog.h> 52169689Skan#include "libdisk.h" 53169689Skan 54169689Skan/*** Defines ***/ 55169689Skan 56169689Skan/* Bitfields for menu options */ 57169689Skan#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */ 58169689Skan#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ 59169689Skan#define DMENU_MULTIPLE_TYPE 0x4 /* Multiple choice menu */ 60169689Skan#define DMENU_SELECTION_RETURNS 0x8 /* Select item then exit */ 61169689Skan 62169689Skan/* Bitfields for distributions - hope we never have more than 32! :-) */ 63169689Skan#define DIST_BIN 0x1 64169689Skan#define DIST_GAMES 0x2 65169689Skan#define DIST_MANPAGES 0x4 66169689Skan#define DIST_PROFLIBS 0x8 67169689Skan#define DIST_DICT 0x10 68169689Skan#define DIST_SRC 0x20 69169689Skan#define DIST_DES 0x40 70169689Skan#define DIST_COMPAT1X 0x80 71169689Skan#define DIST_XFREE86 0x100 72169689Skan#define DIST_ALL 0xFFF 73169689Skan 74169689Skan/* Canned distribution sets */ 75169689Skan#define _DIST_DEVELOPER \ 76169689Skan (DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_PROFLIBS | DIST_SRC) 77169689Skan 78169689Skan#define _DIST_XDEVELOPER \ 79169689Skan (_DIST_DEVELOPER | DIST_XFREE86) 80169689Skan 81169689Skan#define _DIST_USER \ 82169689Skan (DIST_BIN | DIST_MANPAGES | DIST_DICT | DIST_COMPAT1X) 83169689Skan 84169689Skan#define _DIST_XUSER \ 85169689Skan (_DIST_USER | DIST_XFREE86) 86169689Skan 87169689Skan 88169689Skan/* Subtypes for SRC distribution */ 89169689Skan#define DIST_SRC_BASE 0x1 90169689Skan#define DIST_SRC_GNU 0x2 91169689Skan#define DIST_SRC_ETC 0x4 92169689Skan#define DIST_SRC_GAMES 0x8 93169689Skan#define DIST_SRC_INCLUDE 0x10 94169689Skan#define DIST_SRC_LIB 0x20 95169689Skan#define DIST_SRC_LIBEXEC 0x40 96169689Skan#define DIST_SRC_LKM 0x80 97169689Skan#define DIST_SRC_RELEASE 0x100 98169689Skan#define DIST_SRC_SBIN 0x200 99169689Skan#define DIST_SRC_SHARE 0x400 100169689Skan#define DIST_SRC_SYS 0x800 101169689Skan#define DIST_SRC_UBIN 0x1000 102169689Skan#define DIST_SRC_USBIN 0x2000 103169689Skan#define DIST_SRC_ALL 0xFFFF 104169689Skan 105169689Skan/* variable limits */ 106169689Skan#define VAR_NAME_MAX 128 107169689Skan#define VAR_VALUE_MAX 1024 108169689Skan 109169689Skan/* device limits */ 110169689Skan#define DEV_NAME_MAX 128 111169689Skan 112169689Skan 113169689Skan/*** Types ***/ 114169689Skantypedef unsigned int Boolean; 115169689Skan 116169689Skantypedef enum { 117169689Skan DMENU_SHELL_ESCAPE, /* Fork a shell */ 118169689Skan DMENU_DISPLAY_FILE, /* Display a file's contents */ 119169689Skan DMENU_SUBMENU, /* Recurse into another menu */ 120169689Skan DMENU_SYSTEM_COMMAND, /* Run shell commmand */ 121169689Skan DMENU_SYSTEM_COMMAND_BOX, /* Same as above, but in prgbox */ 122169689Skan DMENU_SET_VARIABLE, /* Set an environment/system var */ 123169689Skan DMENU_CALL, /* Call back a C function */ 124169689Skan DMENU_CANCEL, /* Cancel out of this menu */ 125169689Skan DMENU_NOP, /* Do nothing special for item */ 126169689Skan} DMenuItemType; 127169689Skan 128169689Skantypedef struct _dmenuItem { 129169689Skan char *title; /* Our title */ 130169689Skan char *prompt; /* Our prompt */ 131169689Skan DMenuItemType type; /* What type of item we are */ 132169689Skan void *ptr; /* Generic data ptr */ 133169689Skan Boolean disabled; /* Are we temporarily disabled? */ 134169689Skan} DMenuItem; 135169689Skan 136169689Skantypedef struct _dmenu { 137169689Skan unsigned int options; /* What sort of menu we are */ 138169689Skan char *title; /* Our title */ 139169689Skan char *prompt; /* Our prompt */ 140169689Skan char *helpline; /* Line of help at bottom */ 141169689Skan char *helpfile; /* Help file for "F1" */ 142169689Skan DMenuItem items[0]; /* Array of menu items */ 143169689Skan} DMenu; 144169689Skan 145169689Skan/* A sysconfig variable */ 146169689Skantypedef struct _variable { 147169689Skan struct _variable *next; 148169689Skan char name[VAR_NAME_MAX]; 149169689Skan char value[VAR_VALUE_MAX]; 150169689Skan} Variable; 151169689Skan 152169689Skantypedef enum { 153169689Skan DEVICE_TYPE_ANY, 154169689Skan DEVICE_TYPE_DISK, 155169689Skan DEVICE_TYPE_FLOPPY, 156169689Skan DEVICE_TYPE_NETWORK, 157169689Skan DEVICE_TYPE_CDROM, 158169689Skan DEVICE_TYPE_TAPE, 159169689Skan DEVICE_TYPE_SERIAL, 160169689Skan DEVICE_TYPE_PARALLEL, 161169689Skan} DeviceType; 162169689Skan 163169689Skan/* A "device" from sysinstall's point of view */ 164169689Skantypedef struct _device { 165169689Skan char name[DEV_NAME_MAX]; 166169689Skan DeviceType type; 167169689Skan} Device; 168169689Skan 169169689Skan 170169689Skan/*** Externs ***/ 171169689Skanextern int CpioFD; /* The file descriptor for our CPIO floppy */ 172169689Skanextern int DebugFD; /* Where diagnostic output goes */ 173169689Skanextern Boolean OnCDROM; /* Are we running off of a CDROM? */ 174169689Skanextern Boolean OnSerial; /* Are we on a serial console? */ 175169689Skanextern Boolean SystemWasInstalled; /* Did we install it? */ 176169689Skanextern Boolean DialogActive; /* Is the dialog() stuff up? */ 177169689Skanextern Variable *VarHead; /* The head of the variable chain */ 178169689Skanextern unsigned int Dists; /* Which distributions we want */ 179169689Skanextern unsigned int SrcDists; /* Which src distributions we want */ 180169689Skan 181169689Skan 182169689Skan/*** Prototypes ***/ 183169689Skan 184169689Skan/* globals.c */ 185169689Skanextern void globalsInit(void); 186169689Skan 187169689Skan/* install.c */ 188169689Skanextern int installCustom(char *str); 189169689Skanextern int installExpress(char *str); 190169689Skanextern int installMaint(char *str); 191169689Skan 192169689Skan/* dist.c */ 193169689Skanextern int distSetDeveloper(char *str); 194169689Skanextern int distSetXDeveloper(char *str); 195169689Skanextern int distSetUser(char *str); 196169689Skanextern int distSetXUser(char *str); 197169689Skanextern int distSetMinimum(char *str); 198169689Skanextern int distSetEverything(char *str); 199169689Skan 200169689Skan/* system.c */ 201169689Skanextern void systemInitialize(int argc, char **argv); 202169689Skanextern void systemShutdown(void); 203169689Skanextern void systemWelcome(void); 204169689Skanextern int systemExecute(char *cmd); 205169689Skanextern int systemShellEscape(void); 206169689Skanextern int systemDisplayFile(char *file); 207169689Skanextern char *systemHelpFile(char *file, char *buf); 208169689Skanextern void systemChangeFont(char *font); 209169689Skanextern void systemChangeLang(char *lang); 210169689Skanextern void systemChangeTerminal(char *color, char *mono); 211169689Skanextern void systemChangeScreenmap(char *newmap); 212169689Skan 213169689Skan/* disks.c */ 214169689Skanextern void partition_disk(struct disk *disks); 215169689Skanextern int write_disks(struct disk **disks); 216169689Skanextern void make_filesystems(struct disk **disks); 217169689Skanextern void cpio_extract(struct disk **disks); 218169689Skanextern void extract_dists(struct disk **disks); 219169689Skanextern void do_final_setup(struct disk **disks); 220169689Skan 221169689Skan/* dmenu.c */ 222169689Skanextern void dmenuOpen(DMenu *menu, int *choice, int *scroll, 223169689Skan int *curr, int *max); 224169689Skan 225169689Skan/* misc.c */ 226169689Skanextern Boolean file_readable(char *fname); 227169689Skanextern Boolean file_executable(char *fname); 228169689Skanextern char *string_concat(char *p1, char *p2); 229169689Skanextern char *string_prune(char *str); 230169689Skanextern char *string_skipwhite(char *str); 231169689Skanextern void safe_free(void *ptr); 232169689Skanextern void *safe_malloc(size_t size); 233169689Skanextern char **item_add(char **list, char *item, int *curr, int *max); 234169689Skanextern char **item_add_pair(char **list, char *item1, char *item2, 235169689Skan int *curr, int *max); 236169689Skanextern void items_free(char **list, int *curr, int *max); 237169689Skan 238169689Skan/* termcap.c */ 239169689Skanextern int set_termcap(void); 240169689Skan 241169689Skan/* msg.c */ 242169689Skanextern void msgInfo(char *fmt, ...); 243169689Skanextern void msgYap(char *fmt, ...); 244169689Skanextern void msgWarn(char *fmt, ...); 245169689Skanextern void msgError(char *fmt, ...); 246169689Skanextern void msgFatal(char *fmt, ...); 247169689Skanextern void msgConfirm(char *fmt, ...); 248169689Skanextern int msgYesNo(char *fmt, ...); 249169689Skanextern char *msgGetInput(char *buf, char *fmt, ...); 250169689Skan 251169689Skan/* media.c */ 252169689Skanextern int mediaSetCDROM(char *str); 253169689Skanextern int mediaSetFloppy(char *str); 254169689Skanextern int mediaSetDOS(char *str); 255169689Skanextern int mediaSetTape(char *str); 256169689Skanextern int mediaSetFTP(char *str); 257169689Skanextern int mediaSetFS(char *str); 258169689Skan 259169689Skan/* devices.c */ 260169689Skanextern Device *device_get_all(DeviceType type, int *ndevs); 261169689Skanextern struct disk *device_slice_disk(struct disk *d); 262169689Skanextern DMenu *device_create_disk_menu(DMenu *menu, Device **rdevs, 263169689Skan int (*func)()); 264169689Skan 265169689Skan/* variables.c */ 266169689Skanextern void variable_set(char *var); 267169689Skanextern void variable_set2(char *name, char *value); 268169689Skan 269169689Skan/* lang.c */ 270169689Skanextern void lang_set_Danish(char *str); 271169689Skanextern void lang_set_Dutch(char *str); 272169689Skanextern void lang_set_English(char *str); 273169689Skanextern void lang_set_French(char *str); 274169689Skanextern void lang_set_German(char *str); 275169689Skanextern void lang_set_Italian(char *str); 276169689Skanextern void lang_set_Japanese(char *str); 277169689Skanextern void lang_set_Russian(char *str); 278169689Skanextern void lang_set_Spanish(char *str); 279169689Skanextern void lang_set_Swedish(char *str); 280169689Skan 281169689Skan/* wizard.c */ 282169689Skanextern void slice_wizard(struct disk *d); 283169689Skan 284169689Skan#endif 285169689Skan/* _SYSINSTALL_H_INCLUDE */ 286169689Skan