sade.h revision 79304
1189251Ssam/* 2189251Ssam * The new sysinstall program. 3252726Srpaulo * 4189251Ssam * This is probably the last attempt in the `sysinstall' line, the next 5252726Srpaulo * generation being slated to essentially a complete rewrite. 6252726Srpaulo * 7189251Ssam * $FreeBSD: head/usr.sbin/sade/sade.h 79304 2001-07-05 09:51:09Z kris $ 8189251Ssam * 9189251Ssam * Copyright (c) 1995 10189251Ssam * Jordan Hubbard. All rights reserved. 11189251Ssam * 12214734Srpaulo * Redistribution and use in source and binary forms, with or without 13214734Srpaulo * modification, are permitted provided that the following conditions 14252726Srpaulo * are met: 15214734Srpaulo * 1. Redistributions of source code must retain the above copyright 16189251Ssam * notice, this list of conditions and the following disclaimer, 17189251Ssam * verbatim and that no modifications are made prior to this 18189251Ssam * point in the file. 19189251Ssam * 2. Redistributions in binary form must reproduce the above copyright 20189251Ssam * notice, this list of conditions and the following disclaimer in the 21189251Ssam * documentation and/or other materials provided with the distribution. 22189251Ssam * 23189251Ssam * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND 24189251Ssam * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25189251Ssam * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26189251Ssam * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE 27189251Ssam * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28189251Ssam * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29189251Ssam * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION) 30189251Ssam * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31189251Ssam * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32189251Ssam * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33189251Ssam * SUCH DAMAGE. 34189251Ssam * 35189251Ssam */ 36189251Ssam 37189251Ssam#ifndef _SYSINSTALL_H_INCLUDE 38209158Srpaulo#define _SYSINSTALL_H_INCLUDE 39189251Ssam 40189251Ssam#include <sys/types.h> 41189251Ssam#include <sys/wait.h> 42189251Ssam#include <errno.h> 43189251Ssam#include <setjmp.h> 44189251Ssam#include <stdio.h> 45189251Ssam#include <stdlib.h> 46189251Ssam#include <string.h> 47189251Ssam#include <unistd.h> 48189251Ssam#include <dialog.h> 49189251Ssam#include "ui_objects.h" 50189251Ssam#include "dir.h" 51189251Ssam#include "colors.h" 52189251Ssam#include "libdisk.h" 53189251Ssam#include "dist.h" 54189251Ssam 55189251Ssam/*** Defines ***/ 56189251Ssam 57189251Ssam/* device limits */ 58189251Ssam#define DEV_NAME_MAX 64 /* The maximum length of a device name */ 59189251Ssam#define DEV_MAX 100 /* The maximum number of devices we'll deal with */ 60189251Ssam#define INTERFACE_MAX 50 /* Maximum number of network interfaces we'll deal with */ 61189251Ssam#define IO_ERROR -2 /* Status code for I/O error rather than normal EOF */ 62189251Ssam 63189251Ssam/* Number of seconds to wait for data to come off even the slowest media */ 64189251Ssam#define MEDIA_TIMEOUT 300 65189251Ssam 66189251Ssam/* 67189251Ssam * I make some pretty gross assumptions about having a max of 50 chunks 68189251Ssam * total - 8 slices and 42 partitions. I can't easily display many more 69189251Ssam * than that on the screen at once! 70189251Ssam * 71189251Ssam * For 2.1 I'll revisit this and try to make it more dynamic, but since 72189251Ssam * this will catch 99.99% of all possible cases, I'm not too worried. 73189251Ssam */ 74189251Ssam#define MAX_CHUNKS 40 75189251Ssam 76189251Ssam/* Internal environment variable names */ 77189251Ssam#define DISK_PARTITIONED "_diskPartitioned" 78189251Ssam#define DISK_LABELLED "_diskLabelled" 79189251Ssam#define DISK_SELECTED "_diskSelected" 80189251Ssam#define SYSTEM_STATE "_systemState" 81189251Ssam#define RUNNING_ON_ROOT "_runningOnRoot" 82189251Ssam#define TCP_CONFIGURED "_tcpConfigured" 83252726Srpaulo 84189251Ssam/* Ones that can be tweaked from config files */ 85252726Srpaulo#define VAR_BLANKTIME "blanktime" 86252726Srpaulo#define VAR_BOOTMGR "bootManager" 87252726Srpaulo#define VAR_BROWSER_BINARY "browserBinary" 88189251Ssam#define VAR_BROWSER_PACKAGE "browserPackage" 89189251Ssam#define VAR_CPIO_VERBOSITY "cpioVerbose" 90189251Ssam#define VAR_DEBUG "debug" 91189251Ssam#define VAR_DESKSTYLE "_deskStyle" 92189251Ssam#define VAR_DISK "disk" 93189251Ssam#define VAR_DISTS "dists" 94252726Srpaulo#define VAR_DIST_MAIN "distMain" 95252726Srpaulo#define VAR_DIST_CRYPTO "distCRYPTO" 96252726Srpaulo#define VAR_DIST_SRC "distSRC" 97252726Srpaulo#define VAR_DIST_X11 "distX11" 98252726Srpaulo#define VAR_DIST_XSERVER "distXserver" 99252726Srpaulo#define VAR_DIST_XFONTS "distXfonts" 100252726Srpaulo#define VAR_DEDICATE_DISK "dedicateDisk" 101252726Srpaulo#define VAR_DOMAINNAME "domainname" 102252726Srpaulo#define VAR_EDITOR "editor" 103252726Srpaulo#define VAR_EXTRAS "ifconfig_" 104252726Srpaulo#define VAR_COMMAND "command" 105252726Srpaulo#define VAR_CONFIG_FILE "configFile" 106252726Srpaulo#define VAR_FIXIT_TTY "fixitTty" 107189251Ssam#define VAR_FTP_DIR "ftpDirectory" 108189251Ssam#define VAR_FTP_PASS "ftpPass" 109189251Ssam#define VAR_FTP_PATH "_ftpPath" 110189251Ssam#define VAR_FTP_PORT "ftpPort" 111189251Ssam#define VAR_FTP_STATE "ftpState" 112189251Ssam#define VAR_FTP_USER "ftpUser" 113189251Ssam#define VAR_FTP_HOST "ftpHost" 114189251Ssam#define VAR_HTTP_PATH "_httpPath" 115189251Ssam#define VAR_HTTP_PROXY "httpProxy" 116189251Ssam#define VAR_HTTP_PORT "httpPort" 117189251Ssam#define VAR_HTTP_HOST "httpHost" 118189251Ssam#define VAR_HTTP_FTP_MODE "httpFtpMode" 119189251Ssam#define VAR_GATEWAY "defaultrouter" 120189251Ssam#define VAR_GEOMETRY "geometry" 121189251Ssam#define VAR_HOSTNAME "hostname" 122189251Ssam#define VAR_IFCONFIG "ifconfig_" 123189251Ssam#define VAR_INSTALL_CFG "installConfig" 124189251Ssam#define VAR_INSTALL_ROOT "installRoot" 125189251Ssam#define VAR_IPADDR "ipaddr" 126189251Ssam#define VAR_IPV6_ENABLE "ipv6_enable" 127189251Ssam#define VAR_IPV6ADDR "ipv6addr" 128189251Ssam#define VAR_KEYMAP "keymap" 129189251Ssam#define VAR_KGET "kget" 130189251Ssam#define VAR_LABEL "label" 131189251Ssam#define VAR_LABEL_COUNT "labelCount" 132189251Ssam#define VAR_LINUX_ENABLE "linux_enable" 133189251Ssam#define VAR_MEDIA_TYPE "mediaType" 134189251Ssam#define VAR_MEDIA_TIMEOUT "MEDIA_TIMEOUT" 135189251Ssam#define VAR_MOUSED "moused_enable" 136189251Ssam#define VAR_MOUSED_FLAGS "moused_flags" 137189251Ssam#define VAR_MOUSED_PORT "moused_port" 138189251Ssam#define VAR_MOUSED_TYPE "moused_type" 139189251Ssam#define VAR_NAMESERVER "nameserver" 140189251Ssam#define VAR_NETINTERACTIVE "netInteractive" 141189251Ssam#define VAR_NETMASK "netmask" 142189251Ssam#define VAR_NETWORK_DEVICE "netDev" 143189251Ssam#define VAR_NEWFS_ARGS "newfsArgs" 144189251Ssam#define VAR_NFS_PATH "nfs" 145189251Ssam#define VAR_NFS_HOST "nfsHost" 146189251Ssam#define VAR_NFS_SECURE "nfs_reserved_port_only" 147189251Ssam#define VAR_NFS_SERVER "nfs_server_enable" 148189251Ssam#define VAR_NO_CONFIRM "noConfirm" 149189251Ssam#define VAR_NO_ERROR "noError" 150189251Ssam#define VAR_NO_HOLOSHELL "noHoloShell" 151189251Ssam#define VAR_NO_WARN "noWarn" 152189251Ssam#define VAR_NO_USR "noUsr" 153189251Ssam#define VAR_NONINTERACTIVE "nonInteractive" 154189251Ssam#define VAR_NOVELL "novell" 155189251Ssam#define VAR_NTPDATE_FLAGS "ntpdate_flags" 156189251Ssam#define VAR_PACKAGE "package" 157189251Ssam#define VAR_PARTITION "partition" 158189251Ssam#define VAR_PCNFSD "pcnfsd" 159189251Ssam#define VAR_PKG_TMPDIR "PKG_TMPDIR" 160189251Ssam#define VAR_PORTS_PATH "ports" 161189251Ssam#define VAR_PPP_ENABLE "ppp_enable" 162189251Ssam#define VAR_PPP_PROFILE "ppp_profile" 163189251Ssam#define VAR_RELNAME "releaseName" 164189251Ssam#define VAR_ROOT_SIZE "rootSize" 165189251Ssam#define VAR_ROUTER "router" 166189251Ssam#define VAR_ROUTER_ENABLE "router_enable" 167189251Ssam#define VAR_ROUTERFLAGS "router_flags" 168189251Ssam#define VAR_SERIAL_SPEED "serialSpeed" 169189251Ssam#define VAR_SLOW_ETHER "slowEthernetCard" 170189251Ssam#define VAR_SWAP_SIZE "swapSize" 171189251Ssam#define VAR_TAPE_BLOCKSIZE "tapeBlocksize" 172189251Ssam#define VAR_TRY_DHCP "tryDHCP" 173189251Ssam#define VAR_TRY_RTSOL "tryRTSOL" 174189251Ssam#define VAR_UFS_PATH "ufs" 175189251Ssam#define VAR_USR_SIZE "usrSize" 176189251Ssam#define VAR_VAR_SIZE "varSize" 177189251Ssam#define VAR_XF86_CONFIG "_xf86config" 178189251Ssam#define VAR_TERM "TERM" 179189251Ssam 180189251Ssam#define DEFAULT_TAPE_BLOCKSIZE "20" 181189251Ssam 182189251Ssam/* One MB worth of blocks */ 183189251Ssam#define ONE_MEG 2048 184189251Ssam#define ONE_GIG (ONE_MEG * 1024) 185189251Ssam 186189251Ssam/* Which selection attributes to use */ 187189251Ssam#define ATTR_SELECTED (ColorDisplay ? item_selected_attr : item_attr) 188189251Ssam#define ATTR_TITLE button_active_attr 189189251Ssam 190189251Ssam/* Handy strncpy() macro */ 191189251Ssam#define SAFE_STRCPY(to, from) sstrncpy((to), (from), sizeof (to) - 1) 192189251Ssam 193189251Ssam/*** Types ***/ 194189251Ssamtypedef int Boolean; 195189251Ssamtypedef struct disk Disk; 196189251Ssamtypedef struct chunk Chunk; 197189251Ssam 198189251Ssam/* Bitfields for menu options */ 199189251Ssam#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */ 200189251Ssam#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ 201189251Ssam#define DMENU_CHECKLIST_TYPE 0x4 /* Multiple choice menu */ 202189251Ssam#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */ 203189251Ssam 204189251Ssamtypedef struct _dmenu { 205189251Ssam int type; /* What sort of menu we are */ 206209158Srpaulo char *title; /* Our title */ 207189251Ssam char *prompt; /* Our prompt */ 208189251Ssam char *helpline; /* Line of help at bottom */ 209189251Ssam char *helpfile; /* Help file for "F1" */ 210189251Ssam dialogMenuItem items[0]; /* Array of menu items */ 211189251Ssam} DMenu; 212189251Ssam 213189251Ssam/* An rc.conf variable */ 214189251Ssamtypedef struct _variable { 215189251Ssam struct _variable *next; 216189251Ssam char *name; 217189251Ssam char *value; 218189251Ssam int dirty; 219189251Ssam} Variable; 220189251Ssam 221189251Ssam#define NO_ECHO_OBJ(type) ((type) | (DITEM_NO_ECHO << 16)) 222189251Ssam#define TYPE_OF_OBJ(type) ((type) & 0xff) 223189251Ssam#define ATTR_OF_OBJ(type) ((type) >> 16) 224189251Ssam 225189251Ssam/* A screen layout structure */ 226189251Ssamtypedef struct _layout { 227189251Ssam int y; /* x & Y co-ordinates */ 228189251Ssam int x; 229189251Ssam int len; /* The size of the dialog on the screen */ 230189251Ssam int maxlen; /* How much the user can type in ... */ 231189251Ssam char *prompt; /* The string for the prompt */ 232189251Ssam char *help; /* The display for the help line */ 233189251Ssam void *var; /* The var to set when this changes */ 234189251Ssam int type; /* The type of the dialog to create */ 235189251Ssam void *obj; /* The obj pointer returned by libdialog */ 236189251Ssam} Layout; 237189251Ssam 238189251Ssamtypedef enum { 239189251Ssam DEVICE_TYPE_NONE, 240189251Ssam DEVICE_TYPE_DISK, 241189251Ssam DEVICE_TYPE_FLOPPY, 242189251Ssam DEVICE_TYPE_FTP, 243189251Ssam DEVICE_TYPE_NETWORK, 244189251Ssam DEVICE_TYPE_CDROM, 245189251Ssam DEVICE_TYPE_TAPE, 246189251Ssam DEVICE_TYPE_DOS, 247189251Ssam DEVICE_TYPE_UFS, 248189251Ssam DEVICE_TYPE_NFS, 249189251Ssam DEVICE_TYPE_ANY, 250189251Ssam DEVICE_TYPE_HTTP, 251189251Ssam} DeviceType; 252189251Ssam 253189251Ssam/* CDROM mount codes */ 254189251Ssam#define CD_UNMOUNTED 0 255189251Ssam#define CD_ALREADY_MOUNTED 1 256189251Ssam#define CD_WE_MOUNTED_IT 2 257189251Ssam 258189251Ssam/* A "device" from sysinstall's point of view */ 259189251Ssamtypedef struct _device { 260189251Ssam char name[DEV_NAME_MAX]; 261189251Ssam char *description; 262189251Ssam char *devname; 263189251Ssam DeviceType type; 264189251Ssam Boolean enabled; 265189251Ssam Boolean (*init)(struct _device *dev); 266189251Ssam FILE * (*get)(struct _device *dev, char *file, Boolean probe); 267189251Ssam void (*shutdown)(struct _device *dev); 268189251Ssam void *private; 269189251Ssam unsigned int flags; 270189251Ssam} Device; 271189251Ssam 272189251Ssam/* Some internal representations of partitions */ 273189251Ssamtypedef enum { 274189251Ssam PART_NONE, 275189251Ssam PART_SLICE, 276189251Ssam PART_SWAP, 277189251Ssam PART_FILESYSTEM, 278189251Ssam PART_FAT, 279189251Ssam} PartType; 280189251Ssam 281189251Ssam/* The longest newfs command we'll hand to system() */ 282189251Ssam#define NEWFS_CMD_MAX 256 283189251Ssam 284189251Ssamtypedef struct _part_info { 285189251Ssam Boolean newfs; 286189251Ssam char mountpoint[FILENAME_MAX]; 287189251Ssam char newfs_cmd[NEWFS_CMD_MAX]; 288189251Ssam int soft; 289189251Ssam} PartInfo; 290189251Ssam 291189251Ssam/* An option */ 292189251Ssamtypedef struct _opt { 293189251Ssam char *name; 294189251Ssam char *desc; 295189251Ssam enum { OPT_IS_STRING, OPT_IS_INT, OPT_IS_FUNC, OPT_IS_VAR } type; 296189251Ssam void *data; 297189251Ssam void *aux; 298189251Ssam char *(*check)(); 299189251Ssam} Option; 300189251Ssam 301189251Ssam/* Weird index nodey things we use for keeping track of package information */ 302189251Ssamtypedef enum { PACKAGE, PLACE } node_type; /* Types of nodes */ 303189251Ssam 304189251Ssamtypedef struct _pkgnode { /* A node in the reconstructed hierarchy */ 305189251Ssam struct _pkgnode *next; /* My next sibling */ 306189251Ssam node_type type; /* What am I? */ 307189251Ssam char *name; /* My name */ 308189251Ssam char *desc; /* My description (Hook) */ 309189251Ssam struct _pkgnode *kids; /* My little children */ 310189251Ssam void *data; /* A place to hang my data */ 311189251Ssam} PkgNode; 312189251Ssamtypedef PkgNode *PkgNodePtr; 313189251Ssam 314189251Ssam/* A single package */ 315189251Ssamtypedef struct _indexEntry { /* A single entry in an INDEX file */ 316189251Ssam char *name; /* name */ 317189251Ssam char *path; /* full path to port */ 318189251Ssam char *prefix; /* port prefix */ 319189251Ssam char *comment; /* one line description */ 320189251Ssam char *descrfile; /* path to description file */ 321189251Ssam char *deps; /* packages this depends on */ 322189251Ssam int depc; /* how many depend on me */ 323189251Ssam int installed; /* indicates if it is installed */ 324189251Ssam char *maintainer; /* maintainer */ 325189251Ssam} IndexEntry; 326189251Ssamtypedef IndexEntry *IndexEntryPtr; 327189251Ssam 328189251Ssamtypedef int (*commandFunc)(char *key, void *data); 329189251Ssam 330189251Ssam#define HOSTNAME_FIELD_LEN 128 331189251Ssam#define IPADDR_FIELD_LEN 16 332189251Ssam#define EXTRAS_FIELD_LEN 128 333189251Ssam 334189251Ssam/* This is the structure that Network devices carry around in their private, erm, structures */ 335189251Ssamtypedef struct _devPriv { 336189251Ssam int use_rtsol; 337189251Ssam int use_dhcp; 338189251Ssam char ipaddr[IPADDR_FIELD_LEN]; 339189251Ssam char netmask[IPADDR_FIELD_LEN]; 340189251Ssam char extras[EXTRAS_FIELD_LEN]; 341189251Ssam} DevInfo; 342189251Ssam 343189251Ssam 344189251Ssam/*** Externs ***/ 345189251Ssamextern jmp_buf BailOut; /* Used to get the heck out */ 346189251Ssamextern int DebugFD; /* Where diagnostic output goes */ 347189251Ssamextern Boolean Fake; /* Don't actually modify anything - testing */ 348189251Ssamextern Boolean SystemWasInstalled; /* Did we install it? */ 349189251Ssamextern Boolean RunningAsInit; /* Are we running stand-alone? */ 350189251Ssamextern Boolean DialogActive; /* Is the dialog() stuff up? */ 351189251Ssamextern Boolean ColorDisplay; /* Are we on a color display? */ 352189251Ssamextern Boolean OnVTY; /* On a syscons VTY? */ 353189251Ssamextern Variable *VarHead; /* The head of the variable chain */ 354189251Ssamextern Device *mediaDevice; /* Where we're getting our distribution from */ 355189251Ssamextern unsigned int Dists; /* Which distributions we want */ 356189251Ssamextern unsigned int CRYPTODists; /* Which naughty distributions we want */ 357189251Ssamextern unsigned int SrcDists; /* Which src distributions we want */ 358189251Ssamextern unsigned int XF86Dists; /* Which XFree86 dists we want */ 359189251Ssamextern unsigned int XF86ServerDists; /* The XFree86 servers we want */ 360189251Ssamextern unsigned int XF86FontDists; /* The XFree86 fonts we want */ 361189251Ssamextern int BootMgr; /* Which boot manager to use */ 362189251Ssamextern int StatusLine; /* Where to print our status messages */ 363189251Ssamextern DMenu MenuInitial; /* Initial installation menu */ 364189251Ssamextern DMenu MenuFixit; /* Fixit repair menu */ 365189251Ssamextern DMenu MenuMBRType; /* Type of MBR to write on the disk */ 366189251Ssamextern DMenu MenuConfigure; /* Final configuration menu */ 367189251Ssamextern DMenu MenuDocumentation; /* Documentation menu */ 368189251Ssamextern DMenu MenuFTPOptions; /* FTP Installation options */ 369189251Ssamextern DMenu MenuIndex; /* Index menu */ 370189251Ssamextern DMenu MenuOptions; /* Installation options */ 371189251Ssamextern DMenu MenuOptionsLanguage; /* Language options menu */ 372189251Ssamextern DMenu MenuMedia; /* Media type menu */ 373189251Ssamextern DMenu MenuMouse; /* Mouse type menu */ 374189251Ssamextern DMenu MenuMediaCDROM; /* CDROM media menu */ 375189251Ssamextern DMenu MenuMediaDOS; /* DOS media menu */ 376189251Ssamextern DMenu MenuMediaFloppy; /* Floppy media menu */ 377189251Ssamextern DMenu MenuMediaFTP; /* FTP media menu */ 378189251Ssamextern DMenu MenuMediaTape; /* Tape media menu */ 379189251Ssamextern DMenu MenuNetworkDevice; /* Network device menu */ 380189251Ssamextern DMenu MenuNTP; /* NTP time server menu */ 381189251Ssamextern DMenu MenuSecurityProfile; /* Security profile menu */ 382189251Ssamextern DMenu MenuStartup; /* Startup services menu */ 383189251Ssamextern DMenu MenuSyscons; /* System console configuration menu */ 384189251Ssamextern DMenu MenuSysconsFont; /* System console font configuration menu */ 385189251Ssamextern DMenu MenuSysconsKeymap; /* System console keymap configuration menu */ 386189251Ssamextern DMenu MenuSysconsKeyrate; /* System console keyrate configuration menu */ 387189251Ssamextern DMenu MenuSysconsSaver; /* System console saver configuration menu */ 388189251Ssamextern DMenu MenuSysconsScrnmap; /* System console screenmap configuration menu */ 389189251Ssamextern DMenu MenuNetworking; /* Network configuration menu */ 390189251Ssamextern DMenu MenuInstallCustom; /* Custom Installation menu */ 391189251Ssamextern DMenu MenuDistributions; /* Distribution menu */ 392189251Ssamextern DMenu MenuDiskDevices; /* Disk type devices */ 393189251Ssamextern DMenu MenuSubDistributions; /* Custom distribution menu */ 394189251Ssamextern DMenu MenuSrcDistributions; /* Source distribution menu */ 395189251Ssamextern DMenu MenuXF86; /* XFree86 main menu */ 396189251Ssamextern DMenu MenuXF86Select; /* XFree86 distribution selection menu */ 397189251Ssamextern DMenu MenuXF86SelectCore; /* XFree86 core distribution menu */ 398189251Ssamextern DMenu MenuXF86SelectServer; /* XFree86 server distribution menu */ 399189251Ssamextern DMenu MenuXF86SelectPC98Server; /* XFree86 server distribution menu */ 400189251Ssamextern DMenu MenuXF86SelectFonts; /* XFree86 font selection menu */ 401189251Ssamextern DMenu MenuXF86SelectFonts; /* XFree86 font selection menu */ 402189251Ssamextern DMenu MenuXDesktops; /* Disk devices menu */ 403189251Ssamextern DMenu MenuHTMLDoc; /* HTML Documentation menu */ 404189251Ssamextern DMenu MenuUsermgmt; /* User management menu */ 405189251Ssamextern DMenu MenuFixit; /* Fixit floppy/CDROM/shell menu */ 406189251Ssamextern DMenu MenuXF86Config; /* Select XFree86 configuration type */ 407189251Ssamextern int FixItMode; /* FixItMode starts shell onc urrent device (ie Serial port) */ 408189251Ssamextern const char * StartName; /* Which name we were started as */ 409189251Ssam 410189251Ssam/* Stuff from libdialog which isn't properly declared outside */ 411189251Ssamextern void display_helpfile(void); 412189251Ssamextern void display_helpline(WINDOW *w, int y, int width); 413189251Ssam 414189251Ssam/*** Prototypes ***/ 415189251Ssam 416189251Ssam/* anonFTP.c */ 417189251Ssamextern int configAnonFTP(dialogMenuItem *self); 418189251Ssam 419189251Ssam/* cdrom.c */ 420189251Ssamextern Boolean mediaInitCDROM(Device *dev); 421189251Ssamextern FILE *mediaGetCDROM(Device *dev, char *file, Boolean probe); 422189251Ssamextern void mediaShutdownCDROM(Device *dev); 423189251Ssam 424189251Ssam/* command.c */ 425189251Ssamextern void command_clear(void); 426189251Ssamextern void command_sort(void); 427189251Ssamextern void command_execute(void); 428189251Ssamextern void command_shell_add(char *key, char *fmt, ...) __printflike(2, 3); 429189251Ssamextern void command_func_add(char *key, commandFunc func, void *data); 430189251Ssam 431189251Ssam/* config.c */ 432189251Ssamextern void configEnvironmentRC_conf(void); 433189251Ssamextern void configEnvironmentResolv(char *config); 434189251Ssamextern void configRC_conf(void); 435189251Ssamextern int configFstab(dialogMenuItem *self); 436189251Ssamextern int configRC(dialogMenuItem *self); 437252726Srpauloextern int configResolv(dialogMenuItem *self); 438189251Ssamextern int configPackages(dialogMenuItem *self); 439189251Ssamextern int configSaver(dialogMenuItem *self); 440189251Ssamextern int configSaverTimeout(dialogMenuItem *self); 441189251Ssamextern int configLinux(dialogMenuItem *self); 442189251Ssamextern int configNTP(dialogMenuItem *self); 443189251Ssamextern int configUsers(dialogMenuItem *self); 444189251Ssamextern int configXSetup(dialogMenuItem *self); 445189251Ssamextern int configXDesktop(dialogMenuItem *self); 446189251Ssamextern int configRouter(dialogMenuItem *self); 447189251Ssamextern int configPCNFSD(dialogMenuItem *self); 448189251Ssamextern int configNFSServer(dialogMenuItem *self); 449189251Ssamextern int configWriteRC_conf(dialogMenuItem *self); 450189251Ssamextern int configSecurityProfile(dialogMenuItem *self); 451189251Ssamextern int configSecurityFascist(dialogMenuItem *self); 452189251Ssamextern int configSecurityHigh(dialogMenuItem *self); 453189251Ssamextern int configSecurityModerate(dialogMenuItem *self); 454189251Ssamextern int configSecurityLiberal(dialogMenuItem *self); 455189251Ssam 456189251Ssam/* crc.c */ 457189251Ssamextern int crc(int, unsigned long *, unsigned long *); 458189251Ssam 459189251Ssam/* devices.c */ 460189251Ssamextern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)(dialogMenuItem *d), 461189251Ssam int (*check)(dialogMenuItem *d)); 462189251Ssamextern void deviceGetAll(void); 463189251Ssamextern void deviceReset(void); 464189251Ssamextern void deviceRescan(void); 465189251Ssamextern Device **deviceFind(char *name, DeviceType type); 466189251Ssamextern Device **deviceFindDescr(char *name, char *desc, DeviceType class); 467189251Ssamextern int deviceCount(Device **devs); 468189251Ssamextern Device *new_device(char *name); 469189251Ssamextern Device *deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled, 470189251Ssam Boolean (*init)(Device *mediadev), 471189251Ssam FILE * (*get)(Device *dev, char *file, Boolean probe), 472189251Ssam void (*shutDown)(Device *mediadev), 473189251Ssam void *private); 474189251Ssamextern Boolean dummyInit(Device *dev); 475189251Ssamextern FILE *dummyGet(Device *dev, char *dist, Boolean probe); 476189251Ssamextern void dummyShutdown(Device *dev); 477189251Ssam 478189251Ssam/* dhcp.c */ 479189251Ssamextern int dhcpParseLeases(char *file, char *hostname, char *domain, char *nameserver, 480189251Ssam char *ipaddr, char *gateway, char *netmask); 481189251Ssam 482189251Ssam/* disks.c */ 483189251Ssamextern int diskPartitionEditor(dialogMenuItem *self); 484189251Ssamextern int diskPartitionWrite(dialogMenuItem *self); 485189251Ssamextern int diskGetSelectCount(Device ***devs); 486189251Ssamextern void diskPartition(Device *dev); 487189251Ssam 488189251Ssam/* dispatch.c */ 489189251Ssamextern int dispatchCommand(char *command); 490189251Ssamextern int dispatch_load_floppy(dialogMenuItem *self); 491189251Ssamextern int dispatch_load_file_int(int); 492189251Ssamextern int dispatch_load_file(dialogMenuItem *self); 493189251Ssam 494189251Ssam 495189251Ssam/* dist.c */ 496252726Srpauloextern int distReset(dialogMenuItem *self); 497252726Srpauloextern int distConfig(dialogMenuItem *self); 498252726Srpauloextern int distSetCustom(dialogMenuItem *self); 499252726Srpauloextern int distUnsetCustom(dialogMenuItem *self); 500252726Srpauloextern int distSetDeveloper(dialogMenuItem *self); 501252726Srpauloextern int distSetXDeveloper(dialogMenuItem *self); 502252726Srpauloextern int distSetKernDeveloper(dialogMenuItem *self); 503252726Srpauloextern int distSetXKernDeveloper(dialogMenuItem *self); 504189251Ssamextern int distSetUser(dialogMenuItem *self); 505189251Ssamextern int distSetXUser(dialogMenuItem *self); 506189251Ssamextern int distSetMinimum(dialogMenuItem *self); 507189251Ssamextern int distSetEverything(dialogMenuItem *self); 508189251Ssamextern int distSetSrc(dialogMenuItem *self); 509189251Ssamextern int distSetXF86(dialogMenuItem *self); 510189251Ssamextern int distExtractAll(dialogMenuItem *self); 511189251Ssam 512189251Ssam/* dmenu.c */ 513189251Ssamextern int dmenuDisplayFile(dialogMenuItem *tmp); 514189251Ssamextern int dmenuSubmenu(dialogMenuItem *tmp); 515189251Ssamextern int dmenuSystemCommand(dialogMenuItem *tmp); 516189251Ssamextern int dmenuSystemCommandBox(dialogMenuItem *tmp); 517189251Ssamextern int dmenuExit(dialogMenuItem *tmp); 518189251Ssamextern int dmenuISetVariable(dialogMenuItem *tmp); 519189251Ssamextern int dmenuSetVariable(dialogMenuItem *tmp); 520189251Ssamextern int dmenuSetKmapVariable(dialogMenuItem *tmp); 521189251Ssamextern int dmenuSetVariables(dialogMenuItem *tmp); 522189251Ssamextern int dmenuToggleVariable(dialogMenuItem *tmp); 523189251Ssamextern int dmenuSetFlag(dialogMenuItem *tmp); 524189251Ssamextern int dmenuSetValue(dialogMenuItem *tmp); 525189251Ssamextern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max, Boolean buttons); 526189251Ssamextern Boolean dmenuOpenSimple(DMenu *menu, Boolean buttons); 527189251Ssamextern int dmenuVarCheck(dialogMenuItem *item); 528189251Ssamextern int dmenuVarsCheck(dialogMenuItem *item); 529189251Ssamextern int dmenuFlagCheck(dialogMenuItem *item); 530189251Ssamextern int dmenuRadioCheck(dialogMenuItem *item); 531189251Ssam 532189251Ssam/* doc.c */ 533252726Srpauloextern int docBrowser(dialogMenuItem *self); 534189251Ssamextern int docShowDocument(dialogMenuItem *self); 535189251Ssam 536252726Srpaulo/* dos.c */ 537252726Srpauloextern Boolean mediaCloseDOS(Device *dev, FILE *fp); 538189251Ssamextern Boolean mediaInitDOS(Device *dev); 539189251Ssamextern FILE *mediaGetDOS(Device *dev, char *file, Boolean probe); 540189251Ssamextern void mediaShutdownDOS(Device *dev); 541252726Srpaulo 542189251Ssam/* floppy.c */ 543189251Ssamextern int getRootFloppy(void); 544189251Ssamextern Boolean mediaInitFloppy(Device *dev); 545189251Ssamextern FILE *mediaGetFloppy(Device *dev, char *file, Boolean probe); 546189251Ssamextern void mediaShutdownFloppy(Device *dev); 547252726Srpaulo 548189251Ssam/* ftp_strat.c */ 549189251Ssamextern Boolean mediaCloseFTP(Device *dev, FILE *fp); 550189251Ssamextern Boolean mediaInitFTP(Device *dev); 551189251Ssamextern FILE *mediaGetFTP(Device *dev, char *file, Boolean probe); 552189251Ssamextern void mediaShutdownFTP(Device *dev); 553189251Ssam 554189251Ssam/* http.c */ 555189251Ssamextern Boolean mediaInitHTTP(Device *dev); 556189251Ssamextern FILE *mediaGetHTTP(Device *dev, char *file, Boolean probe); 557189251Ssam 558189251Ssam/* globals.c */ 559189251Ssamextern void globalsInit(void); 560189251Ssam 561189251Ssam/* index.c */ 562189251Ssamint index_read(FILE *fp, PkgNodePtr papa); 563189251Ssamint index_menu(PkgNodePtr root, PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll); 564189251Ssamvoid index_init(PkgNodePtr top, PkgNodePtr plist); 565189251Ssamvoid index_node_free(PkgNodePtr top, PkgNodePtr plist); 566189251Ssamvoid index_sort(PkgNodePtr top); 567189251Ssamvoid index_print(PkgNodePtr top, int level); 568189251Ssamint index_extract(Device *dev, PkgNodePtr top, PkgNodePtr who, Boolean depended); 569189251Ssamint index_initialize(char *path); 570189251SsamPkgNodePtr index_search(PkgNodePtr top, char *str, PkgNodePtr *tp); 571189251Ssam 572189251Ssam/* install.c */ 573189251Ssamextern Boolean checkLabels(Boolean whinge, Chunk **rdev, Chunk **sdev, Chunk **udev, Chunk **vdev); 574189251Ssamextern int installCommit(dialogMenuItem *self); 575189251Ssamextern int installCustomCommit(dialogMenuItem *self); 576189251Ssamextern int installExpress(dialogMenuItem *self); 577189251Ssamextern int installStandard(dialogMenuItem *self); 578189251Ssamextern int installFixitHoloShell(dialogMenuItem *self); 579189251Ssamextern int installFixitCDROM(dialogMenuItem *self); 580189251Ssamextern int installFixitFloppy(dialogMenuItem *self); 581189251Ssamextern int installFixupBin(dialogMenuItem *self); 582189251Ssamextern int installFixupXFree(dialogMenuItem *self); 583189251Ssamextern int installUpgrade(dialogMenuItem *self); 584189251Ssamextern int installFilesystems(dialogMenuItem *self); 585189251Ssamextern int installVarDefaults(dialogMenuItem *self); 586189251Ssamextern void installEnvironment(void); 587189251Ssamextern int installX11package(dialogMenuItem *self); 588189251Ssamextern Boolean copySelf(void); 589189251Ssam 590189251Ssam/* kget.c */ 591189251Ssamextern int kget(char *out); 592189251Ssam 593189251Ssam/* keymap.c */ 594189251Ssamextern int loadKeymap(const char *lang); 595189251Ssam 596189251Ssam/* label.c */ 597189251Ssamextern int diskLabelEditor(dialogMenuItem *self); 598189251Ssamextern int diskLabelCommit(dialogMenuItem *self); 599189251Ssam 600189251Ssam/* makedevs.c (auto-generated) */ 601189251Ssamextern const char termcap_ansi[]; 602189251Ssamextern const char termcap_vt100[]; 603189251Ssamextern const char termcap_cons25w[]; 604189251Ssamextern const char termcap_cons25[]; 605189251Ssamextern const char termcap_cons25_m[]; 606189251Ssamextern const char termcap_cons25r[]; 607189251Ssamextern const char termcap_cons25r_m[]; 608189251Ssamextern const char termcap_cons25l1[]; 609189251Ssamextern const char termcap_cons25l1_m[]; 610189251Ssamextern const char termcap_xterm[]; 611189251Ssamextern const u_char font_iso_8x16[]; 612189251Ssamextern const u_char font_cp850_8x16[]; 613189251Ssamextern const u_char font_cp866_8x16[]; 614189251Ssamextern const u_char koi8_r2cp866[]; 615189251Ssamextern u_char default_scrnmap[]; 616189251Ssam 617189251Ssam/* media.c */ 618189251Ssamextern char *cpioVerbosity(void); 619189251Ssamextern void mediaClose(void); 620189251Ssamextern int mediaTimeout(void); 621189251Ssamextern int mediaSetCDROM(dialogMenuItem *self); 622189251Ssamextern int mediaSetFloppy(dialogMenuItem *self); 623189251Ssamextern int mediaSetDOS(dialogMenuItem *self); 624189251Ssamextern int mediaSetTape(dialogMenuItem *self); 625189251Ssamextern int mediaSetFTP(dialogMenuItem *self); 626189251Ssamextern int mediaSetFTPActive(dialogMenuItem *self); 627189251Ssamextern int mediaSetFTPPassive(dialogMenuItem *self); 628189251Ssamextern int mediaSetHTTP(dialogMenuItem *self); 629189251Ssamextern int mediaSetUFS(dialogMenuItem *self); 630189251Ssamextern int mediaSetNFS(dialogMenuItem *self); 631189251Ssamextern int mediaSetFTPUserPass(dialogMenuItem *self); 632189251Ssamextern int mediaSetCPIOVerbosity(dialogMenuItem *self); 633189251Ssamextern int mediaGetType(dialogMenuItem *self); 634189251Ssamextern Boolean mediaExtractDist(char *dir, char *dist, FILE *fp); 635189251Ssamextern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic); 636189251Ssamextern Boolean mediaExtractDistEnd(int zpid, int cpid); 637189251Ssamextern Boolean mediaVerify(void); 638189251Ssamextern FILE *mediaGenericGet(char *base, const char *file); 639189251Ssam 640189251Ssam/* misc.c */ 641189251Ssamextern Boolean file_readable(char *fname); 642189251Ssamextern Boolean file_executable(char *fname); 643189251Ssamextern Boolean directory_exists(const char *dirname); 644189251Ssamextern char *root_bias(char *path); 645189251Ssamextern char *itoa(int value); 646189251Ssamextern char *string_concat(char *p1, char *p2); 647189251Ssamextern char *string_concat3(char *p1, char *p2, char *p3); 648189251Ssamextern char *string_prune(char *str); 649189251Ssamextern char *string_skipwhite(char *str); 650189251Ssamextern char *string_copy(char *s1, char *s2); 651189251Ssamextern char *pathBaseName(const char *path); 652189251Ssamextern void safe_free(void *ptr); 653189251Ssamextern void *safe_malloc(size_t size); 654189251Ssamextern void *safe_realloc(void *orig, size_t size); 655189251Ssamextern dialogMenuItem *item_add(dialogMenuItem *list, char *prompt, char *title, 656189251Ssam int (*checked)(dialogMenuItem *self), 657189251Ssam int (*fire)(dialogMenuItem *self), 658189251Ssam void (*selected)(dialogMenuItem *self, int is_selected), 659189251Ssam void *data, int aux, int *curr, int *max); 660189251Ssamextern void items_free(dialogMenuItem *list, int *curr, int *max); 661189251Ssamextern int Mkdir(char *); 662189251Ssamextern int Mount(char *, void *data); 663189251Ssamextern WINDOW *openLayoutDialog(char *helpfile, char *title, int x, int y, int width, int height); 664189251Ssamextern ComposeObj *initLayoutDialog(WINDOW *win, Layout *layout, int x, int y, int *max); 665189251Ssamextern int layoutDialogLoop(WINDOW *win, Layout *layout, ComposeObj **obj, 666189251Ssam int *n, int max, int *cbutton, int *cancel); 667189251Ssam 668189251Ssamextern WINDOW *savescr(void); 669189251Ssamextern void restorescr(WINDOW *w); 670189251Ssamextern char *sstrncpy(char *dst, const char *src, int size); 671189251Ssam 672189251Ssam/* modules.c */ 673189251Ssamextern void moduleInitialize(void); 674189251Ssam 675189251Ssam/* mouse.c */ 676189251Ssamextern int mousedTest(dialogMenuItem *self); 677189251Ssamextern int mousedDisable(dialogMenuItem *self); 678189251Ssamextern int setMouseFlags(dialogMenuItem *self); 679189251Ssam 680189251Ssam/* msg.c */ 681189251Ssamextern Boolean isDebug(void); 682189251Ssamextern void msgInfo(char *fmt, ...) __printf0like(1, 2); 683189251Ssamextern void msgYap(char *fmt, ...) __printflike(1, 2); 684189251Ssamextern void msgWarn(char *fmt, ...) __printflike(1, 2); 685189251Ssamextern void msgDebug(char *fmt, ...) __printflike(1, 2); 686189251Ssamextern void msgError(char *fmt, ...) __printflike(1, 2); 687189251Ssamextern void msgFatal(char *fmt, ...) __printflike(1, 2); 688189251Ssamextern void msgConfirm(char *fmt, ...) __printflike(1, 2); 689189251Ssamextern void msgNotify(char *fmt, ...) __printflike(1, 2); 690189251Ssamextern void msgWeHaveOutput(char *fmt, ...) __printflike(1, 2); 691189251Ssamextern int msgYesNo(char *fmt, ...) __printflike(1, 2); 692189251Ssamextern int msgNoYes(char *fmt, ...) __printflike(1, 2); 693189251Ssamextern char *msgGetInput(char *buf, char *fmt, ...) __printflike(2, 3); 694189251Ssamextern int msgSimpleConfirm(char *); 695189251Ssamextern int msgSimpleNotify(char *); 696189251Ssam 697189251Ssam/* network.c */ 698189251Ssamextern Boolean mediaInitNetwork(Device *dev); 699189251Ssamextern void mediaShutdownNetwork(Device *dev); 700189251Ssam 701189251Ssam/* nfs.c */ 702189251Ssamextern Boolean mediaInitNFS(Device *dev); 703189251Ssamextern FILE *mediaGetNFS(Device *dev, char *file, Boolean probe); 704189251Ssamextern void mediaShutdownNFS(Device *dev); 705189251Ssam 706189251Ssam/* options.c */ 707189251Ssamextern int optionsEditor(dialogMenuItem *self); 708189251Ssam 709189251Ssam/* package.c */ 710189251Ssamextern int packageAdd(dialogMenuItem *self); 711189251Ssamextern int package_add(char *name); 712189251Ssamextern int package_extract(Device *dev, char *name, Boolean depended); 713189251Ssamextern Boolean package_exists(char *name); 714189251Ssam 715189251Ssam/* pccard.c */ 716189251Ssamextern void pccardInitialize(void); 717189251Ssam 718189251Ssam/* system.c */ 719189251Ssamextern void systemInitialize(int argc, char **argv); 720189251Ssamextern void systemShutdown(int status); 721189251Ssamextern int execExecute(char *cmd, char *name); 722189251Ssamextern int systemExecute(char *cmd); 723189251Ssamextern void systemSuspendDialog(void); 724189251Ssamextern void systemResumeDialog(void); 725189251Ssamextern int systemDisplayHelp(char *file); 726189251Ssamextern char *systemHelpFile(char *file, char *buf); 727189251Ssamextern void systemChangeFont(const u_char font[]); 728189251Ssamextern void systemChangeLang(char *lang); 729189251Ssamextern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mono, const u_char m_termcap[]); 730189251Ssamextern void systemChangeScreenmap(const u_char newmap[]); 731189251Ssamextern void systemCreateHoloshell(void); 732189251Ssamextern int vsystem(char *fmt, ...) __printflike(1, 2); 733189251Ssam 734189251Ssam/* tape.c */ 735189251Ssamextern char *mediaTapeBlocksize(void); 736189251Ssamextern Boolean mediaInitTape(Device *dev); 737189251Ssamextern FILE *mediaGetTape(Device *dev, char *file, Boolean probe); 738189251Ssamextern void mediaShutdownTape(Device *dev); 739189251Ssam 740189251Ssam/* tcpip.c */ 741189251Ssamextern int tcpOpenDialog(Device *dev); 742189251Ssamextern int tcpMenuSelect(dialogMenuItem *self); 743189251Ssamextern Device *tcpDeviceSelect(void); 744189251Ssam 745189251Ssam/* termcap.c */ 746189251Ssamextern int set_termcap(void); 747189251Ssam 748189251Ssam/* ufs.c */ 749189251Ssamextern void mediaShutdownUFS(Device *dev); 750189251Ssamextern Boolean mediaInitUFS(Device *dev); 751189251Ssamextern FILE *mediaGetUFS(Device *dev, char *file, Boolean probe); 752189251Ssam 753189251Ssam/* usb.c */ 754189251Ssamextern void usbInitialize(void); 755189251Ssam 756189251Ssam/* user.c */ 757189251Ssamextern int userAddGroup(dialogMenuItem *self); 758189251Ssamextern int userAddUser(dialogMenuItem *self); 759189251Ssam 760189251Ssam/* variable.c */ 761189251Ssamextern void variable_set(char *var, int dirty); 762189251Ssamextern void variable_set2(char *name, char *value, int dirty); 763189251Ssamextern char *variable_get(char *var); 764189251Ssamextern int variable_cmp(char *var, char *value); 765189251Ssamextern void variable_unset(char *var); 766189251Ssamextern char *variable_get_value(char *var, char *prompt, int dirty); 767189251Ssamextern int variable_check(char *data); 768189251Ssamextern int dump_variables(dialogMenuItem *self); 769189251Ssam 770189251Ssam/* wizard.c */ 771189251Ssamextern void slice_wizard(Disk *d); 772189251Ssam 773189251Ssam/* 774189251Ssam * Macros. Please find a better place for us! 775189251Ssam */ 776189251Ssam#define DEVICE_INIT(d) ((d) != NULL ? (d)->init((d)) : NULL) 777189251Ssam#define DEVICE_GET(d, b, f) ((d) != NULL ? (d)->get((d), (b), (f)) : NULL) 778189251Ssam#define DEVICE_SHUTDOWN(d) ((d) != NULL ? (d)->shutdown((d)) : (void)0) 779189251Ssam 780189251Ssam#endif 781189251Ssam/* _SYSINSTALL_H_INCLUDE */ 782189251Ssam