sade.h revision 67862
1261991Sdim/* 2218885Sdim * The new sysinstall program. 3218885Sdim * 4218885Sdim * This is probably the last attempt in the `sysinstall' line, the next 5218885Sdim * generation being slated to essentially a complete rewrite. 6218885Sdim * 7218885Sdim * $FreeBSD: head/usr.sbin/sade/sade.h 67862 2000-10-29 09:57:50Z eivind $ 8218885Sdim * 9218885Sdim * Copyright (c) 1995 10261991Sdim * Jordan Hubbard. All rights reserved. 11218885Sdim * 12218885Sdim * Redistribution and use in source and binary forms, with or without 13218885Sdim * modification, are permitted provided that the following conditions 14218885Sdim * are met: 15261991Sdim * 1. Redistributions of source code must retain the above copyright 16261991Sdim * notice, this list of conditions and the following disclaimer, 17218885Sdim * verbatim and that no modifications are made prior to this 18218885Sdim * point in the file. 19261991Sdim * 2. Redistributions in binary form must reproduce the above copyright 20276479Sdim * notice, this list of conditions and the following disclaimer in the 21261991Sdim * documentation and/or other materials provided with the distribution. 22261991Sdim * 23261991Sdim * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND 24261991Sdim * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25218885Sdim * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26276479Sdim * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE 27276479Sdim * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28276479Sdim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29276479Sdim * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION) 30276479Sdim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31261991Sdim * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32218885Sdim * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33261991Sdim * SUCH DAMAGE. 34261991Sdim * 35261991Sdim */ 36261991Sdim 37261991Sdim#ifndef _SYSINSTALL_H_INCLUDE 38218885Sdim#define _SYSINSTALL_H_INCLUDE 39261991Sdim 40261991Sdim#include <sys/types.h> 41296417Sdim#include <sys/wait.h> 42261991Sdim#include <errno.h> 43218885Sdim#include <setjmp.h> 44261991Sdim#include <stdio.h> 45218885Sdim#include <stdlib.h> 46261991Sdim#include <string.h> 47261991Sdim#include <unistd.h> 48280031Sdim#include <dialog.h> 49218885Sdim#include "ui_objects.h" 50276479Sdim#include "dir.h" 51276479Sdim#include "colors.h" 52276479Sdim#include "libdisk.h" 53276479Sdim#include "dist.h" 54276479Sdim 55276479Sdim/*** Defines ***/ 56276479Sdim 57218885Sdim/* device limits */ 58218885Sdim#define DEV_NAME_MAX 64 /* The maximum length of a device name */ 59218885Sdim#define DEV_MAX 100 /* The maximum number of devices we'll deal with */ 60261991Sdim#define INTERFACE_MAX 50 /* Maximum number of network interfaces we'll deal with */ 61261991Sdim#define IO_ERROR -2 /* Status code for I/O error rather than normal EOF */ 62280031Sdim 63280031Sdim/* Number of seconds to wait for data to come off even the slowest media */ 64280031Sdim#define MEDIA_TIMEOUT 300 65280031Sdim 66280031Sdim/* 67280031Sdim * I make some pretty gross assumptions about having a max of 50 chunks 68280031Sdim * total - 8 slices and 42 partitions. I can't easily display many more 69280031Sdim * than that on the screen at once! 70280031Sdim * 71280031Sdim * For 2.1 I'll revisit this and try to make it more dynamic, but since 72280031Sdim * this will catch 99.99% of all possible cases, I'm not too worried. 73280031Sdim */ 74280031Sdim#define MAX_CHUNKS 40 75280031Sdim 76280031Sdim/* Internal environment variable names */ 77280031Sdim#define DISK_PARTITIONED "_diskPartitioned" 78280031Sdim#define DISK_LABELLED "_diskLabelled" 79280031Sdim#define DISK_SELECTED "_diskSelected" 80280031Sdim#define SYSTEM_STATE "_systemState" 81280031Sdim#define RUNNING_ON_ROOT "_runningOnRoot" 82280031Sdim#define TCP_CONFIGURED "_tcpConfigured" 83288943Sdim 84280031Sdim/* Ones that can be tweaked from config files */ 85280031Sdim#define VAR_BLANKTIME "blanktime" 86280031Sdim#define VAR_BOOTMGR "bootManager" 87280031Sdim#define VAR_BROWSER_BINARY "browserBinary" 88280031Sdim#define VAR_BROWSER_PACKAGE "browserPackage" 89280031Sdim#define VAR_CPIO_VERBOSITY "cpioVerbose" 90280031Sdim#define VAR_DEBUG "debug" 91280031Sdim#define VAR_DESKSTYLE "_deskStyle" 92280031Sdim#define VAR_DISK "disk" 93280031Sdim#define VAR_DISTS "dists" 94280031Sdim#define VAR_DIST_MAIN "distMain" 95280031Sdim#define VAR_DIST_CRYPTO "distCRYPTO" 96280031Sdim#define VAR_DIST_SRC "distSRC" 97280031Sdim#define VAR_DIST_X11 "distX11" 98280031Sdim#define VAR_DIST_XSERVER "distXserver" 99280031Sdim#define VAR_DIST_XFONTS "distXfonts" 100280031Sdim#define VAR_DEDICATE_DISK "dedicateDisk" 101280031Sdim#define VAR_DOMAINNAME "domainname" 102280031Sdim#define VAR_EDITOR "editor" 103280031Sdim#define VAR_EXTRAS "ifconfig_" 104280031Sdim#define VAR_COMMAND "command" 105280031Sdim#define VAR_CONFIG_FILE "configFile" 106280031Sdim#define VAR_FIXIT_TTY "fixitTty" 107280031Sdim#define VAR_FTP_DIR "ftpDirectory" 108280031Sdim#define VAR_FTP_PASS "ftpPass" 109280031Sdim#define VAR_FTP_PATH "_ftpPath" 110280031Sdim#define VAR_FTP_PORT "ftpPort" 111280031Sdim#define VAR_FTP_STATE "ftpState" 112280031Sdim#define VAR_FTP_USER "ftpUser" 113280031Sdim#define VAR_FTP_HOST "ftpHost" 114280031Sdim#define VAR_HTTP_PATH "_httpPath" 115280031Sdim#define VAR_HTTP_PROXY "httpProxy" 116280031Sdim#define VAR_HTTP_PORT "httpPort" 117280031Sdim#define VAR_HTTP_HOST "httpHost" 118261991Sdim#define VAR_HTTP_FTP_MODE "httpFtpMode" 119218885Sdim#define VAR_GATEWAY "defaultrouter" 120261991Sdim#define VAR_GEOMETRY "geometry" 121261991Sdim#define VAR_HOSTNAME "hostname" 122261991Sdim#define VAR_IFCONFIG "ifconfig_" 123218885Sdim#define VAR_INTERFACES "network_interfaces" 124261991Sdim#define VAR_INSTALL_CFG "installConfig" 125261991Sdim#define VAR_INSTALL_ROOT "installRoot" 126261991Sdim#define VAR_IPADDR "ipaddr" 127218885Sdim#define VAR_IPV6_ENABLE "ipv6_enable" 128261991Sdim#define VAR_IPV6ADDR "ipv6addr" 129261991Sdim#define VAR_KEYMAP "keymap" 130261991Sdim#define VAR_KGET "kget" 131261991Sdim#define VAR_LABEL "label" 132218885Sdim#define VAR_LABEL_COUNT "labelCount" 133261991Sdim#define VAR_LINUX_ENABLE "linux_enable" 134261991Sdim#define VAR_MEDIA_TYPE "mediaType" 135261991Sdim#define VAR_MEDIA_TIMEOUT "MEDIA_TIMEOUT" 136218885Sdim#define VAR_MOUSED "moused_enable" 137261991Sdim#define VAR_MOUSED_FLAGS "moused_flags" 138261991Sdim#define VAR_MOUSED_PORT "moused_port" 139261991Sdim#define VAR_MOUSED_TYPE "moused_type" 140261991Sdim#define VAR_NAMESERVER "nameserver" 141218885Sdim#define VAR_NETINTERACTIVE "netInteractive" 142261991Sdim#define VAR_NETMASK "netmask" 143218885Sdim#define VAR_NETWORK_DEVICE "netDev" 144218885Sdim#define VAR_NEWFS_ARGS "newfsArgs" 145261991Sdim#define VAR_NFS_PATH "nfs" 146261991Sdim#define VAR_NFS_HOST "nfsHost" 147261991Sdim#define VAR_NFS_SECURE "nfs_reserved_port_only" 148261991Sdim#define VAR_NFS_SERVER "nfs_server_enable" 149261991Sdim#define VAR_NO_CONFIRM "noConfirm" 150261991Sdim#define VAR_NO_ERROR "noError" 151261991Sdim#define VAR_NO_WARN "noWarn" 152218885Sdim#define VAR_NO_USR "noUsr" 153218885Sdim#define VAR_NONINTERACTIVE "nonInteractive" 154261991Sdim#define VAR_NOVELL "novell" 155261991Sdim#define VAR_NTPDATE_FLAGS "ntpdate_flags" 156261991Sdim#define VAR_PACKAGE "package" 157261991Sdim#define VAR_PARTITION "partition" 158218885Sdim#define VAR_PCNFSD "pcnfsd" 159261991Sdim#define VAR_PKG_TMPDIR "PKG_TMPDIR" 160261991Sdim#define VAR_PORTS_PATH "ports" 161261991Sdim#define VAR_PPP_ENABLE "ppp_enable" 162218885Sdim#define VAR_PPP_PROFILE "ppp_profile" 163218885Sdim#define VAR_RELNAME "releaseName" 164276479Sdim#define VAR_ROOT_SIZE "rootSize" 165261991Sdim#define VAR_ROUTER "router" 166261991Sdim#define VAR_ROUTER_ENABLE "router_enable" 167218885Sdim#define VAR_ROUTERFLAGS "router_flags" 168261991Sdim#define VAR_SERIAL_SPEED "serialSpeed" 169261991Sdim#define VAR_SLOW_ETHER "slowEthernetCard" 170261991Sdim#define VAR_SWAP_SIZE "swapSize" 171218885Sdim#define VAR_TAPE_BLOCKSIZE "tapeBlocksize" 172261991Sdim#define VAR_TRY_DHCP "tryDHCP" 173261991Sdim#define VAR_TRY_RTSOL "tryRTSOL" 174288943Sdim#define VAR_UFS_PATH "ufs" 175218885Sdim#define VAR_USR_SIZE "usrSize" 176261991Sdim#define VAR_VAR_SIZE "varSize" 177261991Sdim#define VAR_XF86_CONFIG "_xf86config" 178261991Sdim 179261991Sdim#define DEFAULT_TAPE_BLOCKSIZE "20" 180261991Sdim 181261991Sdim/* One MB worth of blocks */ 182261991Sdim#define ONE_MEG 2048 183261991Sdim#define ONE_GIG (ONE_MEG * 1024) 184218885Sdim 185218885Sdim/* Which selection attributes to use */ 186296417Sdim#define ATTR_SELECTED (ColorDisplay ? item_selected_attr : item_attr) 187296417Sdim#define ATTR_TITLE button_active_attr 188261991Sdim 189218885Sdim/* Handy strncpy() macro */ 190280031Sdim#define SAFE_STRCPY(to, from) sstrncpy((to), (from), sizeof (to) - 1) 191261991Sdim 192218885Sdim/*** Types ***/ 193261991Sdimtypedef unsigned int Boolean; 194276479Sdimtypedef struct disk Disk; 195276479Sdimtypedef struct chunk Chunk; 196288943Sdim 197276479Sdim/* Bitfields for menu options */ 198218885Sdim#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */ 199276479Sdim#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ 200218885Sdim#define DMENU_CHECKLIST_TYPE 0x4 /* Multiple choice menu */ 201218885Sdim#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */ 202276479Sdim 203276479Sdimtypedef struct _dmenu { 204261991Sdim int type; /* What sort of menu we are */ 205261991Sdim char *title; /* Our title */ 206261991Sdim char *prompt; /* Our prompt */ 207280031Sdim char *helpline; /* Line of help at bottom */ 208276479Sdim char *helpfile; /* Help file for "F1" */ 209280031Sdim dialogMenuItem items[0]; /* Array of menu items */ 210276479Sdim} DMenu; 211218885Sdim 212276479Sdim/* An rc.conf variable */ 213288943Sdimtypedef struct _variable { 214218885Sdim struct _variable *next; 215276479Sdim char *name; 216218885Sdim char *value; 217218885Sdim int dirty; 218276479Sdim} Variable; 219261991Sdim 220218885Sdim#define NO_ECHO_OBJ(type) ((type) | (DITEM_NO_ECHO << 16)) 221276479Sdim#define TYPE_OF_OBJ(type) ((type) & 0xff) 222276479Sdim#define ATTR_OF_OBJ(type) ((type) >> 16) 223276479Sdim 224276479Sdim/* A screen layout structure */ 225276479Sdimtypedef struct _layout { 226261991Sdim int y; /* x & Y co-ordinates */ 227261991Sdim int x; 228280031Sdim int len; /* The size of the dialog on the screen */ 229261991Sdim int maxlen; /* How much the user can type in ... */ 230261991Sdim char *prompt; /* The string for the prompt */ 231276479Sdim char *help; /* The display for the help line */ 232261991Sdim void *var; /* The var to set when this changes */ 233288943Sdim int type; /* The type of the dialog to create */ 234276479Sdim void *obj; /* The obj pointer returned by libdialog */ 235276479Sdim} Layout; 236276479Sdim 237276479Sdimtypedef enum { 238261991Sdim DEVICE_TYPE_NONE, 239276479Sdim DEVICE_TYPE_DISK, 240288943Sdim DEVICE_TYPE_FLOPPY, 241276479Sdim DEVICE_TYPE_FTP, 242276479Sdim DEVICE_TYPE_NETWORK, 243276479Sdim DEVICE_TYPE_CDROM, 244276479Sdim DEVICE_TYPE_TAPE, 245218885Sdim DEVICE_TYPE_DOS, 246218885Sdim DEVICE_TYPE_UFS, 247276479Sdim DEVICE_TYPE_NFS, 248261991Sdim DEVICE_TYPE_ANY, 249261991Sdim DEVICE_TYPE_HTTP, 250261991Sdim} DeviceType; 251280031Sdim 252276479Sdim/* CDROM mount codes */ 253280031Sdim#define CD_UNMOUNTED 0 254276479Sdim#define CD_ALREADY_MOUNTED 1 255261991Sdim#define CD_WE_MOUNTED_IT 2 256276479Sdim 257296417Sdim/* A "device" from sysinstall's point of view */ 258296417Sdimtypedef struct _device { 259296417Sdim char name[DEV_NAME_MAX]; 260296417Sdim char *description; 261296417Sdim char *devname; 262261991Sdim DeviceType type; 263296417Sdim Boolean enabled; 264296417Sdim Boolean (*init)(struct _device *dev); 265296417Sdim FILE * (*get)(struct _device *dev, char *file, Boolean probe); 266296417Sdim void (*shutdown)(struct _device *dev); 267296417Sdim void *private; 268296417Sdim unsigned int flags; 269296417Sdim} Device; 270296417Sdim 271296417Sdim/* Some internal representations of partitions */ 272296417Sdimtypedef enum { 273296417Sdim PART_NONE, 274296417Sdim PART_SLICE, 275296417Sdim PART_SWAP, 276296417Sdim PART_FILESYSTEM, 277261991Sdim PART_FAT, 278261991Sdim} PartType; 279276479Sdim 280296417Sdim/* The longest newfs command we'll hand to system() */ 281296417Sdim#define NEWFS_CMD_MAX 256 282296417Sdim 283296417Sdimtypedef struct _part_info { 284296417Sdim Boolean newfs; 285261991Sdim char mountpoint[FILENAME_MAX]; 286261991Sdim char newfs_cmd[NEWFS_CMD_MAX]; 287261991Sdim} PartInfo; 288261991Sdim 289218885Sdim/* An option */ 290218885Sdimtypedef struct _opt { 291280031Sdim char *name; 292261991Sdim char *desc; 293280031Sdim enum { OPT_IS_STRING, OPT_IS_INT, OPT_IS_FUNC, OPT_IS_VAR } type; 294261991Sdim void *data; 295280031Sdim void *aux; 296261991Sdim char *(*check)(); 297276479Sdim} Option; 298218885Sdim 299218885Sdim/* Weird index nodey things we use for keeping track of package information */ 300280031Sdimtypedef enum { PACKAGE, PLACE } node_type; /* Types of nodes */ 301280031Sdim 302218885Sdimtypedef struct _pkgnode { /* A node in the reconstructed hierarchy */ 303280031Sdim struct _pkgnode *next; /* My next sibling */ 304280031Sdim node_type type; /* What am I? */ 305218885Sdim char *name; /* My name */ 306280031Sdim char *desc; /* My description (Hook) */ 307218885Sdim struct _pkgnode *kids; /* My little children */ 308280031Sdim void *data; /* A place to hang my data */ 309261991Sdim} PkgNode; 310276479Sdimtypedef PkgNode *PkgNodePtr; 311276479Sdim 312276479Sdim/* A single package */ 313288943Sdimtypedef struct _indexEntry { /* A single entry in an INDEX file */ 314280031Sdim char *name; /* name */ 315280031Sdim char *path; /* full path to port */ 316218885Sdim char *prefix; /* port prefix */ 317280031Sdim char *comment; /* one line description */ 318280031Sdim char *descrfile; /* path to description file */ 319218885Sdim char *deps; /* packages this depends on */ 320280031Sdim int depc; /* how many depend on me */ 321261991Sdim int installed; /* indicates if it is installed */ 322218885Sdim char *maintainer; /* maintainer */ 323296417Sdim} IndexEntry; 324296417Sdimtypedef IndexEntry *IndexEntryPtr; 325296417Sdim 326296417Sdimtypedef int (*commandFunc)(char *key, void *data); 327296417Sdim 328261991Sdim#define HOSTNAME_FIELD_LEN 128 329261991Sdim#define IPADDR_FIELD_LEN 16 330261991Sdim#define EXTRAS_FIELD_LEN 128 331261991Sdim 332261991Sdim/* This is the structure that Network devices carry around in their private, erm, structures */ 333261991Sdimtypedef struct _devPriv { 334261991Sdim int use_rtsol; 335261991Sdim int use_dhcp; 336261991Sdim char ipaddr[IPADDR_FIELD_LEN]; 337218885Sdim char netmask[IPADDR_FIELD_LEN]; 338218885Sdim char extras[EXTRAS_FIELD_LEN]; 339276479Sdim} DevInfo; 340261991Sdim 341276479Sdim 342276479Sdim/*** Externs ***/ 343276479Sdimextern jmp_buf BailOut; /* Used to get the heck out */ 344276479Sdimextern int DebugFD; /* Where diagnostic output goes */ 345261991Sdimextern Boolean Fake; /* Don't actually modify anything - testing */ 346276479Sdimextern Boolean SystemWasInstalled; /* Did we install it? */ 347261991Sdimextern Boolean RunningAsInit; /* Are we running stand-alone? */ 348218885Sdimextern Boolean DialogActive; /* Is the dialog() stuff up? */ 349261991Sdimextern Boolean ColorDisplay; /* Are we on a color display? */ 350261991Sdimextern Boolean OnVTY; /* On a syscons VTY? */ 351261991Sdimextern Variable *VarHead; /* The head of the variable chain */ 352296417Sdimextern Device *mediaDevice; /* Where we're getting our distribution from */ 353296417Sdimextern unsigned int Dists; /* Which distributions we want */ 354296417Sdimextern unsigned int CRYPTODists; /* Which naughty distributions we want */ 355296417Sdimextern unsigned int SrcDists; /* Which src distributions we want */ 356296417Sdimextern unsigned int XF86Dists; /* Which XFree86 dists we want */ 357296417Sdimextern unsigned int XF86ServerDists; /* The XFree86 servers we want */ 358218885Sdimextern unsigned int XF86FontDists; /* The XFree86 fonts we want */ 359261991Sdimextern int BootMgr; /* Which boot manager to use */ 360261991Sdimextern int StatusLine; /* Where to print our status messages */ 361261991Sdimextern DMenu MenuInitial; /* Initial installation menu */ 362261991Sdimextern DMenu MenuFixit; /* Fixit repair menu */ 363261991Sdimextern DMenu MenuMBRType; /* Type of MBR to write on the disk */ 364261991Sdimextern DMenu MenuConfigure; /* Final configuration menu */ 365261991Sdimextern DMenu MenuDocumentation; /* Documentation menu */ 366261991Sdimextern DMenu MenuFTPOptions; /* FTP Installation options */ 367218885Sdimextern DMenu MenuIndex; /* Index menu */ 368218885Sdimextern DMenu MenuOptions; /* Installation options */ 369218885Sdimextern DMenu MenuOptionsLanguage; /* Language options menu */ 370261991Sdimextern DMenu MenuMedia; /* Media type menu */ 371218885Sdimextern DMenu MenuMouse; /* Mouse type menu */ 372218885Sdimextern DMenu MenuMediaCDROM; /* CDROM media menu */ 373218885Sdimextern DMenu MenuMediaDOS; /* DOS media menu */ 374276479Sdimextern DMenu MenuMediaFloppy; /* Floppy media menu */ 375261991Sdimextern DMenu MenuMediaFTP; /* FTP media menu */ 376261991Sdimextern DMenu MenuMediaTape; /* Tape media menu */ 377261991Sdimextern DMenu MenuNetworkDevice; /* Network device menu */ 378261991Sdimextern DMenu MenuNTP; /* NTP time server menu */ 379261991Sdimextern DMenu MenuSecurityProfile; /* Security profile menu */ 380261991Sdimextern DMenu MenuStartup; /* Startup services menu */ 381261991Sdimextern DMenu MenuSyscons; /* System console configuration menu */ 382261991Sdimextern DMenu MenuSysconsFont; /* System console font configuration menu */ 383261991Sdimextern DMenu MenuSysconsKeymap; /* System console keymap configuration menu */ 384288943Sdimextern DMenu MenuSysconsKeyrate; /* System console keyrate configuration menu */ 385261991Sdimextern DMenu MenuSysconsSaver; /* System console saver configuration menu */ 386276479Sdimextern DMenu MenuSysconsScrnmap; /* System console screenmap configuration menu */ 387218885Sdimextern DMenu MenuNetworking; /* Network configuration menu */ 388261991Sdimextern DMenu MenuInstallCustom; /* Custom Installation menu */ 389261991Sdimextern DMenu MenuDistributions; /* Distribution menu */ 390261991Sdimextern DMenu MenuDiskDevices; /* Disk type devices */ 391261991Sdimextern DMenu MenuSubDistributions; /* Custom distribution menu */ 392276479Sdimextern DMenu MenuSrcDistributions; /* Source distribution menu */ 393261991Sdimextern DMenu MenuXF86; /* XFree86 main menu */ 394261991Sdimextern DMenu MenuXF86Select; /* XFree86 distribution selection menu */ 395276479Sdimextern DMenu MenuXF86SelectCore; /* XFree86 core distribution menu */ 396261991Sdimextern DMenu MenuXF86SelectServer; /* XFree86 server distribution menu */ 397218885Sdimextern DMenu MenuXF86SelectPC98Server; /* XFree86 server distribution menu */ 398261991Sdimextern DMenu MenuXF86SelectFonts; /* XFree86 font selection menu */ 399261991Sdimextern DMenu MenuXF86SelectFonts; /* XFree86 font selection menu */ 400261991Sdimextern DMenu MenuXDesktops; /* Disk devices menu */ 401261991Sdimextern DMenu MenuHTMLDoc; /* HTML Documentation menu */ 402261991Sdimextern DMenu MenuUsermgmt; /* User management menu */ 403261991Sdimextern DMenu MenuFixit; /* Fixit floppy/CDROM/shell menu */ 404261991Sdimextern DMenu MenuXF86Config; /* Select XFree86 configuration type */ 405261991Sdimextern int FixItMode; /* FixItMode starts shell onc urrent device (ie Serial port) */ 406261991Sdimextern const char * StartName; /* Which name we were started as */ 407261991Sdim 408261991Sdim/* Stuff from libdialog which isn't properly declared outside */ 409261991Sdimextern void display_helpfile(void); 410261991Sdimextern void display_helpline(WINDOW *w, int y, int width); 411276479Sdim 412218885Sdim/*** Prototypes ***/ 413218885Sdim 414261991Sdim/* anonFTP.c */ 415276479Sdimextern int configAnonFTP(dialogMenuItem *self); 416276479Sdim 417276479Sdim/* cdrom.c */ 418261991Sdimextern Boolean mediaInitCDROM(Device *dev); 419276479Sdimextern FILE *mediaGetCDROM(Device *dev, char *file, Boolean probe); 420261991Sdimextern void mediaShutdownCDROM(Device *dev); 421218885Sdim 422261991Sdim/* command.c */ 423288943Sdimextern void command_clear(void); 424261991Sdimextern void command_sort(void); 425218885Sdimextern void command_execute(void); 426276479Sdimextern void command_shell_add(char *key, char *fmt, ...); 427261991Sdimextern void command_func_add(char *key, commandFunc func, void *data); 428261991Sdim 429261991Sdim/* config.c */ 430261991Sdimextern void configEnvironmentRC_conf(void); 431261991Sdimextern void configEnvironmentResolv(char *config); 432261991Sdimextern void configRC_conf(void); 433276479Sdimextern int configFstab(dialogMenuItem *self); 434218885Sdimextern int configRC(dialogMenuItem *self); 435218885Sdimextern int configResolv(dialogMenuItem *self); 436280031Sdimextern int configPackages(dialogMenuItem *self); 437261991Sdimextern int configSaver(dialogMenuItem *self); 438218885Sdimextern int configSaverTimeout(dialogMenuItem *self); 439261991Sdimextern int configLinux(dialogMenuItem *self); 440261991Sdimextern int configNTP(dialogMenuItem *self); 441261991Sdimextern int configUsers(dialogMenuItem *self); 442261991Sdimextern int configXSetup(dialogMenuItem *self); 443261991Sdimextern int configXDesktop(dialogMenuItem *self); 444261991Sdimextern int configRouter(dialogMenuItem *self); 445261991Sdimextern int configPCNFSD(dialogMenuItem *self); 446261991Sdimextern int configNFSServer(dialogMenuItem *self); 447261991Sdimextern int configWriteRC_conf(dialogMenuItem *self); 448261991Sdimextern int configSecurityProfile(dialogMenuItem *self); 449261991Sdimextern int configSecurityFascist(dialogMenuItem *self); 450261991Sdimextern int configSecurityHigh(dialogMenuItem *self); 451261991Sdimextern int configSecurityModerate(dialogMenuItem *self); 452261991Sdimextern int configSecurityLiberal(dialogMenuItem *self); 453261991Sdim 454261991Sdim/* crc.c */ 455218885Sdimextern int crc(int, unsigned long *, unsigned long *); 456261991Sdim 457261991Sdim/* devices.c */ 458261991Sdimextern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)(dialogMenuItem *d), 459261991Sdim int (*check)(dialogMenuItem *d)); 460261991Sdimextern void deviceGetAll(void); 461261991Sdimextern void deviceReset(void); 462261991Sdimextern void deviceRescan(void); 463261991Sdimextern Device **deviceFind(char *name, DeviceType type); 464261991Sdimextern Device **deviceFindDescr(char *name, char *desc, DeviceType class); 465218885Sdimextern int deviceCount(Device **devs); 466218885Sdimextern Device *new_device(char *name); 467276479Sdimextern Device *deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled, 468261991Sdim Boolean (*init)(Device *mediadev), 469261991Sdim FILE * (*get)(Device *dev, char *file, Boolean probe), 470261991Sdim void (*shutDown)(Device *mediadev), 471261991Sdim void *private); 472276479Sdimextern Boolean dummyInit(Device *dev); 473261991Sdimextern FILE *dummyGet(Device *dev, char *dist, Boolean probe); 474261991Sdimextern void dummyShutdown(Device *dev); 475261991Sdim 476261991Sdim/* dhcp.c */ 477261991Sdimextern int dhcpParseLeases(char *file, char *hostname, char *domain, char *nameserver, 478261991Sdim char *ipaddr, char *gateway, char *netmask); 479261991Sdim 480288943Sdim/* disks.c */ 481276479Sdimextern int diskPartitionEditor(dialogMenuItem *self); 482261991Sdimextern int diskPartitionWrite(dialogMenuItem *self); 483261991Sdimextern int diskGetSelectCount(Device ***devs); 484280031Sdimextern void diskPartition(Device *dev); 485280031Sdim 486261991Sdim/* dispatch.c */ 487280031Sdimextern int dispatchCommand(char *command); 488261991Sdimextern int dispatch_load_floppy(dialogMenuItem *self); 489261991Sdimextern int dispatch_load_file_int(int); 490280031Sdimextern int dispatch_load_file(dialogMenuItem *self); 491280031Sdim 492280031Sdim 493280031Sdim/* dist.c */ 494261991Sdimextern int distReset(dialogMenuItem *self); 495261991Sdimextern int distConfig(dialogMenuItem *self); 496261991Sdimextern int distSetCustom(dialogMenuItem *self); 497261991Sdimextern int distUnsetCustom(dialogMenuItem *self); 498261991Sdimextern int distSetDeveloper(dialogMenuItem *self); 499218885Sdimextern int distSetXDeveloper(dialogMenuItem *self); 500218885Sdimextern int distSetKernDeveloper(dialogMenuItem *self); 501280031Sdimextern int distSetXKernDeveloper(dialogMenuItem *self); 502261991Sdimextern int distSetUser(dialogMenuItem *self); 503261991Sdimextern int distSetXUser(dialogMenuItem *self); 504261991Sdimextern int distSetMinimum(dialogMenuItem *self); 505261991Sdimextern int distSetEverything(dialogMenuItem *self); 506261991Sdimextern int distSetSrc(dialogMenuItem *self); 507288943Sdimextern int distSetXF86(dialogMenuItem *self); 508261991Sdimextern int distExtractAll(dialogMenuItem *self); 509218885Sdim 510218885Sdim/* dmenu.c */ 511261991Sdimextern int dmenuDisplayFile(dialogMenuItem *tmp); 512261991Sdimextern int dmenuSubmenu(dialogMenuItem *tmp); 513261991Sdimextern int dmenuSystemCommand(dialogMenuItem *tmp); 514261991Sdimextern int dmenuSystemCommandBox(dialogMenuItem *tmp); 515261991Sdimextern int dmenuExit(dialogMenuItem *tmp); 516261991Sdimextern int dmenuISetVariable(dialogMenuItem *tmp); 517261991Sdimextern int dmenuSetVariable(dialogMenuItem *tmp); 518261991Sdimextern int dmenuSetKmapVariable(dialogMenuItem *tmp); 519261991Sdimextern int dmenuSetVariables(dialogMenuItem *tmp); 520261991Sdimextern int dmenuToggleVariable(dialogMenuItem *tmp); 521261991Sdimextern int dmenuSetFlag(dialogMenuItem *tmp); 522261991Sdimextern int dmenuSetValue(dialogMenuItem *tmp); 523288943Sdimextern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max, Boolean buttons); 524261991Sdimextern Boolean dmenuOpenSimple(DMenu *menu, Boolean buttons); 525261991Sdimextern int dmenuVarCheck(dialogMenuItem *item); 526261991Sdimextern int dmenuVarsCheck(dialogMenuItem *item); 527261991Sdimextern int dmenuFlagCheck(dialogMenuItem *item); 528261991Sdimextern int dmenuRadioCheck(dialogMenuItem *item); 529261991Sdim 530261991Sdim/* doc.c */ 531261991Sdimextern int docBrowser(dialogMenuItem *self); 532288943Sdimextern int docShowDocument(dialogMenuItem *self); 533261991Sdim 534261991Sdim/* dos.c */ 535261991Sdimextern Boolean mediaCloseDOS(Device *dev, FILE *fp); 536218885Sdimextern Boolean mediaInitDOS(Device *dev); 537261991Sdimextern FILE *mediaGetDOS(Device *dev, char *file, Boolean probe); 538218885Sdimextern void mediaShutdownDOS(Device *dev); 539218885Sdim 540261991Sdim/* floppy.c */ 541261991Sdimextern int getRootFloppy(void); 542261991Sdimextern Boolean mediaInitFloppy(Device *dev); 543276479Sdimextern FILE *mediaGetFloppy(Device *dev, char *file, Boolean probe); 544218885Sdimextern void mediaShutdownFloppy(Device *dev); 545218885Sdim 546280031Sdim/* ftp_strat.c */ 547280031Sdimextern Boolean mediaCloseFTP(Device *dev, FILE *fp); 548280031Sdimextern Boolean mediaInitFTP(Device *dev); 549280031Sdimextern FILE *mediaGetFTP(Device *dev, char *file, Boolean probe); 550280031Sdimextern void mediaShutdownFTP(Device *dev); 551280031Sdim 552261991Sdim/* http.c */ 553218885Sdimextern Boolean mediaInitHTTP(Device *dev); 554261991Sdimextern FILE *mediaGetHTTP(Device *dev, char *file, Boolean probe); 555261991Sdim 556261991Sdim/* globals.c */ 557261991Sdimextern void globalsInit(void); 558218885Sdim 559261991Sdim/* index.c */ 560261991Sdimint index_read(FILE *fp, PkgNodePtr papa); 561261991Sdimint index_menu(PkgNodePtr root, PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll); 562261991Sdimvoid index_init(PkgNodePtr top, PkgNodePtr plist); 563218885Sdimvoid index_node_free(PkgNodePtr top, PkgNodePtr plist); 564261991Sdimvoid index_sort(PkgNodePtr top); 565261991Sdimvoid index_print(PkgNodePtr top, int level); 566261991Sdimint index_extract(Device *dev, PkgNodePtr top, PkgNodePtr who, Boolean depended); 567261991Sdimint index_initialize(char *path); 568218885SdimPkgNodePtr index_search(PkgNodePtr top, char *str, PkgNodePtr *tp); 569261991Sdim 570261991Sdim/* install.c */ 571261991Sdimextern Boolean checkLabels(Boolean whinge, Chunk **rdev, Chunk **sdev, Chunk **udev, Chunk **vdev); 572261991Sdimextern int installCommit(dialogMenuItem *self); 573218885Sdimextern int installCustomCommit(dialogMenuItem *self); 574261991Sdimextern int installExpress(dialogMenuItem *self); 575261991Sdimextern int installStandard(dialogMenuItem *self); 576261991Sdimextern int installFixitHoloShell(dialogMenuItem *self); 577261991Sdimextern int installFixitCDROM(dialogMenuItem *self); 578261991Sdimextern int installFixitFloppy(dialogMenuItem *self); 579218885Sdimextern int installFixupBin(dialogMenuItem *self); 580276479Sdimextern int installFixupXFree(dialogMenuItem *self); 581261991Sdimextern int installUpgrade(dialogMenuItem *self); 582261991Sdimextern int installFilesystems(dialogMenuItem *self); 583218885Sdimextern int installVarDefaults(dialogMenuItem *self); 584280031Sdimextern void installEnvironment(void); 585261991Sdimextern int installX11package(dialogMenuItem *self); 586218885Sdimextern Boolean copySelf(void); 587261991Sdim 588261991Sdim/* kget.c */ 589261991Sdimextern int kget(char *out); 590261991Sdim 591261991Sdim/* keymap.c */ 592261991Sdimextern int loadKeymap(const char *lang); 593261991Sdim 594261991Sdim/* label.c */ 595261991Sdimextern int diskLabelEditor(dialogMenuItem *self); 596218885Sdimextern int diskLabelCommit(dialogMenuItem *self); 597261991Sdim 598261991Sdim/* lndir.c */ 599261991Sdimextern int lndir(char *from, char *to); 600261991Sdim 601288943Sdim/* makedevs.c (auto-generated) */ 602218885Sdimextern const char termcap_ansi[]; 603261991Sdimextern const char termcap_vt100[]; 604261991Sdimextern const char termcap_cons25w[]; 605261991Sdimextern const char termcap_cons25[]; 606261991Sdimextern const char termcap_cons25_m[]; 607261991Sdimextern const char termcap_cons25r[]; 608276479Sdimextern const char termcap_cons25r_m[]; 609261991Sdimextern const char termcap_cons25l1[]; 610276479Sdimextern const char termcap_cons25l1_m[]; 611261991Sdimextern const char termcap_xterm[]; 612288943Sdimextern const u_char font_iso_8x16[]; 613261991Sdimextern const u_char font_cp850_8x16[]; 614261991Sdimextern const u_char font_cp866_8x16[]; 615218885Sdimextern const u_char koi8_r2cp866[]; 616261991Sdimextern u_char default_scrnmap[]; 617261991Sdim 618276479Sdim/* media.c */ 619276479Sdimextern char *cpioVerbosity(void); 620276479Sdimextern void mediaClose(void); 621261991Sdimextern int mediaTimeout(void); 622218885Sdimextern int mediaSetCDROM(dialogMenuItem *self); 623261991Sdimextern int mediaSetFloppy(dialogMenuItem *self); 624261991Sdimextern int mediaSetDOS(dialogMenuItem *self); 625288943Sdimextern int mediaSetTape(dialogMenuItem *self); 626288943Sdimextern int mediaSetFTP(dialogMenuItem *self); 627218885Sdimextern int mediaSetFTPActive(dialogMenuItem *self); 628276479Sdimextern int mediaSetFTPPassive(dialogMenuItem *self); 629218885Sdimextern int mediaSetHTTP(dialogMenuItem *self); 630218885Sdimextern int mediaSetUFS(dialogMenuItem *self); 631276479Sdimextern int mediaSetNFS(dialogMenuItem *self); 632261991Sdimextern int mediaSetFTPUserPass(dialogMenuItem *self); 633261991Sdimextern int mediaSetCPIOVerbosity(dialogMenuItem *self); 634261991Sdimextern int mediaGetType(dialogMenuItem *self); 635261991Sdimextern Boolean mediaExtractDist(char *dir, char *dist, FILE *fp); 636261991Sdimextern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic); 637276479Sdimextern Boolean mediaExtractDistEnd(int zpid, int cpid); 638261991Sdimextern Boolean mediaVerify(void); 639218885Sdimextern FILE *mediaGenericGet(char *base, const char *file); 640276479Sdim 641261991Sdim/* misc.c */ 642261991Sdimextern Boolean file_readable(char *fname); 643276479Sdimextern Boolean file_executable(char *fname); 644261991Sdimextern Boolean directory_exists(const char *dirname); 645276479Sdimextern char *root_bias(char *path); 646261991Sdimextern char *itoa(int value); 647288943Sdimextern char *string_concat(char *p1, char *p2); 648261991Sdimextern char *string_concat3(char *p1, char *p2, char *p3); 649218885Sdimextern char *string_prune(char *str); 650261991Sdimextern char *string_skipwhite(char *str); 651261991Sdimextern char *string_copy(char *s1, char *s2); 652261991Sdimextern char *pathBaseName(const char *path); 653261991Sdimextern void safe_free(void *ptr); 654261991Sdimextern void *safe_malloc(size_t size); 655218885Sdimextern void *safe_realloc(void *orig, size_t size); 656261991Sdimextern dialogMenuItem *item_add(dialogMenuItem *list, char *prompt, char *title, 657276479Sdim int (*checked)(dialogMenuItem *self), 658276479Sdim int (*fire)(dialogMenuItem *self), 659276479Sdim void (*selected)(dialogMenuItem *self, int is_selected), 660261991Sdim void *data, int aux, int *curr, int *max); 661218885Sdimextern void items_free(dialogMenuItem *list, int *curr, int *max); 662261991Sdimextern int Mkdir(char *); 663276479Sdimextern int Mount(char *, void *data); 664218885Sdimextern WINDOW *openLayoutDialog(char *helpfile, char *title, int x, int y, int width, int height); 665218885Sdimextern ComposeObj *initLayoutDialog(WINDOW *win, Layout *layout, int x, int y, int *max); 666276479Sdimextern int layoutDialogLoop(WINDOW *win, Layout *layout, ComposeObj **obj, 667261991Sdim int *n, int max, int *cbutton, int *cancel); 668218885Sdim 669280031Sdimextern WINDOW *savescr(void); 670261991Sdimextern void restorescr(WINDOW *w); 671218885Sdimextern char *sstrncpy(char *dst, const char *src, int size); 672296417Sdim 673296417Sdim/* mouse.c */ 674296417Sdimextern int mousedTest(dialogMenuItem *self); 675296417Sdimextern int mousedDisable(dialogMenuItem *self); 676261991Sdimextern int setMouseFlags(dialogMenuItem *self); 677276479Sdim 678288943Sdim/* msg.c */ 679261991Sdimextern Boolean isDebug(void); 680261991Sdimextern void msgInfo(char *fmt, ...); 681261991Sdimextern void msgYap(char *fmt, ...); 682276479Sdimextern void msgWarn(char *fmt, ...); 683261991Sdimextern void msgDebug(char *fmt, ...); 684261991Sdimextern void msgError(char *fmt, ...); 685276479Sdimextern void msgFatal(char *fmt, ...); 686261991Sdimextern void msgConfirm(char *fmt, ...); 687218885Sdimextern void msgNotify(char *fmt, ...); 688218885Sdimextern void msgWeHaveOutput(char *fmt, ...); 689261991Sdimextern int msgYesNo(char *fmt, ...); 690261991Sdimextern char *msgGetInput(char *buf, char *fmt, ...); 691261991Sdimextern int msgSimpleConfirm(char *); 692288943Sdimextern int msgSimpleNotify(char *); 693218885Sdim 694218885Sdim/* network.c */ 695261991Sdimextern Boolean mediaInitNetwork(Device *dev); 696276479Sdimextern void mediaShutdownNetwork(Device *dev); 697218885Sdim 698218885Sdim/* nfs.c */ 699276479Sdimextern Boolean mediaInitNFS(Device *dev); 700261991Sdimextern FILE *mediaGetNFS(Device *dev, char *file, Boolean probe); 701261991Sdimextern void mediaShutdownNFS(Device *dev); 702261991Sdim 703261991Sdim/* options.c */ 704218885Sdimextern int optionsEditor(dialogMenuItem *self); 705261991Sdim 706218885Sdim/* package.c */ 707280031Sdimextern int packageAdd(dialogMenuItem *self); 708261991Sdimextern int package_add(char *name); 709218885Sdimextern int package_extract(Device *dev, char *name, Boolean depended); 710261991Sdimextern Boolean package_exists(char *name); 711261991Sdim 712261991Sdim/* pccard.c */ 713261991Sdimextern void pccardInitialize(void); 714261991Sdim 715261991Sdim/* system.c */ 716261991Sdimextern void systemInitialize(int argc, char **argv); 717261991Sdimextern void systemShutdown(int status); 718276479Sdimextern int execExecute(char *cmd, char *name); 719276479Sdimextern int systemExecute(char *cmd); 720276479Sdimextern void systemSuspendDialog(void); 721276479Sdimextern void systemResumeDialog(void); 722276479Sdimextern int systemDisplayHelp(char *file); 723261991Sdimextern char *systemHelpFile(char *file, char *buf); 724261991Sdimextern void systemChangeFont(const u_char font[]); 725261991Sdimextern void systemChangeLang(char *lang); 726261991Sdimextern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mono, const u_char m_termcap[]); 727276479Sdimextern void systemChangeScreenmap(const u_char newmap[]); 728288943Sdimextern void systemCreateHoloshell(void); 729261991Sdimextern int vsystem(char *fmt, ...); 730261991Sdim 731261991Sdim/* tape.c */ 732276479Sdimextern char *mediaTapeBlocksize(void); 733261991Sdimextern Boolean mediaInitTape(Device *dev); 734261991Sdimextern FILE *mediaGetTape(Device *dev, char *file, Boolean probe); 735276479Sdimextern void mediaShutdownTape(Device *dev); 736261991Sdim 737221345Sdim/* tcpip.c */ 738218885Sdimextern int tcpOpenDialog(Device *dev); 739261991Sdimextern int tcpMenuSelect(dialogMenuItem *self); 740261991Sdimextern Device *tcpDeviceSelect(void); 741261991Sdim 742218885Sdim/* termcap.c */ 743276479Sdimextern int set_termcap(void); 744261991Sdim 745218885Sdim/* ufs.c */ 746261991Sdimextern void mediaShutdownUFS(Device *dev); 747261991Sdimextern Boolean mediaInitUFS(Device *dev); 748261991Sdimextern FILE *mediaGetUFS(Device *dev, char *file, Boolean probe); 749288943Sdim 750261991Sdim/* usb.c */ 751218885Sdimextern void usbInitialize(void); 752261991Sdim 753276479Sdim/* user.c */ 754218885Sdimextern int userAddGroup(dialogMenuItem *self); 755261991Sdimextern int userAddUser(dialogMenuItem *self); 756218885Sdim 757276479Sdim/* variable.c */ 758296417Sdimextern void variable_set(char *var, int dirty); 759296417Sdimextern void variable_set2(char *name, char *value, int dirty); 760296417Sdimextern char *variable_get(char *var); 761296417Sdimextern int variable_cmp(char *var, char *value); 762276479Sdimextern void variable_unset(char *var); 763276479Sdimextern char *variable_get_value(char *var, char *prompt, int dirty); 764296417Sdimextern int variable_check(char *data); 765296417Sdimextern int dump_variables(dialogMenuItem *self); 766296417Sdim 767296417Sdim/* wizard.c */ 768276479Sdimextern void slice_wizard(Disk *d); 769296417Sdim 770296417Sdim#endif 771276479Sdim/* _SYSINSTALL_H_INCLUDE */ 772276479Sdim