sysinstall.h revision 124067
128219Smsmith/* 255939Snsouch * The new sysinstall program. 328219Smsmith * 428219Smsmith * This is probably the last attempt in the `sysinstall' line, the next 528219Smsmith * generation being slated to essentially a complete rewrite. 628219Smsmith * 728219Smsmith * Copyright (c) 1995 828219Smsmith * Jordan Hubbard. All rights reserved. 928219Smsmith * 1028219Smsmith * Redistribution and use in source and binary forms, with or without 1128219Smsmith * modification, are permitted provided that the following conditions 1228219Smsmith * are met: 1328219Smsmith * 1. Redistributions of source code must retain the above copyright 1428219Smsmith * notice, this list of conditions and the following disclaimer, 1528219Smsmith * verbatim and that no modifications are made prior to this 1628219Smsmith * point in the file. 1728219Smsmith * 2. Redistributions in binary form must reproduce the above copyright 1828219Smsmith * notice, this list of conditions and the following disclaimer in the 1928219Smsmith * documentation and/or other materials provided with the distribution. 2028219Smsmith * 2128219Smsmith * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND 2228219Smsmith * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2328219Smsmith * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2428219Smsmith * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE 2528219Smsmith * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2650477Speter * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2728219Smsmith * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION) 2828219Smsmith * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2955939Snsouch * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3055939Snsouch * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3128219Smsmith * SUCH DAMAGE. 3228219Smsmith * 3355939Snsouch * $FreeBSD: head/usr.sbin/sysinstall/sysinstall.h 124067 2004-01-02 08:31:00Z obrien $ 3455939Snsouch */ 3528219Smsmith 3628219Smsmith#ifndef _SYSINSTALL_H_INCLUDE 3742475Snsouch#define _SYSINSTALL_H_INCLUDE 3832178Smsmith 3928219Smsmith#include <sys/types.h> 4042475Snsouch#include <sys/wait.h> 4155939Snsouch#include <errno.h> 4255939Snsouch#include <setjmp.h> 4355939Snsouch#include <stdio.h> 4442475Snsouch#include <stdlib.h> 4528219Smsmith#include <string.h> 4642475Snsouch#include <unistd.h> 4742475Snsouch#include <dialog.h> 4842475Snsouch#include "ui_objects.h" 4942475Snsouch#include "dir.h" 5042475Snsouch#include "colors.h" 5142475Snsouch#include "libdisk.h" 5232178Smsmith#include "dist.h" 5328219Smsmith 5455939Snsouch/*** Defines ***/ 5555939Snsouch 5655939Snsouch#if defined(__i386__) || defined(__alpha__) || defined(__amd64__) 5755939Snsouch#define WITH_SYSCONS 5842475Snsouch#define WITH_MICE 5932178Smsmith#endif 6028257Smsmith 6128257Smsmith#if defined(__i386__) || defined(__amd64__) 6232178Smsmith#define WITH_SLICES 6332178Smsmith#endif 6432178Smsmith 6542475Snsouch#if defined(__i386__) || defined(__alpha__) 6628257Smsmith#define WITH_LINUX 6742475Snsouch#endif 6842475Snsouch 6942475Snsouch#if defined(PC98) 7042475Snsouch#define PCCARD_ARCH 1 /* Support PCCARD installations */ 7155939Snsouch#endif 7255939Snsouch 7328257Smsmith/* device limits */ 7428257Smsmith#define DEV_NAME_MAX 128 /* The maximum length of a device name */ 7555939Snsouch#define DEV_MAX 100 /* The maximum number of devices we'll deal with */ 7655939Snsouch#define INTERFACE_MAX 50 /* Maximum number of network interfaces we'll deal with */ 7755939Snsouch#define IO_ERROR -2 /* Status code for I/O error rather than normal EOF */ 7855939Snsouch 7955939Snsouch/* Number of seconds to wait for data to come off even the slowest media */ 8055939Snsouch#define MEDIA_TIMEOUT 300 8128219Smsmith 8255939Snsouch/* 8328219Smsmith * I make some pretty gross assumptions about having a max of 50 chunks 8428219Smsmith * total - 8 slices and 42 partitions. I can't easily display many more 8528219Smsmith * than that on the screen at once! 8628219Smsmith * 8742475Snsouch * For 2.1 I'll revisit this and try to make it more dynamic, but since 8842475Snsouch * this will catch 99.99% of all possible cases, I'm not too worried. 8928219Smsmith */ 9028261Smsmith#define MAX_CHUNKS 40 9147625Sphk 9247625Sphk/* Internal environment variable names */ 9347625Sphk#define DISK_PARTITIONED "_diskPartitioned" 9447625Sphk#define DISK_LABELLED "_diskLabelled" 9547625Sphk#define DISK_SELECTED "_diskSelected" 9647625Sphk#define SYSTEM_STATE "_systemState" 9747625Sphk#define RUNNING_ON_ROOT "_runningOnRoot" 9847625Sphk#define TCP_CONFIGURED "_tcpConfigured" 9947625Sphk 10047625Sphk/* Ones that can be tweaked from config files */ 10147625Sphk#define VAR_BLANKTIME "blanktime" 10247625Sphk#define VAR_BOOTMGR "bootManager" 10347625Sphk#define VAR_BROWSER_BINARY "browserBinary" 10447625Sphk#define VAR_BROWSER_PACKAGE "browserPackage" 10547625Sphk#define VAR_CPIO_VERBOSITY "cpioVerbose" 10647625Sphk#define VAR_DEBUG "debug" 10728219Smsmith#define VAR_DESKSTYLE "_deskStyle" 10842475Snsouch#define VAR_DISK "disk" 10942475Snsouch#define VAR_DISKINTERACTIVE "diskInteractive" 11042475Snsouch#define VAR_DISTS "dists" 11155939Snsouch#define VAR_DIST_MAIN "distMain" 11242475Snsouch#define VAR_DIST_CRYPTO "distCRYPTO" 11342475Snsouch#define VAR_DIST_SRC "distSRC" 11455939Snsouch#define VAR_DIST_X11 "distX11" 11542475Snsouch#define VAR_DIST_XSERVER "distXserver" 11655939Snsouch#define VAR_DIST_XFONTS "distXfonts" 11755939Snsouch#define VAR_DEDICATE_DISK "dedicateDisk" 11842475Snsouch#define VAR_DOMAINNAME "domainname" 11942475Snsouch#define VAR_EDITOR "editor" 12042475Snsouch#define VAR_EXTRAS "ifconfig_" 12142475Snsouch#define VAR_COMMAND "command" 12242475Snsouch#define VAR_CONFIG_FILE "configFile" 12355939Snsouch#define VAR_FIXIT_TTY "fixitTty" 12442475Snsouch#define VAR_FTP_DIR "ftpDirectory" 12542475Snsouch#define VAR_FTP_PASS "ftpPass" 12655939Snsouch#define VAR_FTP_PATH "_ftpPath" 12742475Snsouch#define VAR_FTP_PORT "ftpPort" 12855939Snsouch#define VAR_FTP_STATE "ftpState" 12955939Snsouch#define VAR_FTP_USER "ftpUser" 13042475Snsouch#define VAR_FTP_HOST "ftpHost" 13142475Snsouch#define VAR_HTTP_PATH "_httpPath" 13242475Snsouch#define VAR_HTTP_PROXY "httpProxy" 13342475Snsouch#define VAR_HTTP_PORT "httpPort" 13442475Snsouch#define VAR_HTTP_HOST "httpHost" 13542475Snsouch#define VAR_HTTP_FTP_MODE "httpFtpMode" 13656455Speter#define VAR_GATEWAY "defaultrouter" 13756455Speter#define VAR_GEOMETRY "geometry" 13856455Speter#define VAR_HOSTNAME "hostname" 13956455Speter#define VAR_IFCONFIG "ifconfig_" 14056455Speter#define VAR_INSTALL_CFG "installConfig" 14156455Speter#define VAR_INSTALL_ROOT "installRoot" 14256455Speter#define VAR_IPADDR "ipaddr" 14328219Smsmith#define VAR_IPV6_ENABLE "ipv6_enable" 14455939Snsouch#define VAR_IPV6ADDR "ipv6addr" 14528219Smsmith#define VAR_KERN_SECURELEVEL "kern_securelevel" 14655939Snsouch#define VAR_KEYMAP "keymap" 14755939Snsouch#define VAR_LABEL "label" 14828219Smsmith#define VAR_LABEL_COUNT "labelCount" 14928219Smsmith#define VAR_LINUX_ENABLE "linux_enable" 15028219Smsmith#define VAR_MEDIA_TYPE "mediaType" 15155939Snsouch#define VAR_MEDIA_TIMEOUT "MEDIA_TIMEOUT" 15255939Snsouch#define VAR_MOUSED "moused_enable" 15355939Snsouch#define VAR_MOUSED_FLAGS "moused_flags" 15455939Snsouch#define VAR_MOUSED_PORT "moused_port" 15528219Smsmith#define VAR_MOUSED_TYPE "moused_type" 15628219Smsmith#define VAR_NAMESERVER "nameserver" 15755939Snsouch#define VAR_NETINTERACTIVE "netInteractive" 15855939Snsouch#define VAR_NETMASK "netmask" 15928219Smsmith#define VAR_NETWORK_DEVICE "netDev" 16055939Snsouch#define VAR_NEWFS_ARGS "newfsArgs" 16155939Snsouch#define VAR_NFS_PATH "nfs" 16255939Snsouch#define VAR_NFS_HOST "nfsHost" 16355939Snsouch#define VAR_NFS_V3 "nfs_use_v3" 16455939Snsouch#define VAR_NFS_TCP "nfs_use_tcp" 16555939Snsouch#define VAR_NFS_SECURE "nfs_reserved_port_only" 16655939Snsouch#define VAR_NFS_SERVER "nfs_server_enable" 16755939Snsouch#define VAR_NO_CONFIRM "noConfirm" 16855939Snsouch#define VAR_NO_ERROR "noError" 16928219Smsmith#define VAR_NO_HOLOSHELL "noHoloShell" 17055939Snsouch#define VAR_NO_INET6 "noInet6" 17155939Snsouch#define VAR_NO_WARN "noWarn" 17228219Smsmith#define VAR_NO_USR "noUsr" 17355939Snsouch#define VAR_NO_TMP "noTmp" 17455939Snsouch#define VAR_NO_HOME "noHome" 17555939Snsouch#define VAR_NONINTERACTIVE "nonInteractive" 17628219Smsmith#define VAR_NOVELL "novell" 17755939Snsouch#define VAR_OSF1_ENABLE "osf1_enable" 17855939Snsouch#define VAR_RPCBIND_ENABLE "rpcbind_enable" 17955939Snsouch#define VAR_NTPDATE_FLAGS "ntpdate_flags" 18028219Smsmith#define VAR_PACKAGE "package" 18155939Snsouch#define VAR_PARTITION "partition" 18228219Smsmith#define VAR_PCNFSD "pcnfsd" 18328219Smsmith#define VAR_PKG_TMPDIR "PKG_TMPDIR" 18442475Snsouch#define VAR_PORTS_PATH "ports" 18542475Snsouch#define VAR_PPP_ENABLE "ppp_enable" 18642475Snsouch#define VAR_PPP_PROFILE "ppp_profile" 18742475Snsouch#define VAR_RELNAME "releaseName" 18842475Snsouch#define VAR_ROOT_SIZE "rootSize" 18942475Snsouch#define VAR_ROUTER "router" 19042475Snsouch#define VAR_ROUTER_ENABLE "router_enable" 19142475Snsouch#define VAR_ROUTERFLAGS "router_flags" 19242475Snsouch#define VAR_SENDMAIL_ENABLE "sendmail_enable" 19342475Snsouch#define VAR_SERIAL_SPEED "serialSpeed" 19442475Snsouch#define VAR_SLOW_ETHER "slowEthernetCard" 19542475Snsouch#define VAR_SWAP_SIZE "swapSize" 19628219Smsmith#define VAR_TAPE_BLOCKSIZE "tapeBlocksize" 19755939Snsouch#define VAR_TRY_DHCP "tryDHCP" 19828219Smsmith#define VAR_TRY_RTSOL "tryRTSOL" 19942475Snsouch#define VAR_SKIP_PCCARD "skipPCCARD" 20055939Snsouch#define VAR_UFS_PATH "ufs" 20155939Snsouch#define VAR_USR_SIZE "usrSize" 20255939Snsouch#define VAR_VAR_SIZE "varSize" 20342475Snsouch#define VAR_TMP_SIZE "tmpSize" 20455939Snsouch#define VAR_HOME_SIZE "homeSize" 20542475Snsouch#define VAR_XF86_CONFIG "_xf86config" 20655939Snsouch#define VAR_TERM "TERM" 20742475Snsouch#define VAR_CONSTERM "_consterm" 20842475Snsouch 20942475Snsouch#define DEFAULT_TAPE_BLOCKSIZE "20" 21042475Snsouch 21142475Snsouch/* One MB worth of blocks */ 21255939Snsouch#define ONE_MEG 2048 21342475Snsouch#define ONE_GIG (ONE_MEG * 1024) 21442475Snsouch 21542475Snsouch/* Which selection attributes to use */ 21642475Snsouch#define ATTR_SELECTED (ColorDisplay ? item_selected_attr : item_attr) 21742475Snsouch#define ATTR_TITLE button_active_attr 21842475Snsouch 21942475Snsouch/* Handy strncpy() macro */ 22055939Snsouch#define SAFE_STRCPY(to, from) sstrncpy((to), (from), sizeof (to) - 1) 22142475Snsouch 22255939Snsouch/*** Types ***/ 22342475Snsouchtypedef int Boolean; 22442475Snsouchtypedef struct disk Disk; 22542475Snsouchtypedef struct chunk Chunk; 22655939Snsouch 22742475Snsouch/* Bitfields for menu options */ 22855939Snsouch#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */ 22942475Snsouch#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ 23042475Snsouch#define DMENU_CHECKLIST_TYPE 0x4 /* Multiple choice menu */ 23142475Snsouch#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */ 23242475Snsouch 23342475Snsouchtypedef struct _dmenu { 23442475Snsouch int type; /* What sort of menu we are */ 23542475Snsouch char *title; /* Our title */ 23642475Snsouch char *prompt; /* Our prompt */ 23742475Snsouch char *helpline; /* Line of help at bottom */ 23842475Snsouch char *helpfile; /* Help file for "F1" */ 23942475Snsouch#if (__STDC_VERSION__ >= 199901L) || (__GNUC__ >= 3) 24042475Snsouch dialogMenuItem items[]; /* Array of menu items */ 24142475Snsouch#elif __GNUC__ 24255977Speter dialogMenuItem items[0]; /* Array of menu items */ 24342475Snsouch#else 24455939Snsouch#error "Create hack for C89 and K&R compilers." 24555939Snsouch#endif 24642475Snsouch} DMenu; 24742475Snsouch 24842475Snsouch/* An rc.conf variable */ 24955939Snsouchtypedef struct _variable { 25042475Snsouch struct _variable *next; 25142475Snsouch char *name; 25228219Smsmith char *value; 25328219Smsmith int dirty; 25428219Smsmith} Variable; 25528219Smsmith 25628219Smsmith#define NO_ECHO_OBJ(type) ((type) | (DITEM_NO_ECHO << 16)) 25728219Smsmith#define TYPE_OF_OBJ(type) ((type) & 0xff) 25828257Smsmith#define ATTR_OF_OBJ(type) ((type) >> 16) 25955939Snsouch 26055939Snsouch/* A screen layout structure */ 26155939Snsouchtypedef struct _layout { 26232178Smsmith int y; /* x & Y co-ordinates */ 26328257Smsmith int x; 26455939Snsouch int len; /* The size of the dialog on the screen */ 26528257Smsmith int maxlen; /* How much the user can type in ... */ 26628257Smsmith char *prompt; /* The string for the prompt */ 26742475Snsouch char *help; /* The display for the help line */ 26855939Snsouch void *var; /* The var to set when this changes */ 26942475Snsouch int type; /* The type of the dialog to create */ 27042475Snsouch void *obj; /* The obj pointer returned by libdialog */ 27132178Smsmith} Layout; 27228257Smsmith 27342475Snsouchtypedef enum { 27455939Snsouch DEVICE_TYPE_NONE, 27555939Snsouch DEVICE_TYPE_DISK, 27655939Snsouch DEVICE_TYPE_FLOPPY, 27755939Snsouch DEVICE_TYPE_FTP, 27842475Snsouch DEVICE_TYPE_NETWORK, 27942475Snsouch DEVICE_TYPE_CDROM, 28042475Snsouch DEVICE_TYPE_TAPE, 28132178Smsmith DEVICE_TYPE_DOS, 28228219Smsmith DEVICE_TYPE_UFS, 28328219Smsmith DEVICE_TYPE_NFS, 28428219Smsmith DEVICE_TYPE_ANY, 28528219Smsmith DEVICE_TYPE_HTTP, 28628219Smsmith} DeviceType; 28732178Smsmith 28855939Snsouch/* CDROM mount codes */ 28955939Snsouch#define CD_UNMOUNTED 0 29055939Snsouch#define CD_ALREADY_MOUNTED 1 29132178Smsmith#define CD_WE_MOUNTED_IT 2 29242475Snsouch 29342475Snsouch/* A "device" from sysinstall's point of view */ 29442475Snsouchtypedef struct _device { 29542475Snsouch char name[DEV_NAME_MAX]; 29655939Snsouch char *description; 29742475Snsouch char *devname; 29855939Snsouch DeviceType type; 29942475Snsouch Boolean enabled; 30042475Snsouch Boolean (*init)(struct _device *dev); 30142475Snsouch FILE * (*get)(struct _device *dev, char *file, Boolean probe); 30242475Snsouch void (*shutdown)(struct _device *dev); 30342475Snsouch void *private; 30455939Snsouch unsigned int flags; 30542475Snsouch unsigned int volume; 30642475Snsouch} Device; 30742475Snsouch 30842475Snsouch/* Some internal representations of partitions */ 30955939Snsouchtypedef enum { 31055939Snsouch PART_NONE, 31155939Snsouch PART_SLICE, 31242475Snsouch PART_SWAP, 31342475Snsouch PART_FILESYSTEM, 31442475Snsouch PART_FAT, 31532178Smsmith PART_EFI 31628219Smsmith} PartType; 31728219Smsmith 31842475Snsouch#define NEWFS_UFS_CMD "newfs" 31942475Snsouch#define NEWFS_MSDOS_CMD "newfs_msdos" 32042475Snsouch 32142475Snsouchenum newfs_type { NEWFS_UFS, NEWFS_MSDOS, NEWFS_CUSTOM }; 32242475Snsouch#define NEWFS_UFS_STRING "UFS" 32342475Snsouch#define NEWFS_MSDOS_STRING "FAT" 32442475Snsouch#define NEWFS_CUSTOM_STRING "CST" 32542475Snsouch 32628219Smsmith/* The longest set of custom command line arguments we'll pass. */ 32742475Snsouch#define NEWFS_CMD_ARGS_MAX 256 32842475Snsouch 32942475Snsouchtypedef struct _part_info { 33042475Snsouch char mountpoint[FILENAME_MAX]; 33155939Snsouch 33255939Snsouch /* Is invocation of newfs desired? */ 33355939Snsouch Boolean do_newfs; 33442475Snsouch 33542475Snsouch enum newfs_type newfs_type; 33655939Snsouch union { 33742475Snsouch struct { 33855939Snsouch char user_options[NEWFS_CMD_ARGS_MAX]; 33942475Snsouch Boolean acls; /* unused */ 34042475Snsouch Boolean multilabel; /* unused */ 34142475Snsouch Boolean softupdates; 34242475Snsouch Boolean ufs1; 34342475Snsouch } newfs_ufs; 34442475Snsouch struct { 34555939Snsouch /* unused */ 34642475Snsouch } newfs_msdos; 34742475Snsouch struct { 34842475Snsouch char command[NEWFS_CMD_ARGS_MAX]; 34942475Snsouch } newfs_custom; 35042475Snsouch } newfs_data; 35142475Snsouch} PartInfo; 35242475Snsouch 35355939Snsouch/* An option */ 35442475Snsouchtypedef struct _opt { 35542475Snsouch char *name; 35642475Snsouch char *desc; 35742475Snsouch enum { OPT_IS_STRING, OPT_IS_INT, OPT_IS_FUNC, OPT_IS_VAR } type; 35842475Snsouch void *data; 35942475Snsouch void *aux; 36042475Snsouch char *(*check)(); 36142475Snsouch} Option; 36242475Snsouch 36342475Snsouch/* Weird index nodey things we use for keeping track of package information */ 36442475Snsouchtypedef enum { PACKAGE, PLACE } node_type; /* Types of nodes */ 36542475Snsouch 36642475Snsouchtypedef struct _pkgnode { /* A node in the reconstructed hierarchy */ 36742475Snsouch struct _pkgnode *next; /* My next sibling */ 36842475Snsouch node_type type; /* What am I? */ 36942475Snsouch char *name; /* My name */ 37042475Snsouch char *desc; /* My description (Hook) */ 37142475Snsouch struct _pkgnode *kids; /* My little children */ 37255939Snsouch void *data; /* A place to hang my data */ 37342475Snsouch} PkgNode; 37442475Snsouchtypedef PkgNode *PkgNodePtr; 37542475Snsouch 37642475Snsouch/* A single package */ 37742475Snsouchtypedef struct _indexEntry { /* A single entry in an INDEX file */ 37842475Snsouch char *name; /* name */ 37942475Snsouch char *path; /* full path to port */ 38042475Snsouch char *prefix; /* port prefix */ 38142475Snsouch char *comment; /* one line description */ 38242475Snsouch char *descrfile; /* path to description file */ 38342475Snsouch char *deps; /* packages this depends on */ 38442475Snsouch int depc; /* how many depend on me */ 38542475Snsouch int installed; /* indicates if it is installed */ 38642475Snsouch char *maintainer; /* maintainer */ 38742475Snsouch unsigned int volume; /* Volume of package */ 38842475Snsouch} IndexEntry; 38942475Snsouchtypedef IndexEntry *IndexEntryPtr; 39042475Snsouch 39142475Snsouchtypedef int (*commandFunc)(char *key, void *data); 39242475Snsouch 39342475Snsouch#define HOSTNAME_FIELD_LEN 128 39442475Snsouch#define IPADDR_FIELD_LEN 16 39542475Snsouch#define EXTRAS_FIELD_LEN 128 39642475Snsouch 39742475Snsouch/* This is the structure that Network devices carry around in their private, erm, structures */ 39842475Snsouchtypedef struct _devPriv { 39942475Snsouch int use_rtsol; 40042475Snsouch int use_dhcp; 40142475Snsouch char ipaddr[IPADDR_FIELD_LEN]; 40242475Snsouch char netmask[IPADDR_FIELD_LEN]; 40342475Snsouch char extras[EXTRAS_FIELD_LEN]; 40442475Snsouch} DevInfo; 40542475Snsouch 40642475Snsouch 40742475Snsouch/*** Externs ***/ 40842475Snsouchextern jmp_buf BailOut; /* Used to get the heck out */ 40942475Snsouchextern int DebugFD; /* Where diagnostic output goes */ 41042475Snsouchextern Boolean Fake; /* Don't actually modify anything - testing */ 41142475Snsouchextern Boolean Restarting; /* Are we restarting sysinstall? */ 41242475Snsouchextern Boolean SystemWasInstalled; /* Did we install it? */ 41342475Snsouchextern Boolean RunningAsInit; /* Are we running stand-alone? */ 41442475Snsouchextern Boolean DialogActive; /* Is the dialog() stuff up? */ 41555939Snsouchextern Boolean ColorDisplay; /* Are we on a color display? */ 41655939Snsouchextern Boolean OnVTY; /* On a syscons VTY? */ 41755939Snsouchextern Variable *VarHead; /* The head of the variable chain */ 41842475Snsouchextern Device *mediaDevice; /* Where we're getting our distribution from */ 41942475Snsouchextern unsigned int Dists; /* Which distributions we want */ 42042475Snsouchextern unsigned int CRYPTODists; /* Which naughty distributions we want */ 42142475Snsouchextern unsigned int SrcDists; /* Which src distributions we want */ 42242475Snsouchextern unsigned int XF86Dists; /* Which XFree86 dists we want */ 42342475Snsouchextern unsigned int XF86ServerDists; /* The XFree86 servers we want */ 42442475Snsouchextern unsigned int XF86FontDists; /* The XFree86 fonts we want */ 42542475Snsouchextern int BootMgr; /* Which boot manager to use */ 42642475Snsouchextern int StatusLine; /* Where to print our status messages */ 42742475Snsouchextern DMenu MenuInitial; /* Initial installation menu */ 42842475Snsouchextern DMenu MenuFixit; /* Fixit repair menu */ 42942475Snsouch#if defined(__i386__) || defined(__amd64__) 43042475Snsouch#ifdef PC98 43142475Snsouchextern DMenu MenuIPLType; /* Type of IPL to write on the disk */ 43255939Snsouch#else 43342475Snsouchextern DMenu MenuMBRType; /* Type of MBR to write on the disk */ 43442475Snsouch#endif 43542475Snsouch#endif 43642475Snsouchextern DMenu MenuConfigure; /* Final configuration menu */ 43742475Snsouchextern DMenu MenuDocumentation; /* Documentation menu */ 43842475Snsouchextern DMenu MenuFTPOptions; /* FTP Installation options */ 43942475Snsouchextern DMenu MenuIndex; /* Index menu */ 44042475Snsouchextern DMenu MenuOptions; /* Installation options */ 44155939Snsouchextern DMenu MenuOptionsLanguage; /* Language options menu */ 44242475Snsouchextern DMenu MenuKLD; /* Prototype KLD menu */ 44342475Snsouchextern DMenu MenuMedia; /* Media type menu */ 44442475Snsouch#ifdef WITH_MICE 44542475Snsouchextern DMenu MenuMouse; /* Mouse type menu */ 44642475Snsouch#endif 44742475Snsouchextern DMenu MenuMediaCDROM; /* CDROM media menu */ 44855957Snsouchextern DMenu MenuMediaDOS; /* DOS media menu */ 44955939Snsouchextern DMenu MenuMediaFloppy; /* Floppy media menu */ 45042475Snsouchextern DMenu MenuMediaFTP; /* FTP media menu */ 45155957Snsouchextern DMenu MenuMediaTape; /* Tape media menu */ 45242475Snsouchextern DMenu MenuNetworkDevice; /* Network device menu */ 45342475Snsouchextern DMenu MenuNTP; /* NTP time server menu */ 45442475Snsouchextern DMenu MenuSecurity; /* System security options menu */ 45542475Snsouchextern DMenu MenuSecurelevel; /* Securelevel menu */ 45642475Snsouchextern DMenu MenuStartup; /* Startup services menu */ 45755939Snsouch#ifdef WITH_SYSCONS 45842475Snsouchextern DMenu MenuSyscons; /* System console configuration menu */ 45942475Snsouchextern DMenu MenuSysconsFont; /* System console font configuration menu */ 46042475Snsouchextern DMenu MenuSysconsKeymap; /* System console keymap configuration menu */ 46142475Snsouchextern DMenu MenuSysconsKeyrate; /* System console keyrate configuration menu */ 46242475Snsouchextern DMenu MenuSysconsSaver; /* System console saver configuration menu */ 46342475Snsouchextern DMenu MenuSysconsScrnmap; /* System console screenmap configuration menu */ 46442475Snsouchextern DMenu MenuSysconsTtys; /* System console terminal type menu */ 46555939Snsouch#endif 46642475Snsouchextern DMenu MenuNetworking; /* Network configuration menu */ 46742475Snsouchextern DMenu MenuMTA; /* MTA selection menu */ 46842475Snsouchextern DMenu MenuInstallCustom; /* Custom Installation menu */ 46942475Snsouchextern DMenu MenuDistributions; /* Distribution menu */ 47042475Snsouchextern DMenu MenuDiskDevices; /* Disk type devices */ 47142475Snsouchextern DMenu MenuSubDistributions; /* Custom distribution menu */ 47242475Snsouchextern DMenu MenuSrcDistributions; /* Source distribution menu */ 47342475Snsouchextern DMenu MenuXF86; /* XFree86 main menu */ 47442475Snsouchextern DMenu MenuXF86Select; /* XFree86 distribution selection menu */ 47542475Snsouchextern DMenu MenuXF86SelectCore; /* XFree86 core distribution menu */ 47642475Snsouchextern DMenu MenuXF86SelectServer; /* XFree86 server distribution menu */ 47742475Snsouchextern DMenu MenuXF86SelectFonts; /* XFree86 font selection menu */ 47843301Sdillonextern DMenu MenuXDesktops; /* Disk devices menu */ 47942475Snsouchextern DMenu MenuHTMLDoc; /* HTML Documentation menu */ 48055939Snsouchextern DMenu MenuUsermgmt; /* User management menu */ 48142475Snsouchextern DMenu MenuFixit; /* Fixit floppy/CDROM/shell menu */ 48242475Snsouchextern DMenu MenuXF86Config; /* Select XFree86 configuration type */ 48342475Snsouchextern int FixItMode; /* FixItMode starts shell onc urrent device (ie Serial port) */ 48442475Snsouchextern const char * StartName; /* Which name we were started as */ 48542475Snsouch 48642475Snsouch/* Stuff from libdialog which isn't properly declared outside */ 48742475Snsouchextern void display_helpfile(void); 48842475Snsouchextern void display_helpline(WINDOW *w, int y, int width); 48942475Snsouch 49042475Snsouch/*** Prototypes ***/ 49142475Snsouch 49242475Snsouch/* anonFTP.c */ 49342475Snsouchextern int configAnonFTP(dialogMenuItem *self); 49442475Snsouch 49542475Snsouch/* cdrom.c */ 49642475Snsouchextern Boolean mediaInitCDROM(Device *dev); 49742475Snsouchextern FILE *mediaGetCDROM(Device *dev, char *file, Boolean probe); 49836735Sdfrextern void mediaShutdownCDROM(Device *dev); 49928219Smsmith 50032178Smsmith/* command.c */ 50155939Snsouchextern void command_clear(void); 50255939Snsouchextern void command_sort(void); 50332178Smsmithextern void command_execute(void); 50432178Smsmithextern void command_shell_add(char *key, char *fmt, ...) __printflike(2, 3); 50532178Smsmithextern void command_func_add(char *key, commandFunc func, void *data); 50632178Smsmith 50732178Smsmith/* config.c */ 50832178Smsmithextern void configEnvironmentRC_conf(void); 50955939Snsouchextern void configEnvironmentResolv(char *config); 51032178Smsmithextern void configRC_conf(void); 51132178Smsmithextern int configFstab(dialogMenuItem *self); 51255939Snsouchextern int configRC(dialogMenuItem *self); 51332178Smsmithextern int configResolv(dialogMenuItem *self); 51432178Smsmithextern int configPackages(dialogMenuItem *self); 51555939Snsouchextern int configSaver(dialogMenuItem *self); 51632178Smsmithextern int configSaverTimeout(dialogMenuItem *self); 51743433Snsouch#ifdef WITH_LINUX 51855939Snsouchextern int configLinux(dialogMenuItem *self); 51932178Smsmith#endif 52032178Smsmithextern int configNTP(dialogMenuItem *self); 52155939Snsouch#ifdef __alpha__ 52232178Smsmithextern int configOSF1(dialogMenuItem *self); 52332178Smsmith#endif 52455939Snsouchextern int configUsers(dialogMenuItem *self); 52532178Smsmithextern int configXSetup(dialogMenuItem *self); 52632178Smsmithextern int configXDesktop(dialogMenuItem *self); 52755939Snsouchextern int configRouter(dialogMenuItem *self); 52832178Smsmithextern int configPCNFSD(dialogMenuItem *self); 52932178Smsmithextern int configInetd(dialogMenuItem *self); 53055939Snsouchextern int configNFSServer(dialogMenuItem *self); 53132178Smsmithextern int configMTAPostfix(dialogMenuItem *self); 53232178Smsmithextern int configMTAExim(dialogMenuItem *self); 53355939Snsouchextern int configRpcBind(dialogMenuItem *self); 53432178Smsmithextern int configWriteRC_conf(dialogMenuItem *self); 53543433Snsouchextern int configSecurelevel(dialogMenuItem *self); 53655939Snsouchextern int configSecurelevelDisabled(dialogMenuItem *self); 53732178Smsmithextern int configSecurelevelSecure(dialogMenuItem *self); 53832178Smsmithextern int configSecurelevelHighlySecure(dialogMenuItem *self); 53955939Snsouchextern int configSecurelevelNetworkSecure(dialogMenuItem *self); 54032178Smsmithextern int configEtcTtys(dialogMenuItem *self); 54132178Smsmith#ifdef __i386__ 54255939Snsouchextern int checkLoaderACPI(void); 54332178Smsmithextern int configLoaderACPI(int); 54443433Snsouch#endif 54555939Snsouch 54643433Snsouch/* devices.c */ 54743433Snsouchextern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)(dialogMenuItem *d), 54855939Snsouch int (*check)(dialogMenuItem *d)); 54943433Snsouchextern void deviceGetAll(void); 55032178Smsmithextern void deviceReset(void); 55132178Smsmithextern void deviceRescan(void); 55232178Smsmithextern Device **deviceFind(char *name, DeviceType type); 55332178Smsmithextern Device **deviceFindDescr(char *name, char *desc, DeviceType class); 55432178Smsmithextern int deviceCount(Device **devs); 55532178Smsmithextern Device *new_device(char *name); 55628219Smsmithextern Device *deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled, 55728219Smsmith Boolean (*init)(Device *mediadev), 55856455Speter FILE * (*get)(Device *dev, char *file, Boolean probe), 55956455Speter void (*shutDown)(Device *mediadev), 56056455Speter void *private); 56156455Speterextern Boolean dummyInit(Device *dev); 56256455Speterextern FILE *dummyGet(Device *dev, char *dist, Boolean probe); 56356455Speterextern void dummyShutdown(Device *dev); 56456455Speter 56556455Speter/* dhcp.c */ 56656455Speterextern int dhcpParseLeases(char *file, char *hostname, char *domain, char *nameserver, 56756455Speter char *ipaddr, char *gateway, char *netmask); 56856455Speter 56956455Speter/* disks.c */ 57056455Speter#ifdef WITH_SLICES 57156455Speterextern void diskPartition(Device *dev); 57255939Snsouchextern int diskPartitionEditor(dialogMenuItem *self); 573#endif 574extern int diskPartitionWrite(dialogMenuItem *self); 575extern int diskGetSelectCount(Device ***devs); 576 577/* dispatch.c */ 578extern int dispatchCommand(char *command); 579extern int dispatch_load_floppy(dialogMenuItem *self); 580extern int dispatch_load_file_int(int); 581extern int dispatch_load_file(dialogMenuItem *self); 582 583 584/* dist.c */ 585extern int distReset(dialogMenuItem *self); 586extern int distConfig(dialogMenuItem *self); 587extern int distSetCustom(dialogMenuItem *self); 588extern int distUnsetCustom(dialogMenuItem *self); 589extern int distSetDeveloper(dialogMenuItem *self); 590extern int distSetXDeveloper(dialogMenuItem *self); 591extern int distSetKernDeveloper(dialogMenuItem *self); 592extern int distSetXKernDeveloper(dialogMenuItem *self); 593extern int distSetUser(dialogMenuItem *self); 594extern int distSetXUser(dialogMenuItem *self); 595extern int distSetMinimum(dialogMenuItem *self); 596extern int distSetEverything(dialogMenuItem *self); 597extern int distSetSrc(dialogMenuItem *self); 598extern int distSetXF86(dialogMenuItem *self); 599extern int distExtractAll(dialogMenuItem *self); 600 601/* dmenu.c */ 602extern int dmenuDisplayFile(dialogMenuItem *tmp); 603extern int dmenuSubmenu(dialogMenuItem *tmp); 604extern int dmenuSystemCommand(dialogMenuItem *tmp); 605extern int dmenuSystemCommandBox(dialogMenuItem *tmp); 606extern int dmenuExit(dialogMenuItem *tmp); 607extern int dmenuISetVariable(dialogMenuItem *tmp); 608extern int dmenuSetVariable(dialogMenuItem *tmp); 609extern int dmenuSetKmapVariable(dialogMenuItem *tmp); 610extern int dmenuSetVariables(dialogMenuItem *tmp); 611extern int dmenuToggleVariable(dialogMenuItem *tmp); 612extern int dmenuSetFlag(dialogMenuItem *tmp); 613extern int dmenuSetValue(dialogMenuItem *tmp); 614extern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max, Boolean buttons); 615extern Boolean dmenuOpenSimple(DMenu *menu, Boolean buttons); 616extern int dmenuVarCheck(dialogMenuItem *item); 617extern int dmenuVarsCheck(dialogMenuItem *item); 618extern int dmenuFlagCheck(dialogMenuItem *item); 619extern int dmenuRadioCheck(dialogMenuItem *item); 620 621/* doc.c */ 622extern int docBrowser(dialogMenuItem *self); 623extern int docShowDocument(dialogMenuItem *self); 624 625/* dos.c */ 626extern Boolean mediaCloseDOS(Device *dev, FILE *fp); 627extern Boolean mediaInitDOS(Device *dev); 628extern FILE *mediaGetDOS(Device *dev, char *file, Boolean probe); 629extern void mediaShutdownDOS(Device *dev); 630 631/* floppy.c */ 632extern int getRootFloppy(void); 633extern Boolean mediaInitFloppy(Device *dev); 634extern FILE *mediaGetFloppy(Device *dev, char *file, Boolean probe); 635extern void mediaShutdownFloppy(Device *dev); 636 637/* ftp_strat.c */ 638extern Boolean mediaCloseFTP(Device *dev, FILE *fp); 639extern Boolean mediaInitFTP(Device *dev); 640extern FILE *mediaGetFTP(Device *dev, char *file, Boolean probe); 641extern void mediaShutdownFTP(Device *dev); 642 643/* http.c */ 644extern Boolean mediaInitHTTP(Device *dev); 645extern FILE *mediaGetHTTP(Device *dev, char *file, Boolean probe); 646 647/* globals.c */ 648extern void globalsInit(void); 649 650/* index.c */ 651int index_read(FILE *fp, PkgNodePtr papa); 652int index_menu(PkgNodePtr root, PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll); 653void index_init(PkgNodePtr top, PkgNodePtr plist); 654void index_node_free(PkgNodePtr top, PkgNodePtr plist); 655void index_sort(PkgNodePtr top); 656void index_print(PkgNodePtr top, int level); 657int index_extract(Device *dev, PkgNodePtr top, PkgNodePtr who, Boolean depended); 658int index_initialize(char *path); 659PkgNodePtr index_search(PkgNodePtr top, char *str, PkgNodePtr *tp); 660 661/* install.c */ 662extern Boolean checkLabels(Boolean whinge, Chunk **rdev, Chunk **sdev, Chunk **udev, Chunk **vdev, Chunk **vtdev, Chunk **hdev); 663extern int installCommit(dialogMenuItem *self); 664extern int installCustomCommit(dialogMenuItem *self); 665extern int installExpress(dialogMenuItem *self); 666extern int installStandard(dialogMenuItem *self); 667extern int installFixitHoloShell(dialogMenuItem *self); 668extern int installFixitCDROM(dialogMenuItem *self); 669extern int installFixitFloppy(dialogMenuItem *self); 670extern int installFixupBase(dialogMenuItem *self); 671extern int installUpgrade(dialogMenuItem *self); 672extern int installFilesystems(dialogMenuItem *self); 673extern int installVarDefaults(dialogMenuItem *self); 674extern void installEnvironment(void); 675extern Boolean copySelf(void); 676 677/* kget.c */ 678extern int kget(char *out); 679 680/* keymap.c */ 681extern int loadKeymap(const char *lang); 682 683/* label.c */ 684extern int diskLabelEditor(dialogMenuItem *self); 685extern int diskLabelCommit(dialogMenuItem *self); 686 687/* makedevs.c (auto-generated) */ 688extern const char termcap_ansi[]; 689extern const char termcap_vt100[]; 690extern const char termcap_cons25w[]; 691extern const char termcap_cons25[]; 692extern const char termcap_cons25_m[]; 693extern const char termcap_cons25r[]; 694extern const char termcap_cons25r_m[]; 695extern const char termcap_cons25l1[]; 696extern const char termcap_cons25l1_m[]; 697extern const char termcap_xterm[]; 698extern const u_char font_iso_8x16[]; 699extern const u_char font_cp850_8x16[]; 700extern const u_char font_cp866_8x16[]; 701extern const u_char koi8_r2cp866[]; 702extern u_char default_scrnmap[]; 703 704/* media.c */ 705extern char *cpioVerbosity(void); 706extern void mediaClose(void); 707extern int mediaTimeout(void); 708extern int mediaSetCDROM(dialogMenuItem *self); 709extern int mediaSetFloppy(dialogMenuItem *self); 710extern int mediaSetDOS(dialogMenuItem *self); 711extern int mediaSetTape(dialogMenuItem *self); 712extern int mediaSetFTP(dialogMenuItem *self); 713extern int mediaSetFTPActive(dialogMenuItem *self); 714extern int mediaSetFTPPassive(dialogMenuItem *self); 715extern int mediaSetHTTP(dialogMenuItem *self); 716extern int mediaSetUFS(dialogMenuItem *self); 717extern int mediaSetNFS(dialogMenuItem *self); 718extern int mediaSetFTPUserPass(dialogMenuItem *self); 719extern int mediaSetCPIOVerbosity(dialogMenuItem *self); 720extern int mediaGetType(dialogMenuItem *self); 721extern Boolean mediaExtractDist(char *dir, char *dist, FILE *fp); 722extern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic); 723extern Boolean mediaExtractDistEnd(int zpid, int cpid); 724extern Boolean mediaVerify(void); 725extern FILE *mediaGenericGet(char *base, const char *file); 726 727/* misc.c */ 728extern Boolean file_readable(char *fname); 729extern Boolean file_executable(char *fname); 730extern Boolean directory_exists(const char *dirname); 731extern char *root_bias(char *path); 732extern char *itoa(int value); 733extern char *string_concat(char *p1, char *p2); 734extern char *string_concat3(char *p1, char *p2, char *p3); 735extern char *string_prune(char *str); 736extern char *string_skipwhite(char *str); 737extern char *string_copy(char *s1, char *s2); 738extern char *pathBaseName(const char *path); 739extern void safe_free(void *ptr); 740extern void *safe_malloc(size_t size); 741extern void *safe_realloc(void *orig, size_t size); 742extern dialogMenuItem *item_add(dialogMenuItem *list, char *prompt, char *title, 743 int (*checked)(dialogMenuItem *self), 744 int (*fire)(dialogMenuItem *self), 745 void (*selected)(dialogMenuItem *self, int is_selected), 746 void *data, int *aux, int *curr, int *max); 747extern void items_free(dialogMenuItem *list, int *curr, int *max); 748extern int Mkdir(char *); 749extern int Mkdir_command(char *key, void *data); 750extern int Mount(char *, void *data); 751extern int Mount_msdosfs(char *mountp, void *devname); 752extern WINDOW *openLayoutDialog(char *helpfile, char *title, int x, int y, int width, int height); 753extern ComposeObj *initLayoutDialog(WINDOW *win, Layout *layout, int x, int y, int *max); 754extern int layoutDialogLoop(WINDOW *win, Layout *layout, ComposeObj **obj, 755 int *n, int max, int *cbutton, int *cancel); 756 757extern WINDOW *savescr(void); 758extern void restorescr(WINDOW *w); 759extern char *sstrncpy(char *dst, const char *src, int size); 760 761/* modules.c */ 762extern void driverFloppyCheck(void); 763extern void moduleInitialize(void); 764extern int kldBrowser(dialogMenuItem *self); 765 766/* mouse.c */ 767extern int mousedTest(dialogMenuItem *self); 768extern int mousedDisable(dialogMenuItem *self); 769extern int setMouseFlags(dialogMenuItem *self); 770 771/* msg.c */ 772extern Boolean isDebug(void); 773extern void msgInfo(char *fmt, ...) __printf0like(1, 2); 774extern void msgYap(char *fmt, ...) __printflike(1, 2); 775extern void msgWarn(char *fmt, ...) __printflike(1, 2); 776extern void msgDebug(char *fmt, ...) __printflike(1, 2); 777extern void msgError(char *fmt, ...) __printflike(1, 2); 778extern void msgFatal(char *fmt, ...) __printflike(1, 2); 779extern void msgConfirm(char *fmt, ...) __printflike(1, 2); 780extern void msgNotify(char *fmt, ...) __printflike(1, 2); 781extern void msgWeHaveOutput(char *fmt, ...) __printflike(1, 2); 782extern int msgYesNo(char *fmt, ...) __printflike(1, 2); 783extern int msgNoYes(char *fmt, ...) __printflike(1, 2); 784extern char *msgGetInput(char *buf, char *fmt, ...) __printflike(2, 3); 785extern int msgSimpleConfirm(char *); 786extern int msgSimpleNotify(char *); 787 788/* network.c */ 789extern Boolean mediaInitNetwork(Device *dev); 790extern void mediaShutdownNetwork(Device *dev); 791 792/* nfs.c */ 793extern Boolean mediaInitNFS(Device *dev); 794extern FILE *mediaGetNFS(Device *dev, char *file, Boolean probe); 795extern void mediaShutdownNFS(Device *dev); 796 797/* options.c */ 798extern int optionsEditor(dialogMenuItem *self); 799 800/* package.c */ 801extern int packageAdd(dialogMenuItem *self); 802extern int package_add(char *name); 803extern int package_extract(Device *dev, char *name, Boolean depended); 804extern Boolean package_exists(char *name); 805 806/* pccard.c */ 807extern void pccardInitialize(void); 808 809/* system.c */ 810extern void systemInitialize(int argc, char **argv); 811extern void systemShutdown(int status); 812extern int execExecute(char *cmd, char *name); 813extern int systemExecute(char *cmd); 814extern void systemSuspendDialog(void); 815extern void systemResumeDialog(void); 816extern int systemDisplayHelp(char *file); 817extern char *systemHelpFile(char *file, char *buf); 818extern void systemChangeFont(const u_char font[]); 819extern void systemChangeLang(char *lang); 820extern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mono, const u_char m_termcap[]); 821extern void systemChangeScreenmap(const u_char newmap[]); 822extern void systemCreateHoloshell(void); 823extern int vsystem(char *fmt, ...) __printflike(1, 2); 824 825/* tape.c */ 826extern char *mediaTapeBlocksize(void); 827extern Boolean mediaInitTape(Device *dev); 828extern FILE *mediaGetTape(Device *dev, char *file, Boolean probe); 829extern void mediaShutdownTape(Device *dev); 830 831/* tcpip.c */ 832extern int tcpOpenDialog(Device *dev); 833extern int tcpMenuSelect(dialogMenuItem *self); 834extern Device *tcpDeviceSelect(void); 835 836/* termcap.c */ 837extern int set_termcap(void); 838 839/* ttys.c */ 840extern void configTtys(void); 841 842/* ufs.c */ 843extern void mediaShutdownUFS(Device *dev); 844extern Boolean mediaInitUFS(Device *dev); 845extern FILE *mediaGetUFS(Device *dev, char *file, Boolean probe); 846 847/* usb.c */ 848extern void usbInitialize(void); 849 850/* user.c */ 851extern int userAddGroup(dialogMenuItem *self); 852extern int userAddUser(dialogMenuItem *self); 853 854/* variable.c */ 855extern void variable_set(char *var, int dirty); 856extern void variable_set2(char *name, char *value, int dirty); 857extern char *variable_get(char *var); 858extern int variable_cmp(char *var, char *value); 859extern void variable_unset(char *var); 860extern char *variable_get_value(char *var, char *prompt, int dirty); 861extern int variable_check(char *data); 862extern int variable_check2(char *data); 863extern int dump_variables(dialogMenuItem *self); 864extern void free_variables(void); 865extern void pvariable_set(char *var); 866extern char *pvariable_get(char *var); 867 868/* wizard.c */ 869extern void slice_wizard(Disk *d); 870 871/* 872 * Macros. Please find a better place for us! 873 */ 874#define DEVICE_INIT(d) ((d) != NULL ? (d)->init((d)) : NULL) 875#define DEVICE_GET(d, b, f) ((d) != NULL ? (d)->get((d), (b), (f)) : NULL) 876#define DEVICE_SHUTDOWN(d) ((d) != NULL ? (d)->shutdown((d)) : (void)0) 877 878#ifdef USE_GZIP 879#define UNZIPPER "gunzip" 880#else 881#define UNZIPPER "bunzip2" 882#endif 883 884#endif 885/* _SYSINSTALL_H_INCLUDE */ 886