sysinstall.h revision 46117
159412Smsmith/* 265577Sdes * The new sysinstall program. 365577Sdes * 459412Smsmith * This is probably the last attempt in the `sysinstall' line, the next 559412Smsmith * generation being slated to essentially a complete rewrite. 659412Smsmith * 759412Smsmith * $Id: sysinstall.h,v 1.161 1999/04/24 01:53:55 jkh Exp $ 859412Smsmith * 959412Smsmith * Copyright (c) 1995 1059412Smsmith * Jordan Hubbard. All rights reserved. 1159412Smsmith * 1259412Smsmith * Redistribution and use in source and binary forms, with or without 1359412Smsmith * modification, are permitted provided that the following conditions 1459412Smsmith * are met: 1559412Smsmith * 1. Redistributions of source code must retain the above copyright 1659412Smsmith * notice, this list of conditions and the following disclaimer, 1759412Smsmith * verbatim and that no modifications are made prior to this 1859412Smsmith * point in the file. 1959412Smsmith * 2. Redistributions in binary form must reproduce the above copyright 2059412Smsmith * notice, this list of conditions and the following disclaimer in the 2159412Smsmith * documentation and/or other materials provided with the distribution. 2259412Smsmith * 2359412Smsmith * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND 2459412Smsmith * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2559412Smsmith * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2659412Smsmith * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE 2759412Smsmith * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2859412Smsmith * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2959412Smsmith * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION) 3059412Smsmith * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3159412Smsmith * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3259412Smsmith * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3359412Smsmith * SUCH DAMAGE. 3459412Smsmith * 3559412Smsmith */ 3659412Smsmith 3759412Smsmith#ifndef _SYSINSTALL_H_INCLUDE 3859412Smsmith#define _SYSINSTALL_H_INCLUDE 3959412Smsmith 4059412Smsmith#include <sys/types.h> 4159412Smsmith#include <sys/wait.h> 4259412Smsmith#include <errno.h> 4359412Smsmith#include <setjmp.h> 4459412Smsmith#include <stdio.h> 4583926Sdes#include <stdlib.h> 4676166Smarkm#include <string.h> 4774135Sjlemon#include <unistd.h> 4865633Sdes#include <dialog.h> 4983926Sdes#include "ui_objects.h" 5076166Smarkm#include "dir.h" 5165633Sdes#include "colors.h" 5283926Sdes#include "libdisk.h" 5376166Smarkm#include "dist.h" 5474135Sjlemon 5578025Sdes/*** Defines ***/ 5676827Salfred 5785289Sdes/* device limits */ 5865633Sdes#define DEV_NAME_MAX 64 /* The maximum length of a device name */ 5965633Sdes#define DEV_MAX 100 /* The maximum number of devices we'll deal with */ 6069995Sdes#define INTERFACE_MAX 50 /* Maximum number of network interfaces we'll deal with */ 6183926Sdes#define IO_ERROR -2 /* Status code for I/O error rather than normal EOF */ 6276839Sjlemon 6383926Sdes/* Number of seconds to wait for data to come off even the slowest media */ 6465633Sdes#define MEDIA_TIMEOUT 300 6583926Sdes 6683926Sdes/* 6759412Smsmith * I make some pretty gross assumptions about having a max of 50 chunks 6859412Smsmith * total - 8 slices and 42 partitions. I can't easily display many more 6983926Sdes * than that on the screen at once! 7083926Sdes * 7159412Smsmith * For 2.1 I'll revisit this and try to make it more dynamic, but since 7259412Smsmith * this will catch 99.99% of all possible cases, I'm not too worried. 7367588Sdes */ 7459412Smsmith#define MAX_CHUNKS 40 7560860Sdes 7669995Sdes/* Internal environment variable names */ 7759412Smsmith#define DISK_PARTITIONED "_diskPartitioned" 7869799Sdes#define DISK_LABELLED "_diskLabelled" 7967589Sdes#define DISK_SELECTED "_diskSelected" 8078113Sdes#define SYSTEM_STATE "_systemState" 8178113Sdes#define RUNNING_ON_ROOT "_runningOnRoot" 8278113Sdes#define TCP_CONFIGURED "_tcpConfigured" 8378113Sdes 8478113Sdes/* Ones that can be tweaked from config files */ 8578113Sdes#define VAR_BLANKTIME "blanktime" 8678113Sdes#define VAR_BOOTMGR "bootManager" 8778113Sdes#define VAR_BROWSER_BINARY "browserBinary" 8878113Sdes#define VAR_BROWSER_PACKAGE "browserPackage" 8967589Sdes#define VAR_CPIO_VERBOSITY "cpioVerbose" 9059412Smsmith#define VAR_DEBUG "debug" 9178113Sdes#define VAR_DESKSTYLE "_deskStyle" 9259412Smsmith#define VAR_DISK "disk" 9387275Srwatson#define VAR_DISTS "dists" 9485129Sdes#define VAR_DIST_MAIN "distMain" 9569995Sdes#define VAR_DIST_DES "distDES" 9685289Sdes#define VAR_DIST_SRC "distSRC" 9778025Sdes#define VAR_DIST_X11 "distX11" 9884248Sdes#define VAR_DIST_XSERVER "distXserver" 9959412Smsmith#define VAR_DIST_XFONTS "distXfonts" 10067588Sdes#define VAR_DEDICATE_DISK "dedicateDisk" 10167588Sdes#define VAR_DOMAINNAME "domainname" 10267588Sdes#define VAR_EDITOR "editor" 10376405Sdes#define VAR_EXTRAS "ifconfig_" 10467588Sdes#define VAR_COMMAND "command" 10567588Sdes#define VAR_CONFIG_FILE "configFile" 10669799Sdes#define VAR_FTP_DIR "ftpDirectory" 10767588Sdes#define VAR_FTP_PASS "ftpPass" 10867588Sdes#define VAR_FTP_PATH "_ftpPath" 10974135Sjlemon#define VAR_FTP_PORT "ftpPort" 11078113Sdes#define VAR_FTP_STATE "ftpState" 11178113Sdes#define VAR_FTP_USER "ftpUser" 11278113Sdes#define VAR_FTP_HOST "ftpHost" 11378025Sdes#define VAR_GATEWAY "defaultrouter" 11478025Sdes#define VAR_GEOMETRY "geometry" 11559412Smsmith#define VAR_HOSTNAME "hostname" 11659412Smsmith#define VAR_IFCONFIG "ifconfig_" 11759412Smsmith#define VAR_INTERFACES "network_interfaces" 11859412Smsmith#define VAR_INSTALL_CFG "installConfig" 11959412Smsmith#define VAR_INSTALL_ROOT "installRoot" 12059412Smsmith#define VAR_IPADDR "ipaddr" 12176839Sjlemon#define VAR_KEYMAP "keymap" 12276839Sjlemon#define VAR_LABEL "label" 12376839Sjlemon#define VAR_LABEL_COUNT "labelCount" 12460860Sdes#define VAR_MEDIA_TYPE "mediaType" 12559412Smsmith#define VAR_MEDIA_TIMEOUT "MEDIA_TIMEOUT" 12659412Smsmith#define VAR_MOUSED "moused_enable" 12759412Smsmith#define VAR_MOUSED_PORT "moused_port" 12859412Smsmith#define VAR_MOUSED_TYPE "moused_type" 12959412Smsmith#define VAR_NAMESERVER "nameserver" 13059412Smsmith#define VAR_NETINTERACTIVE "netInteractive" 13159412Smsmith#define VAR_NETMASK "netmask" 13259412Smsmith#define VAR_NETWORK_DEVICE "netDev" 13359412Smsmith#define VAR_NFS_PATH "nfs" 13459412Smsmith#define VAR_NFS_HOST "nfsHost" 13559412Smsmith#define VAR_NFS_SECURE "nfs_reserved_port_only" 13659412Smsmith#define VAR_NFS_SERVER "nfs_server_enable" 13759412Smsmith#define VAR_NO_CONFIRM "noConfirm" 13859412Smsmith#define VAR_NO_ERROR "noError" 13964560Sbde#define VAR_NO_WARN "noWarn" 14064560Sbde#define VAR_NO_USR "noUsr" 14164560Sbde#define VAR_NONINTERACTIVE "nonInteractive" 14264560Sbde#define VAR_NOVELL "novell" 14376839Sjlemon#define VAR_NTPDATE_FLAGS "ntpdate_flags" 14476839Sjlemon#define VAR_PACKAGE "package" 14564560Sbde#define VAR_PARTITION "partition" 14659412Smsmith#define VAR_PCNFSD "pcnfsd" 14760860Sdes#define VAR_PKG_TMPDIR "PKG_TMPDIR" 14871471Sjhb#define VAR_PORTS_PATH "ports" 14960860Sdes#define VAR_RELNAME "releaseName" 15060860Sdes#define VAR_ROOT_SIZE "rootSize" 15160860Sdes#define VAR_ROUTER "router" 15259412Smsmith#define VAR_ROUTER_ENABLE "router_enable" 15359412Smsmith#define VAR_ROUTERFLAGS "routerflags" 15459412Smsmith#define VAR_SERIAL_SPEED "serialSpeed" 15559412Smsmith#define VAR_SLOW_ETHER "slowEthernetCard" 15659412Smsmith#define VAR_SWAP_SIZE "swapSize" 15759412Smsmith#define VAR_TAPE_BLOCKSIZE "tapeBlocksize" 15859412Smsmith#define VAR_UFS_PATH "ufs" 15959412Smsmith#define VAR_USR_SIZE "usrSize" 16059412Smsmith#define VAR_VAR_SIZE "varSize" 16159412Smsmith#define VAR_XF86_CONFIG "_xf86config" 16259412Smsmith 16378025Sdes#define DEFAULT_TAPE_BLOCKSIZE "20" 16478031Sdes 16569799Sdes/* One MB worth of blocks */ 16676839Sjlemon#define ONE_MEG 2048 16769799Sdes 16869799Sdes/* Which selection attributes to use */ 16969799Sdes#define ATTR_SELECTED (ColorDisplay ? item_selected_attr : item_attr) 17069799Sdes#define ATTR_TITLE button_active_attr 17169799Sdes 17276839Sjlemon/* Handy strncpy() macro */ 17376839Sjlemon#define SAFE_STRCPY(to, from) sstrncpy((to), (from), sizeof (to) - 1) 17469799Sdes 17569799Sdes/*** Types ***/ 17669799Sdestypedef unsigned int Boolean; 17769799Sdestypedef struct disk Disk; 17869799Sdestypedef struct chunk Chunk; 17959412Smsmith 18078025Sdes/* Bitfields for menu options */ 18159412Smsmith#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */ 18259412Smsmith#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ 18378113Sdes#define DMENU_CHECKLIST_TYPE 0x4 /* Multiple choice menu */ 18478113Sdes#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */ 18578113Sdes 18678113Sdestypedef struct _dmenu { 18778025Sdes int type; /* What sort of menu we are */ 18878025Sdes char *title; /* Our title */ 18959412Smsmith char *prompt; /* Our prompt */ 19078113Sdes char *helpline; /* Line of help at bottom */ 19178113Sdes char *helpfile; /* Help file for "F1" */ 19278113Sdes dialogMenuItem items[0]; /* Array of menu items */ 19378113Sdes} DMenu; 19478113Sdes 19578113Sdes/* An rc.conf variable */ 19678113Sdestypedef struct _variable { 19778113Sdes struct _variable *next; 19878113Sdes char *name; 19978113Sdes char *value; 20078113Sdes int dirty; 20178113Sdes} Variable; 20278113Sdes 20378113Sdes#define NO_ECHO_OBJ(type) ((type) | (DITEM_NO_ECHO << 16)) 20478113Sdes#define TYPE_OF_OBJ(type) ((type) & 0xff) 20578113Sdes#define ATTR_OF_OBJ(type) ((type) >> 16) 20678113Sdes 20778113Sdes/* A screen layout structure */ 20878113Sdestypedef struct _layout { 20978113Sdes int y; /* x & Y co-ordinates */ 21078113Sdes int x; 21178113Sdes int len; /* The size of the dialog on the screen */ 21278113Sdes int maxlen; /* How much the user can type in ... */ 21378113Sdes char *prompt; /* The string for the prompt */ 21478113Sdes char *help; /* The display for the help line */ 21578113Sdes void *var; /* The var to set when this changes */ 21678113Sdes int type; /* The type of the dialog to create */ 21778113Sdes void *obj; /* The obj pointer returned by libdialog */ 21878113Sdes} Layout; 21978113Sdes 22078113Sdestypedef enum { 22178113Sdes DEVICE_TYPE_NONE, 22278113Sdes DEVICE_TYPE_DISK, 22378113Sdes DEVICE_TYPE_FLOPPY, 22478113Sdes DEVICE_TYPE_FTP, 22578113Sdes DEVICE_TYPE_NETWORK, 22678113Sdes DEVICE_TYPE_CDROM, 22778113Sdes DEVICE_TYPE_TAPE, 22878113Sdes DEVICE_TYPE_DOS, 22978113Sdes DEVICE_TYPE_UFS, 23078113Sdes DEVICE_TYPE_NFS, 23178113Sdes DEVICE_TYPE_ANY, 23278113Sdes} DeviceType; 23378113Sdes 23478113Sdes/* CDROM mount codes */ 23578113Sdes#define CD_UNMOUNTED 0 23678113Sdes#define CD_ALREADY_MOUNTED 1 23778113Sdes#define CD_WE_MOUNTED_IT 2 23878113Sdes 23978113Sdes/* A "device" from sysinstall's point of view */ 24078113Sdestypedef struct _device { 24178113Sdes char name[DEV_NAME_MAX]; 24278113Sdes char *description; 24378113Sdes char *devname; 24478113Sdes DeviceType type; 24578113Sdes Boolean enabled; 24678113Sdes Boolean (*init)(struct _device *dev); 24778113Sdes FILE * (*get)(struct _device *dev, char *file, Boolean probe); 24878113Sdes void (*shutdown)(struct _device *dev); 24978113Sdes void *private; 25078113Sdes unsigned int flags; 25178113Sdes} Device; 25278113Sdes 25378113Sdes/* Some internal representations of partitions */ 25478113Sdestypedef enum { 25578113Sdes PART_NONE, 25678113Sdes PART_SLICE, 25778113Sdes PART_SWAP, 25878113Sdes PART_FILESYSTEM, 25978113Sdes PART_FAT, 26069799Sdes} PartType; 26159412Smsmith 26269799Sdes/* The longest newfs command we'll hand to system() */ 26378031Sdes#define NEWFS_CMD_MAX 256 26478031Sdes 26569799Sdestypedef struct _part_info { 26678031Sdes Boolean newfs; 26778031Sdes char mountpoint[FILENAME_MAX]; 26878031Sdes char newfs_cmd[NEWFS_CMD_MAX]; 26978031Sdes} PartInfo; 27078031Sdes 27178031Sdes/* An option */ 27278031Sdestypedef struct _opt { 27367589Sdes char *name; 27467589Sdes char *desc; 27567589Sdes enum { OPT_IS_STRING, OPT_IS_INT, OPT_IS_FUNC, OPT_IS_VAR } type; 27659412Smsmith void *data; 27759412Smsmith void *aux; 27867589Sdes char *(*check)(); 27959412Smsmith} Option; 28059412Smsmith 28167589Sdes/* Weird index nodey things we use for keeping track of package information */ 28259412Smsmithtypedef enum { PACKAGE, PLACE } node_type; /* Types of nodes */ 28359412Smsmith 28467589Sdestypedef struct _pkgnode { /* A node in the reconstructed hierarchy */ 28559412Smsmith struct _pkgnode *next; /* My next sibling */ 28659412Smsmith node_type type; /* What am I? */ 28767589Sdes char *name; /* My name */ 28859412Smsmith char *desc; /* My description (Hook) */ 28959412Smsmith struct _pkgnode *kids; /* My little children */ 29067589Sdes void *data; /* A place to hang my data */ 29159412Smsmith} PkgNode; 29259412Smsmithtypedef PkgNode *PkgNodePtr; 29378031Sdes 29459412Smsmith/* A single package */ 29559412Smsmithtypedef struct _indexEntry { /* A single entry in an INDEX file */ 29659412Smsmith char *name; /* name */ 29778025Sdes char *path; /* full path to port */ 29878031Sdes char *prefix; /* port prefix */ 29969799Sdes char *comment; /* one line description */ 30069799Sdes char *descrfile; /* path to description file */ 30169799Sdes char *deps; /* packages this depends on */ 30269799Sdes int depc; /* how many depend on me */ 30369799Sdes int installed; /* indicates if it is installed */ 30459412Smsmith char *maintainer; /* maintainer */ 30578031Sdes} IndexEntry; 30678031Sdestypedef IndexEntry *IndexEntryPtr; 30767589Sdes 30878031Sdestypedef int (*commandFunc)(char *key, void *data); 30967589Sdes 31078031Sdes#define HOSTNAME_FIELD_LEN 128 31167589Sdes#define IPADDR_FIELD_LEN 16 31278031Sdes#define EXTRAS_FIELD_LEN 128 31378031Sdes 31478031Sdes/* This is the structure that Network devices carry around in their private, erm, structures */ 31567589Sdestypedef struct _devPriv { 31678025Sdes char ipaddr[IPADDR_FIELD_LEN]; 31778025Sdes char netmask[IPADDR_FIELD_LEN]; 31878031Sdes char extras[EXTRAS_FIELD_LEN]; 31969799Sdes} DevInfo; 32069799Sdes 32178025Sdes 32269799Sdes/*** Externs ***/ 32369799Sdesextern jmp_buf BailOut; /* Used to get the heck out */ 32469799Sdesextern int DebugFD; /* Where diagnostic output goes */ 32578031Sdesextern Boolean Fake; /* Don't actually modify anything - testing */ 32669995Sdesextern Boolean SystemWasInstalled; /* Did we install it? */ 32778025Sdesextern Boolean RunningAsInit; /* Are we running stand-alone? */ 32859412Smsmithextern Boolean DialogActive; /* Is the dialog() stuff up? */ 32978113Sdesextern Boolean ColorDisplay; /* Are we on a color display? */ 33065633Sdesextern Boolean OnVTY; /* On a syscons VTY? */ 33178113Sdesextern Variable *VarHead; /* The head of the variable chain */ 33285289Sdesextern Device *mediaDevice; /* Where we're getting our distribution from */ 33385289Sdesextern unsigned int Dists; /* Which distributions we want */ 33485289Sdesextern unsigned int DESDists; /* Which naughty distributions we want */ 33585289Sdesextern unsigned int SrcDists; /* Which src distributions we want */ 33685289Sdesextern unsigned int XF86Dists; /* Which XFree86 dists we want */ 33785289Sdesextern unsigned int XF86ServerDists; /* The XFree86 servers we want */ 33885289Sdesextern unsigned int XF86FontDists; /* The XFree86 fonts we want */ 33985289Sdesextern int BootMgr; /* Which boot manager to use */ 34085289Sdesextern int StatusLine; /* Where to print our status messages */ 34185289Sdesextern DMenu MenuInitial; /* Initial installation menu */ 34285289Sdesextern DMenu MenuFixit; /* Fixit repair menu */ 34385289Sdesextern DMenu MenuMBRType; /* Type of MBR to write on the disk */ 34485289Sdesextern DMenu MenuConfigure; /* Final configuration menu */ 34585289Sdesextern DMenu MenuDocumentation; /* Documentation menu */ 34685289Sdesextern DMenu MenuFTPOptions; /* FTP Installation options */ 34785289Sdesextern DMenu MenuIndex; /* Index menu */ 34885289Sdesextern DMenu MenuOptions; /* Installation options */ 34985289Sdesextern DMenu MenuOptionsLanguage; /* Language options menu */ 35085289Sdesextern DMenu MenuMedia; /* Media type menu */ 35185289Sdesextern DMenu MenuMouse; /* Mouse type menu */ 35285289Sdesextern DMenu MenuMediaCDROM; /* CDROM media menu */ 35385289Sdesextern DMenu MenuMediaDOS; /* DOS media menu */ 35485289Sdesextern DMenu MenuMediaFloppy; /* Floppy media menu */ 35585289Sdesextern DMenu MenuMediaFTP; /* FTP media menu */ 35685289Sdesextern DMenu MenuMediaTape; /* Tape media menu */ 35785289Sdesextern DMenu MenuNetworkDevice; /* Network device menu */ 35885289Sdesextern DMenu MenuNTP; /* NTP time server menu */ 35985289Sdesextern DMenu MenuStartup; /* Startup services menu */ 36085289Sdesextern DMenu MenuSyscons; /* System console configuration menu */ 36185289Sdesextern DMenu MenuSysconsFont; /* System console font configuration menu */ 36285289Sdesextern DMenu MenuSysconsKeymap; /* System console keymap configuration menu */ 36385289Sdesextern DMenu MenuSysconsKeyrate; /* System console keyrate configuration menu */ 36485289Sdesextern DMenu MenuSysconsSaver; /* System console saver configuration menu */ 36585289Sdesextern DMenu MenuSysconsScrnmap; /* System console screenmap configuration menu */ 36685289Sdesextern DMenu MenuNetworking; /* Network configuration menu */ 36785289Sdesextern DMenu MenuInstallCustom; /* Custom Installation menu */ 36885289Sdesextern DMenu MenuDistributions; /* Distribution menu */ 36985289Sdesextern DMenu MenuDiskDevices; /* Disk type devices */ 37085289Sdesextern DMenu MenuSubDistributions; /* Custom distribution menu */ 37185289Sdesextern DMenu MenuDESDistributions; /* DES distribution menu */ 37285289Sdesextern DMenu MenuSrcDistributions; /* Source distribution menu */ 37385289Sdesextern DMenu MenuXF86; /* XFree86 main menu */ 37485289Sdesextern DMenu MenuXF86Select; /* XFree86 distribution selection menu */ 37585289Sdesextern DMenu MenuXF86SelectCore; /* XFree86 core distribution menu */ 37685289Sdesextern DMenu MenuXF86SelectServer; /* XFree86 server distribution menu */ 37785289Sdesextern DMenu MenuXF86SelectPC98Server; /* XFree86 server distribution menu */ 37885289Sdesextern DMenu MenuXF86SelectFonts; /* XFree86 font selection menu */ 37985289Sdesextern DMenu MenuXF86SelectFonts; /* XFree86 font selection menu */ 38085289Sdesextern DMenu MenuXDesktops; /* Disk devices menu */ 38185289Sdesextern DMenu MenuHTMLDoc; /* HTML Documentation menu */ 38285289Sdesextern DMenu MenuUsermgmt; /* User management menu */ 38385289Sdesextern DMenu MenuFixit; /* Fixit floppy/CDROM/shell menu */ 38485289Sdesextern DMenu MenuXF86Config; /* Select XFree86 configuration type */ 38585289Sdes 38685289Sdes/* Stuff from libdialog which isn't properly declared outside */ 38785289Sdesextern void display_helpfile(void); 38885289Sdesextern void display_helpline(WINDOW *w, int y, int width); 38985289Sdes 39085289Sdes/*** Prototypes ***/ 39185289Sdes 39285289Sdes/* anonFTP.c */ 39385289Sdesextern int configAnonFTP(dialogMenuItem *self); 39485289Sdes 39585289Sdes/* cdrom.c */ 39685289Sdesextern Boolean mediaInitCDROM(Device *dev); 39785289Sdesextern FILE *mediaGetCDROM(Device *dev, char *file, Boolean probe); 39885289Sdesextern void mediaShutdownCDROM(Device *dev); 39985289Sdes 40078113Sdes/* command.c */ 40178113Sdesextern void command_clear(void); 40278025Sdesextern void command_sort(void); 40378025Sdesextern void command_execute(void); 40465633Sdesextern void command_shell_add(char *key, char *fmt, ...); 40578025Sdesextern void command_func_add(char *key, commandFunc func, void *data); 40669799Sdes 40769799Sdes/* config.c */ 40869799Sdesextern void configEnvironmentRC_conf(void); 40969799Sdesextern void configEnvironmentResolv(char *config); 41069799Sdesextern void configRC_conf(void); 41169799Sdesextern int configFstab(dialogMenuItem *self); 41285657Sdillonextern int configRC(dialogMenuItem *self); 41369799Sdesextern int configResolv(dialogMenuItem *self); 41469799Sdesextern int configPackages(dialogMenuItem *self); 41569799Sdesextern int configSaver(dialogMenuItem *self); 41669799Sdesextern int configSaverTimeout(dialogMenuItem *self); 41769799Sdesextern int configNTP(dialogMenuItem *self); 41869799Sdesextern int configUsers(dialogMenuItem *self); 41969799Sdesextern int configXSetup(dialogMenuItem *self); 42069799Sdesextern int configXDesktop(dialogMenuItem *self); 42169799Sdesextern int configRouter(dialogMenuItem *self); 42269799Sdesextern int configPCNFSD(dialogMenuItem *self); 42385657Sdillonextern int configNFSServer(dialogMenuItem *self); 42478025Sdesextern int configWriteRC_conf(dialogMenuItem *self); 42565633Sdes 42665633Sdes/* crc.c */ 42778113Sdesextern int crc(int, unsigned long *, unsigned long *); 42878113Sdes 42978113Sdes/* devices.c */ 43078025Sdesextern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)(dialogMenuItem *d), 43178025Sdes int (*check)(dialogMenuItem *d)); 43265633Sdesextern void deviceGetAll(void); 43365633Sdesextern void deviceReset(void); 43465633Sdesextern void deviceRescan(void); 43565633Sdesextern Device **deviceFind(char *name, DeviceType type); 43685657Sdillonextern Device **deviceFindDescr(char *name, char *desc, DeviceType class); 43785657Sdillonextern int deviceCount(Device **devs); 43869799Sdesextern Device *new_device(char *name); 43978025Sdesextern Device *deviceRegister(char *name, char *desc, char *devname, DeviceType type, Boolean enabled, 44065633Sdes Boolean (*init)(Device *mediadev), 44165633Sdes FILE * (*get)(Device *dev, char *file, Boolean probe), 44278113Sdes void (*shutDown)(Device *mediadev), 44378113Sdes void *private); 44478113Sdesextern Boolean dummyInit(Device *dev); 44578025Sdesextern FILE *dummyGet(Device *dev, char *dist, Boolean probe); 44678025Sdesextern void dummyShutdown(Device *dev); 44765633Sdes 44887275Srwatson/* disks.c */ 44987275Srwatsonextern int diskPartitionEditor(dialogMenuItem *self); 45087275Srwatsonextern int diskPartitionWrite(dialogMenuItem *self); 45187275Srwatsonextern int diskGetSelectCount(Device ***devs); 45287275Srwatsonextern void diskPartition(Device *dev); 45387275Srwatson 45478025Sdes/* dispatch.c */ 45569995Sdesextern int dispatchCommand(char *command); 45687275Srwatsonextern int dispatch_load_floppy(dialogMenuItem *self); 45778025Sdesextern int dispatch_load_file_int(int); 45865633Sdesextern int dispatch_load_file(dialogMenuItem *self); 45965633Sdes 46078113Sdes 46178113Sdes/* dist.c */ 46278113Sdesextern int distReset(dialogMenuItem *self); 46378025Sdesextern int distConfig(dialogMenuItem *self); 46478025Sdesextern int distSetCustom(dialogMenuItem *self); 46576839Sjlemonextern int distSetDeveloper(dialogMenuItem *self); 46678025Sdesextern int distSetXDeveloper(dialogMenuItem *self); 46776839Sjlemonextern int distSetKernDeveloper(dialogMenuItem *self); 46876839Sjlemonextern int distSetXKernDeveloper(dialogMenuItem *self); 46976839Sjlemonextern int distSetUser(dialogMenuItem *self); 47076839Sjlemonextern int distSetXUser(dialogMenuItem *self); 47176839Sjlemonextern int distSetMinimum(dialogMenuItem *self); 47276839Sjlemonextern int distSetEverything(dialogMenuItem *self); 47376839Sjlemonextern int distSetDES(dialogMenuItem *self); 47476839Sjlemonextern int distSetSrc(dialogMenuItem *self); 47576839Sjlemonextern int distSetXF86(dialogMenuItem *self); 47678116Sdesextern int distExtractAll(dialogMenuItem *self); 47776839Sjlemon 47878025Sdes/* dmenu.c */ 47978025Sdesextern int dmenuDisplayFile(dialogMenuItem *tmp); 48076839Sjlemonextern int dmenuSubmenu(dialogMenuItem *tmp); 48176839Sjlemonextern int dmenuSystemCommand(dialogMenuItem *tmp); 48278113Sdesextern int dmenuSystemCommandBox(dialogMenuItem *tmp); 48378113Sdesextern int dmenuExit(dialogMenuItem *tmp); 48478113Sdesextern int dmenuISetVariable(dialogMenuItem *tmp); 48578025Sdesextern int dmenuSetVariable(dialogMenuItem *tmp); 48678025Sdesextern int dmenuSetKmapVariable(dialogMenuItem *tmp); 48767588Sdesextern int dmenuSetVariables(dialogMenuItem *tmp); 48869995Sdesextern int dmenuToggleVariable(dialogMenuItem *tmp); 48967588Sdesextern int dmenuSetFlag(dialogMenuItem *tmp); 49069995Sdesextern int dmenuSetValue(dialogMenuItem *tmp); 49178025Sdesextern Boolean dmenuOpen(DMenu *menu, int *choice, int *scroll, int *curr, int *max, Boolean buttons); 49278025Sdesextern Boolean dmenuOpenSimple(DMenu *menu, Boolean buttons); 49367588Sdesextern int dmenuVarCheck(dialogMenuItem *item); 49467588Sdesextern int dmenuVarsCheck(dialogMenuItem *item); 49573923Sjhbextern int dmenuFlagCheck(dialogMenuItem *item); 49673923Sjhbextern int dmenuRadioCheck(dialogMenuItem *item); 49773923Sjhb 49867588Sdes/* doc.c */ 49967588Sdesextern int docBrowser(dialogMenuItem *self); 50067588Sdesextern int docShowDocument(dialogMenuItem *self); 50167588Sdes 50267588Sdes/* dos.c */ 50367588Sdesextern Boolean mediaCloseDOS(Device *dev, FILE *fp); 50467588Sdesextern Boolean mediaInitDOS(Device *dev); 50567588Sdesextern FILE *mediaGetDOS(Device *dev, char *file, Boolean probe); 50667588Sdesextern void mediaShutdownDOS(Device *dev); 50767588Sdes 50867588Sdes/* floppy.c */ 50967588Sdesextern int getRootFloppy(void); 51067588Sdesextern Boolean mediaInitFloppy(Device *dev); 51167588Sdesextern FILE *mediaGetFloppy(Device *dev, char *file, Boolean probe); 51267588Sdesextern void mediaShutdownFloppy(Device *dev); 51367588Sdes 51467588Sdes/* ftp_strat.c */ 51567588Sdesextern Boolean mediaCloseFTP(Device *dev, FILE *fp); 51669995Sdesextern Boolean mediaInitFTP(Device *dev); 51769995Sdesextern FILE *mediaGetFTP(Device *dev, char *file, Boolean probe); 51867588Sdesextern void mediaShutdownFTP(Device *dev); 51969995Sdes 52067588Sdes/* globals.c */ 52167588Sdesextern void globalsInit(void); 52269799Sdes 52369799Sdes/* index.c */ 52467588Sdesint index_read(FILE *fp, PkgNodePtr papa); 52567588Sdesint index_menu(PkgNodePtr root, PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll); 52667588Sdesvoid index_init(PkgNodePtr top, PkgNodePtr plist); 52767588Sdesvoid index_node_free(PkgNodePtr top, PkgNodePtr plist); 52867588Sdesvoid index_sort(PkgNodePtr top); 52969799Sdesvoid index_print(PkgNodePtr top, int level); 53069799Sdesint index_extract(Device *dev, PkgNodePtr top, PkgNodePtr plist); 53169799Sdes 53269799Sdes/* install.c */ 53367588Sdesextern Boolean checkLabels(Boolean whinge, Chunk **rdev, Chunk **sdev, Chunk **udev, Chunk **vdev); 53478025Sdesextern int installCommit(dialogMenuItem *self); 53567588Sdesextern int installCustomCommit(dialogMenuItem *self); 53678025Sdesextern int installExpress(dialogMenuItem *self); 53767588Sdesextern int installNovice(dialogMenuItem *self); 53867588Sdesextern int installFixitHoloShell(dialogMenuItem *self); 53967588Sdesextern int installFixitCDROM(dialogMenuItem *self); 54067588Sdesextern int installFixitFloppy(dialogMenuItem *self); 54167588Sdesextern int installFixupBin(dialogMenuItem *self); 54267588Sdesextern int installFixupXFree(dialogMenuItem *self); 54367588Sdesextern int installUpgrade(dialogMenuItem *self); 54467588Sdesextern int installFilesystems(dialogMenuItem *self); 54567588Sdesextern int installVarDefaults(dialogMenuItem *self); 54667588Sdesextern void installEnvironment(void); 54767588Sdesextern Boolean copySelf(void); 54867588Sdes 54967588Sdes/* kget.c */ 55067588Sdesextern int kget(char *out); 55167588Sdes 55267588Sdes/* keymap.c */ 55367588Sdesextern int loadKeymap(const char *lang); 55478113Sdes 55578113Sdes/* label.c */ 55678113Sdesextern int diskLabelEditor(dialogMenuItem *self); 55778025Sdesextern int diskLabelCommit(dialogMenuItem *self); 55878025Sdes 55967588Sdes/* lndir.c */ 56069995Sdesextern int lndir(char *from, char *to); 56167588Sdes 56269799Sdes/* makedevs.c (auto-generated) */ 56374135Sjlemonextern const char termcap_ansi[]; 56467588Sdesextern const char termcap_vt100[]; 56572200Sbmilekicextern const char termcap_cons25[]; 56667588Sdesextern const char termcap_cons25_m[]; 56767588Sdesextern const char termcap_cons25r[]; 56867588Sdesextern const char termcap_cons25r_m[]; 56967588Sdesextern const char termcap_cons25l1[]; 57072200Sbmilekicextern const char termcap_cons25l1_m[]; 57167588Sdesextern const u_char font_iso_8x16[]; 57269995Sdesextern const u_char font_cp850_8x16[]; 57378025Sdesextern const u_char font_cp866_8x16[]; 57478031Sdesextern const u_char koi8_r2cp866[]; 57567588Sdesextern u_char default_scrnmap[]; 57667588Sdes 57767588Sdes/* media.c */ 57867588Sdesextern char *cpioVerbosity(void); 57978025Sdesextern void mediaClose(void); 58071471Sjhbextern int mediaTimeout(void); 58178025Sdesextern int mediaSetCDROM(dialogMenuItem *self); 58273923Sjhbextern int mediaSetFloppy(dialogMenuItem *self); 58378031Sdesextern int mediaSetDOS(dialogMenuItem *self); 58478031Sdesextern int mediaSetTape(dialogMenuItem *self); 58578031Sdesextern int mediaSetFTP(dialogMenuItem *self); 58678031Sdesextern int mediaSetFTPActive(dialogMenuItem *self); 58778031Sdesextern int mediaSetFTPPassive(dialogMenuItem *self); 58878031Sdesextern int mediaSetUFS(dialogMenuItem *self); 58978031Sdesextern int mediaSetNFS(dialogMenuItem *self); 59078031Sdesextern int mediaSetFTPUserPass(dialogMenuItem *self); 59178031Sdesextern int mediaSetCPIOVerbosity(dialogMenuItem *self); 59278031Sdesextern int mediaGetType(dialogMenuItem *self); 59378025Sdesextern Boolean mediaExtractDist(char *dir, char *dist, FILE *fp); 59467588Sdesextern Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpic); 59578031Sdesextern Boolean mediaExtractDistEnd(int zpid, int cpid); 59671471Sjhbextern Boolean mediaVerify(void); 59778025Sdesextern FILE *mediaGenericGet(char *base, const char *file); 59867588Sdes 59967588Sdes/* misc.c */ 60067588Sdesextern Boolean file_readable(char *fname); 60169799Sdesextern Boolean file_executable(char *fname); 60269799Sdesextern Boolean directory_exists(const char *dirname); 60369799Sdesextern char *root_bias(char *path); 60469799Sdesextern char *itoa(int value); 60569799Sdesextern char *string_concat(char *p1, char *p2); 60669799Sdesextern char *string_concat3(char *p1, char *p2, char *p3); 60769799Sdesextern char *string_prune(char *str); 60869799Sdesextern char *string_skipwhite(char *str); 60967588Sdesextern char *string_copy(char *s1, char *s2); 61078025Sdesextern char *pathBaseName(const char *path); 61178025Sdesextern void safe_free(void *ptr); 61278025Sdesextern void *safe_malloc(size_t size); 61378025Sdesextern void *safe_realloc(void *orig, size_t size); 61478025Sdesextern dialogMenuItem *item_add(dialogMenuItem *list, char *prompt, char *title, 61578025Sdes int (*checked)(dialogMenuItem *self), 61669995Sdes int (*fire)(dialogMenuItem *self), 61769995Sdes void (*selected)(dialogMenuItem *self, int is_selected), 61878025Sdes void *data, int aux, int *curr, int *max); 61967588Sdesextern void items_free(dialogMenuItem *list, int *curr, int *max); 62067588Sdesextern int Mkdir(char *); 62167588Sdesextern int Mount(char *, void *data); 62267588Sdesextern WINDOW *openLayoutDialog(char *helpfile, char *title, int x, int y, int width, int height); 62367588Sdesextern ComposeObj *initLayoutDialog(WINDOW *win, Layout *layout, int x, int y, int *max); 62467588Sdesextern int layoutDialogLoop(WINDOW *win, Layout *layout, ComposeObj **obj, 62567588Sdes int *n, int max, int *cbutton, int *cancel); 62667588Sdes 62767588Sdesextern WINDOW *savescr(void); 62867588Sdesextern void restorescr(WINDOW *w); 62967588Sdesextern char *sstrncpy(char *dst, const char *src, int size); 63067588Sdes 63171471Sjhb/* mouse.c */ 63278025Sdesextern int mousedTest(dialogMenuItem *self); 63369799Sdesextern int mousedDisable(dialogMenuItem *self); 63469799Sdes 63569799Sdes/* msg.c */ 63669799Sdesextern Boolean isDebug(void); 63778025Sdesextern void msgInfo(char *fmt, ...); 63878025Sdesextern void msgYap(char *fmt, ...); 63978025Sdesextern void msgWarn(char *fmt, ...); 64071471Sjhbextern void msgDebug(char *fmt, ...); 64167588Sdesextern void msgError(char *fmt, ...); 64267588Sdesextern void msgFatal(char *fmt, ...); 64367588Sdesextern void msgConfirm(char *fmt, ...); 64467588Sdesextern void msgNotify(char *fmt, ...); 64567588Sdesextern void msgWeHaveOutput(char *fmt, ...); 64667588Sdesextern int msgYesNo(char *fmt, ...); 64778025Sdesextern char *msgGetInput(char *buf, char *fmt, ...); 64878025Sdesextern int msgSimpleConfirm(char *); 64978025Sdesextern int msgSimpleNotify(char *); 65078025Sdes 65178025Sdes/* network.c */ 65267588Sdesextern Boolean mediaInitNetwork(Device *dev); 65374135Sjlemonextern void mediaShutdownNetwork(Device *dev); 65478113Sdes 65578113Sdes/* nfs.c */ 65678113Sdesextern Boolean mediaInitNFS(Device *dev); 65778025Sdesextern FILE *mediaGetNFS(Device *dev, char *file, Boolean probe); 65878025Sdesextern void mediaShutdownNFS(Device *dev); 65974135Sjlemon 66083366Sjulian/* options.c */ 66178025Sdesextern int optionsEditor(dialogMenuItem *self); 66274135Sjlemon 66374135Sjlemon/* package.c */ 66478113Sdesextern int packageAdd(dialogMenuItem *self); 66578113Sdesextern int package_add(char *name); 66678113Sdesextern int package_extract(Device *dev, char *name, Boolean depended); 66778025Sdesextern Boolean package_exists(char *name); 66878113Sdes 66978113Sdes/* system.c */ 67078113Sdesextern void systemInitialize(int argc, char **argv); 67178113Sdesextern void systemShutdown(int status); 67278113Sdesextern int execExecute(char *cmd, char *name); 67378113Sdesextern int systemExecute(char *cmd); 67478113Sdesextern int systemDisplayHelp(char *file); 67578113Sdesextern char *systemHelpFile(char *file, char *buf); 67678113Sdesextern void systemChangeFont(const u_char font[]); 67778113Sdesextern void systemChangeLang(char *lang); 67878113Sdesextern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mono, const u_char m_termcap[]); 67978113Sdesextern void systemChangeScreenmap(const u_char newmap[]); 68078113Sdesextern void systemCreateHoloshell(void); 68178113Sdesextern int vsystem(char *fmt, ...); 68278113Sdes 68383366Sjulian/* tape.c */ 68478113Sdesextern char *mediaTapeBlocksize(void); 68583366Sjulianextern Boolean mediaInitTape(Device *dev); 68678113Sdesextern FILE *mediaGetTape(Device *dev, char *file, Boolean probe); 68778113Sdesextern void mediaShutdownTape(Device *dev); 68878113Sdes 68978113Sdes/* tcpip.c */ 69078113Sdesextern int tcpOpenDialog(Device *dev); 69178113Sdesextern int tcpMenuSelect(dialogMenuItem *self); 69278113Sdesextern Device *tcpDeviceSelect(void); 69378113Sdes 69478113Sdes/* termcap.c */ 69578113Sdesextern int set_termcap(void); 69678113Sdes 69778113Sdes/* ufs.c */ 69878113Sdesextern void mediaShutdownUFS(Device *dev); 69978113Sdesextern Boolean mediaInitUFS(Device *dev); 70078113Sdesextern FILE *mediaGetUFS(Device *dev, char *file, Boolean probe); 70178113Sdes 70278113Sdes/* user.c */ 70378113Sdesextern int userAddGroup(dialogMenuItem *self); 70485129Sdesextern int userAddUser(dialogMenuItem *self); 70574135Sjlemon 70674135Sjlemon/* variable.c */ 70774135Sjlemonextern void variable_set(char *var, int dirty); 70874135Sjlemonextern void variable_set2(char *name, char *value, int dirty); 70985289Sdesextern char *variable_get(char *var); 71078025Sdesextern int variable_cmp(char *var, char *value); 71174135Sjlemonextern void variable_unset(char *var); 71274135Sjlemonextern char *variable_get_value(char *var, char *prompt, int dirty); 71378025Sdesextern int variable_check(char *data); 71474135Sjlemonextern int dump_variables(dialogMenuItem *self); 71574135Sjlemon 71678113Sdes/* wizard.c */ 71778113Sdesextern void slice_wizard(Disk *d); 71878113Sdes 71978025Sdes#endif 72078025Sdes/* _SYSINSTALL_H_INCLUDE */ 72174135Sjlemon