sade.h revision 19577
185587Sobrien/* 285587Sobrien * The new sysinstall program. 385587Sobrien * 485587Sobrien * This is probably the last attempt in the `sysinstall' line, the next 585587Sobrien * generation being slated to essentially a complete rewrite. 685587Sobrien * 785587Sobrien * $Id: sysinstall.h,v 1.86 1996/11/09 16:47:08 joerg Exp $ 885587Sobrien * 985587Sobrien * Copyright (c) 1995 1085587Sobrien * Jordan Hubbard. All rights reserved. 1185587Sobrien * 1285587Sobrien * Redistribution and use in source and binary forms, with or without 1385587Sobrien * modification, are permitted provided that the following conditions 1485587Sobrien * are met: 1585587Sobrien * 1. Redistributions of source code must retain the above copyright 1685587Sobrien * notice, this list of conditions and the following disclaimer, 1785587Sobrien * verbatim and that no modifications are made prior to this 1885587Sobrien * point in the file. 1985587Sobrien * 2. Redistributions in binary form must reproduce the above copyright 2085587Sobrien * notice, this list of conditions and the following disclaimer in the 2185587Sobrien * documentation and/or other materials provided with the distribution. 2285587Sobrien * 2385587Sobrien * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND 2485587Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2585587Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2685587Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE 2785587Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2885587Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2985587Sobrien * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION) 3085587Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3185587Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3285587Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3385587Sobrien * SUCH DAMAGE. 3485587Sobrien * 3585587Sobrien */ 3685587Sobrien 3785587Sobrien#ifndef _SYSINSTALL_H_INCLUDE 3885587Sobrien#define _SYSINSTALL_H_INCLUDE 3985587Sobrien 4085587Sobrien#include <stdio.h> 41107806Sobrien#include <stdlib.h> 4285587Sobrien#include <string.h> 4385587Sobrien#include <unistd.h> 4485587Sobrien#include <dialog.h> 4585587Sobrien#include <sys/types.h> 4685587Sobrien#include <sys/wait.h> 4785587Sobrien#include "libdisk.h" 4885587Sobrien#include "dist.h" 4985587Sobrien#include "version.h" 5085587Sobrien 5185587Sobrien/*** Defines ***/ 5285587Sobrien 5385587Sobrien/* Different packages we depend on - update this when package version change! */ 5485587Sobrien#define PACKAGE_GATED "gated-3.5b3" 5585587Sobrien#define PACKAGE_APACHE "apache-1.1.1" 5685587Sobrien#define PACKAGE_NETCON "commerce/netcon/bsd60" 5785587Sobrien#define PACKAGE_PCNFSD "pcnfsd-93.02.16" 5885587Sobrien#define PACKAGE_SAMBA "samba-1.9.15p8" 5985587Sobrien#define PACKAGE_LYNX "lynx-2.6" 6085587Sobrien 6185587Sobrien/* variable limits */ 6285587Sobrien#define VAR_NAME_MAX 128 6385587Sobrien#define VAR_VALUE_MAX 1024 6485587Sobrien 6585587Sobrien/* device limits */ 6685587Sobrien#define DEV_NAME_MAX 64 /* The maximum length of a device name */ 6785587Sobrien#define DEV_MAX 100 /* The maximum number of devices we'll deal with */ 6885587Sobrien#define INTERFACE_MAX 50 /* Maximum number of network interfaces we'll deal with */ 6985587Sobrien#define IO_ERROR -2 /* Status code for I/O error rather than normal EOF */ 7085587Sobrien 7185587Sobrien/* 7285587Sobrien * I make some pretty gross assumptions about having a max of 50 chunks 7385587Sobrien * total - 8 slices and 42 partitions. I can't easily display many more 7485587Sobrien * than that on the screen at once! 7585587Sobrien * 7685587Sobrien * For 2.1 I'll revisit this and try to make it more dynamic, but since 7785587Sobrien * this will catch 99.99% of all possible cases, I'm not too worried. 7885587Sobrien */ 7985587Sobrien#define MAX_CHUNKS 40 8085587Sobrien 8185587Sobrien/* Internal environment variable names */ 8285587Sobrien#define DISK_PARTITIONED "_diskPartitioned" 8385587Sobrien#define DISK_LABELLED "_diskLabelled" 8485587Sobrien#define DISK_SELECTED "_diskSelected" 8585587Sobrien#define SYSTEM_STATE "_systemState" 8685587Sobrien#define RUNNING_ON_ROOT "_runningOnRoot" 8785587Sobrien#define TCP_CONFIGURED "_tcpConfigured" 8885587Sobrien 8985587Sobrien/* Ones that can be tweaked from config files */ 9085587Sobrien#define VAR_BLANKTIME "blanktime" 9185587Sobrien#define VAR_BOOTMGR "bootManager" 9285587Sobrien#define VAR_BROWSER_BINARY "browserBinary" 9385587Sobrien#define VAR_BROWSER_PACKAGE "browserPackage" 9485587Sobrien#define VAR_CPIO_VERBOSITY "cpioVerbose" 9585587Sobrien#define VAR_DEBUG "debug" 9685587Sobrien#define VAR_DISK "disk" 9785587Sobrien#define VAR_DOMAINNAME "domainname" 9885587Sobrien#define VAR_EDITOR "editor" 9985587Sobrien#define VAR_EXTRAS "ifconfig_" 10085587Sobrien#define VAR_FTP_DIR "ftpDirectory" 10185587Sobrien#define VAR_FTP_PASS "ftpPass" 10285587Sobrien#define VAR_FTP_PATH "ftp" 10385587Sobrien#define VAR_FTP_PORT "ftpPort" 10485587Sobrien#define VAR_FTP_STATE "ftpState" 10585587Sobrien#define VAR_FTP_USER "ftpUser" 10685587Sobrien#define VAR_FTP_HOST "ftpHost" 10785587Sobrien#define VAR_GATEWAY "defaultrouter" 10890902Sdes#define VAR_GEOMETRY "geometry" 10985587Sobrien#define VAR_HOSTNAME "hostname" 11085587Sobrien#define VAR_IFCONFIG "ifconfig_" 11185587Sobrien#define VAR_INTERFACES "network_interfaces" 11285587Sobrien#define VAR_INSTALL_ROOT "installRoot" 11385587Sobrien#define VAR_IPADDR "ipaddr" 11485587Sobrien#define VAR_LABEL "label" 11585587Sobrien#define VAR_LABEL_COUNT "labelCount" 11685587Sobrien#define VAR_MEDIA_TYPE "mediaType" 11785587Sobrien#define VAR_NAMESERVER "nameserver" 11885587Sobrien#define VAR_NETMASK "netmask" 11985587Sobrien#define VAR_NFS_PATH "nfs" 12085587Sobrien#define VAR_NFS_HOST "nfsHost" 12185587Sobrien#define VAR_NFS_SECURE "nfsSecure" 12285587Sobrien#define VAR_NFS_SERVER "nfs_server" 12385587Sobrien#define VAR_NO_CONFIRM "noConfirm" 12485587Sobrien#define VAR_NOVELL "novell" 12585587Sobrien#define VAR_NTPDATE "ntpdate" 12685587Sobrien#define VAR_PCNFSD "pcnfsd" 12785587Sobrien#define VAR_PKG_TMPDIR "PKG_TMPDIR" 12885587Sobrien#define VAR_PORTS_PATH "ports" 12985587Sobrien#define VAR_RELNAME "releaseName" 13085587Sobrien#define VAR_ROOT_SIZE "rootSize" 13185587Sobrien#define VAR_ROUTER "router" 13285587Sobrien#define VAR_ROUTERFLAGS "routerflags" 13385587Sobrien#define VAR_SERIAL_SPEED "serialSpeed" 13485587Sobrien#define VAR_SLOW_ETHER "slowEthernetCard" 13585587Sobrien#define VAR_SWAP_SIZE "swapSize" 13690902Sdes#define VAR_TAPE_BLOCKSIZE "tapeBlocksize" 137146299Sru#define VAR_UFS_PATH "ufs" 13885587Sobrien#define VAR_USR_SIZE "usrSize" 13985587Sobrien#define VAR_VAR_SIZE "varSize" 14085587Sobrien 14185587Sobrien#define DEFAULT_TAPE_BLOCKSIZE "20" 14285587Sobrien 14385587Sobrien/* One MB worth of blocks */ 14485587Sobrien#define ONE_MEG 2048 14585587Sobrien 14685587Sobrien/* Which selection attributes to use */ 14785587Sobrien#define ATTR_SELECTED (ColorDisplay ? item_selected_attr : item_attr) 14885587Sobrien#define ATTR_TITLE button_active_attr 14985587Sobrien 15085587Sobrien 15185587Sobrien/*** Types ***/ 15285587Sobrientypedef unsigned int Boolean; 15385587Sobrientypedef struct disk Disk; 15490902Sdestypedef struct chunk Chunk; 155146299Sru 15690902Sdes/* Bitfields for menu options */ 157146299Sru#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */ 15890902Sdes#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ 159146299Sru#define DMENU_CHECKLIST_TYPE 0x4 /* Multiple choice menu */ 160146299Sru#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */ 161146299Sru 16290902Sdestypedef struct _dmenu { 16385587Sobrien int type; /* What sort of menu we are */ 16485587Sobrien char *title; /* Our title */ 16585587Sobrien char *prompt; /* Our prompt */ 16690902Sdes char *helpline; /* Line of help at bottom */ 16785587Sobrien char *helpfile; /* Help file for "F1" */ 16885587Sobrien dialogMenuItem items[0]; /* Array of menu items */ 16985587Sobrien} DMenu; 17085587Sobrien 17185587Sobrien/* A sysconfig variable */ 17285587Sobrientypedef struct _variable { 17385587Sobrien struct _variable *next; 17485587Sobrien char name[VAR_NAME_MAX]; 17585587Sobrien char value[VAR_VALUE_MAX]; 17685587Sobrien} Variable; 17785587Sobrien 17885587Sobrien/* For attribs */ 17985587Sobrien#define MAX_ATTRIBS 200 18085587Sobrien#define MAX_NAME 64 18185587Sobrien#define MAX_VALUE 256 18285587Sobrien 18385587Sobrientypedef struct _attribs { 18485587Sobrien char name[MAX_NAME]; 18585587Sobrien char value[MAX_VALUE]; 18685587Sobrien} Attribs; 18785587Sobrien 18885587Sobrientypedef enum { 18985587Sobrien DEVICE_TYPE_NONE, 19085587Sobrien DEVICE_TYPE_DISK, 191146299Sru DEVICE_TYPE_FLOPPY, 19285587Sobrien DEVICE_TYPE_FTP, 19385587Sobrien DEVICE_TYPE_NETWORK, 194146299Sru DEVICE_TYPE_CDROM, 19585587Sobrien DEVICE_TYPE_TAPE, 19685587Sobrien DEVICE_TYPE_DOS, 19785587Sobrien DEVICE_TYPE_UFS, 19885587Sobrien DEVICE_TYPE_NFS, 19990902Sdes DEVICE_TYPE_ANY, 20085587Sobrien} DeviceType; 20185587Sobrien 20285587Sobrien/* CDROM mount codes */ 20385587Sobrien#define CD_UNMOUNTED 0 20485587Sobrien#define CD_ALREADY_MOUNTED 1 20585587Sobrien#define CD_WE_MOUNTED_IT 2 20685587Sobrien 20785587Sobrien/* A "device" from sysinstall's point of view */ 20885587Sobrientypedef struct _device { 20985587Sobrien char name[DEV_NAME_MAX]; 21085587Sobrien char *description; 21185587Sobrien char *devname; 21285587Sobrien DeviceType type; 21385587Sobrien Boolean enabled; 21485587Sobrien Boolean (*init)(struct _device *dev); 21585587Sobrien int (*get)(struct _device *dev, char *file, Boolean probe); 21685587Sobrien Boolean (*close)(struct _device *dev, int fd); 21785587Sobrien void (*shutdown)(struct _device *dev); 21885587Sobrien void *private; 21985587Sobrien unsigned int flags; 22085587Sobrien} Device; 22185587Sobrien 22285587Sobrien/* Some internal representations of partitions */ 22385587Sobrientypedef enum { 22485587Sobrien PART_NONE, 22585587Sobrien PART_SLICE, 22685587Sobrien PART_SWAP, 22785587Sobrien PART_FILESYSTEM, 22885587Sobrien PART_FAT, 22985587Sobrien} PartType; 23085587Sobrien 23185587Sobrien/* The longest newfs command we'll hand to system() */ 23285587Sobrien#define NEWFS_CMD_MAX 256 23385587Sobrien 23485587Sobrientypedef struct _part_info { 23585587Sobrien Boolean newfs; 23685587Sobrien char mountpoint[FILENAME_MAX]; 23785587Sobrien char newfs_cmd[NEWFS_CMD_MAX]; 23885587Sobrien} PartInfo; 23985587Sobrien 24085587Sobrien/* An option */ 24185587Sobrientypedef struct _opt { 24285587Sobrien char *name; 24385587Sobrien char *desc; 24485587Sobrien enum { OPT_IS_STRING, OPT_IS_INT, OPT_IS_FUNC, OPT_IS_VAR } type; 24585587Sobrien void *data; 24685587Sobrien void *aux; 24785587Sobrien char *(*check)(); 24885587Sobrien} Option; 24985587Sobrien 25085587Sobrien/* Weird index nodey things we use for keeping track of package information */ 25185587Sobrientypedef enum { PACKAGE, PLACE } node_type; /* Types of nodes */ 25285587Sobrien 25385587Sobrientypedef struct _pkgnode { /* A node in the reconstructed hierarchy */ 25485587Sobrien struct _pkgnode *next; /* My next sibling */ 25585587Sobrien node_type type; /* What am I? */ 25685587Sobrien char *name; /* My name */ 25785587Sobrien char *desc; /* My description (Hook) */ 25885587Sobrien struct _pkgnode *kids; /* My little children */ 25985587Sobrien void *data; /* A place to hang my data */ 26085587Sobrien} PkgNode; 26185587Sobrientypedef PkgNode *PkgNodePtr; 26285587Sobrien 26385587Sobrien/* A single package */ 26485587Sobrientypedef struct _indexEntry { /* A single entry in an INDEX file */ 26585587Sobrien char *name; /* name */ 26685587Sobrien char *path; /* full path to port */ 26785587Sobrien char *prefix; /* port prefix */ 26885587Sobrien char *comment; /* one line description */ 26985587Sobrien char *descrfile; /* path to description file */ 27085587Sobrien char *deps; /* packages this depends on */ 27185587Sobrien char *maintainer; /* maintainer */ 27285587Sobrien} IndexEntry; 27385587Sobrientypedef IndexEntry *IndexEntryPtr; 27485587Sobrien 27585587Sobrientypedef int (*commandFunc)(char *key, void *data); 27685587Sobrien 27785587Sobrien#define HOSTNAME_FIELD_LEN 128 27885587Sobrien#define IPADDR_FIELD_LEN 16 27985587Sobrien#define EXTRAS_FIELD_LEN 128 28085587Sobrien 28185587Sobrien/* This is the structure that Network devices carry around in their private, erm, structures */ 28285587Sobrientypedef struct _devPriv { 28385587Sobrien char ipaddr[IPADDR_FIELD_LEN]; 28485587Sobrien char netmask[IPADDR_FIELD_LEN]; 28585587Sobrien char extras[EXTRAS_FIELD_LEN]; 28685587Sobrien} DevInfo; 28785587Sobrien 28885587Sobrien 28985587Sobrien/*** Externs ***/ 29085587Sobrienextern int DebugFD; /* Where diagnostic output goes */ 29185587Sobrienextern Boolean Fake; /* Don't actually modify anything - testing */ 29285587Sobrienextern Boolean SystemWasInstalled; /* Did we install it? */ 29385587Sobrienextern Boolean RunningAsInit; /* Are we running stand-alone? */ 29485587Sobrienextern Boolean DialogActive; /* Is the dialog() stuff up? */ 29585587Sobrienextern Boolean ColorDisplay; /* Are we on a color display? */ 29685587Sobrienextern Boolean OnVTY; /* On a syscons VTY? */ 29785587Sobrienextern Variable *VarHead; /* The head of the variable chain */ 29885587Sobrienextern Device *mediaDevice; /* Where we're getting our distribution from */ 29985587Sobrienextern unsigned int Dists; /* Which distributions we want */ 30085587Sobrienextern unsigned int DESDists; /* Which naughty distributions we want */ 30185587Sobrienextern unsigned int SrcDists; /* Which src distributions we want */ 30285587Sobrienextern unsigned int XF86Dists; /* Which XFree86 dists we want */ 30385587Sobrienextern unsigned int XF86ServerDists; /* The XFree86 servers we want */ 30485587Sobrienextern unsigned int XF86FontDists; /* The XFree86 fonts we want */ 30585587Sobrienextern int BootMgr; /* Which boot manager to use */ 30685587Sobrienextern int StatusLine; /* Where to print our status messages */ 30785587Sobrienextern DMenu MenuInitial; /* Initial installation menu */ 30885587Sobrienextern DMenu MenuFixit; /* Fixit repair menu */ 30985587Sobrienextern DMenu MenuMBRType; /* Type of MBR to write on the disk */ 31085587Sobrienextern DMenu MenuConfigure; /* Final configuration menu */ 31185587Sobrienextern DMenu MenuDocumentation; /* Documentation menu */ 31285587Sobrienextern DMenu MenuFTPOptions; /* FTP Installation options */ 31385587Sobrienextern DMenu MenuIndex; /* Index menu */ 31485587Sobrienextern DMenu MenuOptions; /* Installation options */ 31585587Sobrienextern DMenu MenuOptionsLanguage; /* Language options menu */ 31685587Sobrienextern DMenu MenuMedia; /* Media type menu */ 31785587Sobrienextern DMenu MenuMouse; /* Mouse type menu */ 31885587Sobrienextern DMenu MenuMediaCDROM; /* CDROM media menu */ 31985587Sobrienextern DMenu MenuMediaDOS; /* DOS media menu */ 32085587Sobrienextern DMenu MenuMediaFloppy; /* Floppy media menu */ 32185587Sobrienextern DMenu MenuMediaFTP; /* FTP media menu */ 32285587Sobrienextern DMenu MenuMediaTape; /* Tape media menu */ 32385587Sobrienextern DMenu MenuNetworkDevice; /* Network device menu */ 32490902Sdesextern DMenu MenuNTP; /* NTP time server menu */ 32590902Sdesextern DMenu MenuSyscons; /* System console configuration menu */ 32690902Sdesextern DMenu MenuSysconsFont; /* System console font configuration menu */ 32785587Sobrienextern DMenu MenuSysconsKeymap; /* System console keymap configuration menu */ 32885587Sobrienextern DMenu MenuSysconsKeyrate; /* System console keyrate configuration menu */ 32985587Sobrienextern DMenu MenuSysconsSaver; /* System console saver configuration menu */ 33085587Sobrienextern DMenu MenuSysconsScrnmap; /* System console screenmap configuration menu */ 33185587Sobrienextern DMenu MenuNetworking; /* Network configuration menu */ 33285587Sobrienextern DMenu MenuInstallCustom; /* Custom Installation menu */ 33385587Sobrienextern DMenu MenuDistributions; /* Distribution menu */ 33485587Sobrienextern DMenu MenuSubDistributions; /* Custom distribution menu */ 33585587Sobrienextern DMenu MenuDESDistributions; /* DES distribution menu */ 33685587Sobrienextern DMenu MenuSrcDistributions; /* Source distribution menu */ 33785587Sobrienextern DMenu MenuXF86; /* XFree86 main menu */ 33885587Sobrienextern DMenu MenuXF86Select; /* XFree86 distribution selection menu */ 33985587Sobrienextern DMenu MenuXF86SelectCore; /* XFree86 core distribution menu */ 34085587Sobrienextern DMenu MenuXF86SelectServer; /* XFree86 server distribution menu */ 34185587Sobrienextern DMenu MenuXF86SelectPC98Server; /* XFree86 server distribution menu */ 34285587Sobrienextern DMenu MenuXF86SelectFonts; /* XFree86 font selection menu */ 34385587Sobrienextern DMenu MenuDiskDevices; /* Disk devices menu */ 34485587Sobrienextern DMenu MenuHTMLDoc; /* HTML Documentation menu */ 34585587Sobrien 34685587Sobrien 34785587Sobrien/*** Prototypes ***/ 34885587Sobrien 34985587Sobrien/* apache.c */ 35085587Sobrienextern int configApache(dialogMenuItem *self); 35185587Sobrien 35285587Sobrien/* anonFTP.c */ 35385587Sobrienextern int configAnonFTP(dialogMenuItem *self); 35485587Sobrien 35585587Sobrien/* attrs.c */ 35685587Sobrienextern char *attr_match(Attribs *attr, char *name); 35785587Sobrienextern int attr_parse_file(Attribs *attr, char *file); 35885587Sobrienextern int attr_parse(Attribs *attr, int fd); 35985587Sobrien 36085587Sobrien/* cdrom.c */ 36185587Sobrienextern Boolean mediaInitCDROM(Device *dev); 36285587Sobrienextern int mediaGetCDROM(Device *dev, char *file, Boolean probe); 36385587Sobrienextern void mediaShutdownCDROM(Device *dev); 36485587Sobrien 36585587Sobrien/* command.c */ 36685587Sobrienextern void command_clear(void); 36785587Sobrienextern void command_sort(void); 36885587Sobrienextern void command_execute(void); 36985587Sobrienextern void command_shell_add(char *key, char *fmt, ...); 37085587Sobrienextern void command_func_add(char *key, commandFunc func, void *data); 37185587Sobrien 37285587Sobrien/* config.c */ 37385587Sobrienextern int configFstab(void); 37485587Sobrienextern void configSysconfig(char *config); 37585587Sobrienextern void configResolv(void); 37685587Sobrienextern int configPackages(dialogMenuItem *self); 37785587Sobrienextern int configSaver(dialogMenuItem *self); 37885587Sobrienextern int configSaverTimeout(dialogMenuItem *self); 37985587Sobrienextern int configNTP(dialogMenuItem *self); 38085587Sobrienextern int configXFree86(dialogMenuItem *self); 38185587Sobrienextern int configRouter(dialogMenuItem *self); 38290902Sdesextern int configSamba(dialogMenuItem *self); 38390902Sdesextern int configPCNFSD(dialogMenuItem *self); 38485587Sobrienextern int configNFSServer(dialogMenuItem *self); 38585587Sobrienextern int configWriteSysconfig(dialogMenuItem *self); 38685587Sobrien#ifdef NETCON_EXTENTIONS 38785587Sobrienextern int configNovell(dialogMenuItem *self); 38885587Sobrien#endif 38985587Sobrien 39085587Sobrien/* crc.c */ 39185587Sobrienextern int crc(int, unsigned long *, unsigned long *); 39285587Sobrien 39385587Sobrien/* devices.c */ 39485587Sobrienextern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)(dialogMenuItem *d), 39585587Sobrien int (*check)(dialogMenuItem *d)); 39685587Sobrienextern void deviceGetAll(void); 39785587Sobrienextern Device **deviceFind(char *name, DeviceType type); 39885587Sobrienextern int deviceCount(Device **devs); 39985587Sobrienextern Device *new_device(char *name); 40085587Sobrienextern Device *deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled, 40185587Sobrien Boolean (*init)(Device *mediadev), int (*get)(Device *dev, char *file, Boolean probe), 40285587Sobrien Boolean (*close)(Device *mediadev, int fd), void (*shutDown)(Device *mediadev), 40385587Sobrien void *private); 40485587Sobrienextern Boolean dummyInit(Device *dev); 40585587Sobrienextern int dummyGet(Device *dev, char *dist, Boolean probe); 40685587Sobrienextern Boolean dummyClose(Device *dev, int fd); 40785587Sobrienextern void dummyShutdown(Device *dev); 40885587Sobrien 40985587Sobrien/* disks.c */ 41085587Sobrienextern int diskPartitionEditor(dialogMenuItem *self); 41185587Sobrienextern int diskPartitionWrite(dialogMenuItem *self); 41285587Sobrienextern void diskPartition(Device *dev, Disk *d); 41385587Sobrien 41485587Sobrien/* dispatch.c */ 41585587Sobrienextern int dispatchCommand(char *command); 41685587Sobrien 41785587Sobrien/* dist.c */ 41885587Sobrienextern int distReset(dialogMenuItem *self); 41985587Sobrienextern int distSetCustom(char *str); 42085587Sobrienextern int distSetDeveloper(dialogMenuItem *self); 42185587Sobrienextern int distSetXDeveloper(dialogMenuItem *self); 42285587Sobrienextern int distSetKernDeveloper(dialogMenuItem *self); 42385587Sobrienextern int distSetUser(dialogMenuItem *self); 42485587Sobrienextern int distSetXUser(dialogMenuItem *self); 42585587Sobrienextern int distSetMinimum(dialogMenuItem *self); 42685587Sobrienextern int distSetEverything(dialogMenuItem *self); 42785587Sobrienextern int distSetDES(dialogMenuItem *self); 42885587Sobrienextern int distSetSrc(dialogMenuItem *self); 42985587Sobrienextern int distSetXF86(dialogMenuItem *self); 43085587Sobrienextern int distExtractAll(dialogMenuItem *self); 43185587Sobrien 43285587Sobrien/* dmenu.c */ 43385587Sobrienextern int dmenuDisplayFile(dialogMenuItem *tmp); 43485587Sobrienextern int dmenuSubmenu(dialogMenuItem *tmp); 43585587Sobrienextern int dmenuSystemCommand(dialogMenuItem *tmp); 43685587Sobrienextern int dmenuSystemCommandBox(dialogMenuItem *tmp); 43785587Sobrienextern int dmenuExit(dialogMenuItem *tmp); 43885587Sobrienextern int dmenuSetVariable(dialogMenuItem *tmp); 43985587Sobrienextern int dmenuSetKmapVariable(dialogMenuItem *tmp); 44085587Sobrienextern int dmenuSetVariables(dialogMenuItem *tmp); 44185587Sobrienextern int dmenuToggleVariable(dialogMenuItem *tmp); 44285587Sobrienextern int dmenuSetFlag(dialogMenuItem *tmp); 44385587Sobrienextern int dmenuSetValue(dialogMenuItem *tmp); 44485587Sobrienextern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max, Boolean buttons); 44585587Sobrienextern Boolean dmenuOpenSimple(DMenu *menu, Boolean buttons); 44685587Sobrienextern int dmenuVarCheck(dialogMenuItem *item); 44785587Sobrienextern int dmenuFlagCheck(dialogMenuItem *item); 44885587Sobrienextern int dmenuRadioCheck(dialogMenuItem *item); 44985587Sobrien 45085587Sobrien/* doc.c */ 45185587Sobrienextern int docBrowser(dialogMenuItem *self); 45285587Sobrienextern int docShowDocument(dialogMenuItem *self); 45385587Sobrien 45485587Sobrien/* dos.c */ 45585587Sobrienextern Boolean mediaInitDOS(Device *dev); 45685587Sobrienextern int mediaGetDOS(Device *dev, char *file, Boolean probe); 45785587Sobrienextern void mediaShutdownDOS(Device *dev); 45885587Sobrien 45985587Sobrien/* floppy.c */ 46085587Sobrienextern int getRootFloppy(void); 46185587Sobrienextern Boolean mediaInitFloppy(Device *dev); 46285587Sobrienextern int mediaGetFloppy(Device *dev, char *file, Boolean probe); 46385587Sobrienextern void mediaShutdownFloppy(Device *dev); 46485587Sobrien 46585587Sobrien/* ftp_strat.c */ 46685587Sobrienextern Boolean mediaCloseFTP(Device *dev, int fd); 46785587Sobrienextern Boolean mediaInitFTP(Device *dev); 46885587Sobrienextern int mediaGetFTP(Device *dev, char *file, Boolean probe); 46985587Sobrienextern void mediaShutdownFTP(Device *dev); 47085587Sobrien 47185587Sobrien/* globals.c */ 47285587Sobrienextern void globalsInit(void); 47385587Sobrien 47485587Sobrien/* index.c */ 47585587Sobrienint index_get(char *fname, PkgNodePtr papa); 47685587Sobrienint index_read(int fd, PkgNodePtr papa); 47785587Sobrienint index_menu(PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll); 47885587Sobrienvoid index_init(PkgNodePtr top, PkgNodePtr plist); 47985587Sobrienvoid index_node_free(PkgNodePtr top, PkgNodePtr plist); 48085587Sobrienvoid index_sort(PkgNodePtr top); 48185587Sobrienvoid index_print(PkgNodePtr top, int level); 48285587Sobrienint index_extract(Device *dev, PkgNodePtr top, PkgNodePtr plist); 48385587Sobrien 48485587Sobrien/* install.c */ 48585587Sobrienextern Boolean checkLabels(Boolean whinge, Chunk **rdev, Chunk **sdev, Chunk **udev, Chunk **vdev); 48685587Sobrienextern int installCommit(dialogMenuItem *self); 48785587Sobrienextern int installCustomCommit(dialogMenuItem *self); 48885587Sobrienextern int installExpress(dialogMenuItem *self); 48985587Sobrienextern int installNovice(dialogMenuItem *self); 49085587Sobrienextern int installFixitCDROM(dialogMenuItem *self); 49185587Sobrienextern int installFixitFloppy(dialogMenuItem *self); 49285587Sobrienextern int installFixup(dialogMenuItem *self); 49385587Sobrienextern int installUpgrade(dialogMenuItem *self); 49485587Sobrienextern int installFilesystems(dialogMenuItem *self); 49585587Sobrienextern int installVarDefaults(dialogMenuItem *self); 49685587Sobrienextern Boolean copySelf(void); 49785587Sobrien 49885587Sobrien/* keymap.c */ 49985587Sobrienextern int loadKeymap(const char *lang); 50085587Sobrien 50185587Sobrien/* label.c */ 50285587Sobrienextern int diskLabelEditor(dialogMenuItem *self); 50385587Sobrienextern int diskLabelCommit(dialogMenuItem *self); 50485587Sobrien 505107806Sobrien/* lndir.c */ 50685587Sobrienextern int lndir(char *from, char *to); 50785587Sobrien 50885587Sobrien/* makedevs.c (auto-generated) */ 50985587Sobrienextern const char termcap_vt100[]; 51085587Sobrienextern const char termcap_cons25[]; 51185587Sobrienextern const char termcap_cons25_m[]; 51285587Sobrienextern const char termcap_cons25r[]; 51385587Sobrienextern const char termcap_cons25r_m[]; 51485587Sobrienextern const char termcap_cons25l1[]; 51585587Sobrienextern const char termcap_cons25l1_m[]; 51685587Sobrienextern const u_char font_iso_8x16[]; 51785587Sobrienextern const u_char font_cp850_8x16[]; 51885587Sobrienextern const u_char font_cp866_8x16[]; 51985587Sobrienextern const u_char koi8_r2cp866[]; 52085587Sobrienextern u_char default_scrnmap[]; 52185587Sobrien 52285587Sobrien/* media.c */ 52385587Sobrienextern char *cpioVerbosity(void); 52485587Sobrienextern int mediaSetCDROM(dialogMenuItem *self); 52585587Sobrienextern int mediaSetFloppy(dialogMenuItem *self); 52685587Sobrienextern int mediaSetDOS(dialogMenuItem *self); 52785587Sobrienextern int mediaSetTape(dialogMenuItem *self); 52885587Sobrienextern int mediaSetFTP(dialogMenuItem *self); 52985587Sobrienextern int mediaSetFTPActive(dialogMenuItem *self); 53085587Sobrienextern int mediaSetFTPPassive(dialogMenuItem *self); 53185587Sobrienextern int mediaSetUFS(dialogMenuItem *self); 53285587Sobrienextern int mediaSetNFS(dialogMenuItem *self); 53385587Sobrienextern int mediaSetFTPUserPass(dialogMenuItem *self); 53485587Sobrienextern int mediaSetCPIOVerbosity(dialogMenuItem *self); 535118194Sruextern int mediaGetType(dialogMenuItem *self); 536118194Sruextern Boolean mediaExtractDist(char *dir, int fd); 53785587Sobrienextern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic); 53885587Sobrienextern Boolean mediaExtractDistEnd(int zpid, int cpid); 53985587Sobrienextern Boolean mediaVerify(void); 54085587Sobrien 54185587Sobrien/* misc.c */ 54285587Sobrienextern Boolean file_readable(char *fname); 54385587Sobrienextern Boolean file_executable(char *fname); 54485587Sobrienextern Boolean directory_exists(const char *dirname); 54585587Sobrienextern char *root_bias(char *path); 54685587Sobrienextern char *itoa(int value); 54785587Sobrienextern char *string_concat(char *p1, char *p2); 54885587Sobrienextern char *string_concat3(char *p1, char *p2, char *p3); 54985587Sobrienextern char *string_prune(char *str); 55085587Sobrienextern char *string_skipwhite(char *str); 55185587Sobrienextern char *string_copy(char *s1, char *s2); 55285587Sobrienextern char *pathBaseName(const char *path); 55385587Sobrienextern void safe_free(void *ptr); 55485587Sobrienextern void *safe_malloc(size_t size); 55585587Sobrienextern void *safe_realloc(void *orig, size_t size); 556125505Sruextern dialogMenuItem *item_add(dialogMenuItem *list, char *prompt, char *title, 55785587Sobrien int (*checked)(dialogMenuItem *self), 558125505Sru int (*fire)(dialogMenuItem *self), 55985587Sobrien void (*selected)(dialogMenuItem *self, int is_selected), 56085587Sobrien void *data, int aux, int *curr, int *max); 56185587Sobrienextern void items_free(dialogMenuItem *list, int *curr, int *max); 56285587Sobrienextern int Mkdir(char *); 56385587Sobrienextern int Mount(char *, void *data); 56485587Sobrienextern WINDOW *savescr(void); 56585587Sobrienextern void restorescr(WINDOW *w); 56685587Sobrien 56785587Sobrien/* msg.c */ 56885587Sobrienextern Boolean isDebug(void); 56985587Sobrienextern void msgInfo(char *fmt, ...); 57085587Sobrienextern void msgYap(char *fmt, ...); 57185587Sobrienextern void msgWarn(char *fmt, ...); 57285587Sobrienextern void msgDebug(char *fmt, ...); 57385587Sobrienextern void msgError(char *fmt, ...); 57485587Sobrienextern void msgFatal(char *fmt, ...); 57585587Sobrienextern void msgConfirm(char *fmt, ...); 57685587Sobrienextern void msgNotify(char *fmt, ...); 57785587Sobrienextern void msgWeHaveOutput(char *fmt, ...); 57885587Sobrienextern int msgYesNo(char *fmt, ...); 57985587Sobrienextern char *msgGetInput(char *buf, char *fmt, ...); 58085587Sobrienextern int msgSimpleConfirm(char *); 58185587Sobrienextern int msgSimpleNotify(char *); 582107806Sobrien 58385587Sobrien/* network.c */ 58485587Sobrienextern Boolean mediaInitNetwork(Device *dev); 58585587Sobrienextern void mediaShutdownNetwork(Device *dev); 58685587Sobrien 58785587Sobrien/* nfs.c */ 58885587Sobrienextern Boolean mediaInitNFS(Device *dev); 589extern int mediaGetNFS(Device *dev, char *file, Boolean probe); 590extern void mediaShutdownNFS(Device *dev); 591 592/* options.c */ 593extern int optionsEditor(dialogMenuItem *self); 594 595/* package.c */ 596extern int package_add(char *name); 597extern int package_extract(Device *dev, char *name, Boolean depended); 598extern Boolean package_exists(char *name); 599 600/* system.c */ 601extern void systemInitialize(int argc, char **argv); 602extern void systemShutdown(int status); 603extern int execExecute(char *cmd, char *name); 604extern int systemExecute(char *cmd); 605extern int systemDisplayHelp(char *file); 606extern char *systemHelpFile(char *file, char *buf); 607extern void systemChangeFont(const u_char font[]); 608extern void systemChangeLang(char *lang); 609extern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mono, const u_char m_termcap[]); 610extern void systemChangeScreenmap(const u_char newmap[]); 611extern void systemCreateHoloshell(void); 612extern int vsystem(char *fmt, ...); 613 614/* tape.c */ 615extern char *mediaTapeBlocksize(void); 616extern Boolean mediaInitTape(Device *dev); 617extern int mediaGetTape(Device *dev, char *file, Boolean probe); 618extern void mediaShutdownTape(Device *dev); 619 620/* tcpip.c */ 621extern int tcpOpenDialog(Device *dev); 622extern int tcpMenuSelect(dialogMenuItem *self); 623extern int tcpInstallDevice(char *str); 624extern Boolean tcpDeviceSelect(void); 625 626/* termcap.c */ 627extern int set_termcap(void); 628 629/* ufs.c */ 630extern void mediaShutdownUFS(Device *dev); 631extern Boolean mediaInitUFS(Device *dev); 632extern int mediaGetUFS(Device *dev, char *file, Boolean probe); 633 634/* variable.c */ 635extern void variable_set(char *var); 636extern void variable_set2(char *name, char *value); 637extern char *variable_get(char *var); 638extern void variable_unset(char *var); 639extern char *variable_get_value(char *var, char *prompt); 640 641/* wizard.c */ 642extern void slice_wizard(Disk *d); 643 644#endif 645/* _SYSINSTALL_H_INCLUDE */ 646