18097Sjkh/* 28097Sjkh * Copyright (c) 1995 38097Sjkh * Jordan Hubbard. All rights reserved. 48097Sjkh * 58097Sjkh * Redistribution and use in source and binary forms, with or without 68097Sjkh * modification, are permitted provided that the following conditions 78097Sjkh * are met: 88097Sjkh * 1. Redistributions of source code must retain the above copyright 98881Srgrimes * notice, this list of conditions and the following disclaimer, 108881Srgrimes * verbatim and that no modifications are made prior to this 118097Sjkh * point in the file. 128097Sjkh * 2. Redistributions in binary form must reproduce the above copyright 138097Sjkh * notice, this list of conditions and the following disclaimer in the 148097Sjkh * documentation and/or other materials provided with the distribution. 158097Sjkh * 168097Sjkh * THIS SOFTWARE IS PROVIDED BY JORDAN HUBBARD ``AS IS'' AND 178097Sjkh * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 188097Sjkh * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 198097Sjkh * ARE DISCLAIMED. IN NO EVENT SHALL JORDAN HUBBARD OR HIS PETS BE LIABLE 208097Sjkh * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 218097Sjkh * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 228097Sjkh * OR SERVICES; LOSS OF USE, DATA, LIFE OR PROFITS; OR BUSINESS INTERRUPTION) 238097Sjkh * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 248097Sjkh * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 258097Sjkh * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 268097Sjkh * SUCH DAMAGE. 278097Sjkh * 28124067Sobrien * $FreeBSD$ 298097Sjkh */ 308097Sjkh 31161060Snetchild#ifndef _SADE_H_INCLUDE 32161060Snetchild#define _SADE_H_INCLUDE 338097Sjkh 3421243Sjkh#include <sys/types.h> 3521243Sjkh#include <sys/wait.h> 3637735Sjkh#include <errno.h> 3725052Sjkh#include <setjmp.h> 388097Sjkh#include <stdio.h> 398097Sjkh#include <stdlib.h> 408097Sjkh#include <string.h> 418097Sjkh#include <unistd.h> 428097Sjkh#include <dialog.h> 4321243Sjkh#include "ui_objects.h" 4421243Sjkh#include "dir.h" 4521243Sjkh#include "colors.h" 468097Sjkh 478208Sjkh/*** Defines ***/ 488208Sjkh 49161060Snetchild#if defined(__i386__) || defined(__amd64__) 50107336Sjhb#define WITH_SYSCONS 51107336Sjhb#define WITH_MICE 52107336Sjhb#endif 53107336Sjhb 54121865Smarcel#if defined(__i386__) || defined(__amd64__) 55107336Sjhb#define WITH_SLICES 56107336Sjhb#endif 57107336Sjhb 58158408Sjhb#if defined(__i386__) 59107336Sjhb#define WITH_LINUX 60107336Sjhb#endif 61107336Sjhb 628208Sjkh/* device limits */ 63111592Sjwd#define DEV_NAME_MAX 128 /* The maximum length of a device name */ 6412661Speter#define DEV_MAX 100 /* The maximum number of devices we'll deal with */ 6517007Sjkh#define IO_ERROR -2 /* Status code for I/O error rather than normal EOF */ 668208Sjkh 678705Sjkh/* 688705Sjkh * I make some pretty gross assumptions about having a max of 50 chunks 698705Sjkh * total - 8 slices and 42 partitions. I can't easily display many more 708705Sjkh * than that on the screen at once! 718705Sjkh * 728705Sjkh * For 2.1 I'll revisit this and try to make it more dynamic, but since 738705Sjkh * this will catch 99.99% of all possible cases, I'm not too worried. 748705Sjkh */ 7512661Speter#define MAX_CHUNKS 40 768208Sjkh 7712661Speter/* Internal environment variable names */ 7815788Sjkh#define DISK_PARTITIONED "_diskPartitioned" 7915788Sjkh#define DISK_LABELLED "_diskLabelled" 8015788Sjkh#define DISK_SELECTED "_diskSelected" 8115788Sjkh#define SYSTEM_STATE "_systemState" 8215788Sjkh#define RUNNING_ON_ROOT "_runningOnRoot" 838549Sjkh 8412661Speter/* Ones that can be tweaked from config files */ 8512661Speter#define VAR_BLANKTIME "blanktime" 8612661Speter#define VAR_BOOTMGR "bootManager" 8712661Speter#define VAR_DEBUG "debug" 8812661Speter#define VAR_DISK "disk" 8997667Sjhb#define VAR_DISKINTERACTIVE "diskInteractive" 9025473Spst#define VAR_DEDICATE_DISK "dedicateDisk" 9129539Spst#define VAR_COMMAND "command" 9229539Spst#define VAR_CONFIG_FILE "configFile" 9312661Speter#define VAR_GEOMETRY "geometry" 9424038Sjkh#define VAR_INSTALL_CFG "installConfig" 9517034Sjkh#define VAR_INSTALL_ROOT "installRoot" 9612661Speter#define VAR_LABEL "label" 9712661Speter#define VAR_LABEL_COUNT "labelCount" 9849441Sphk#define VAR_NEWFS_ARGS "newfsArgs" 9912661Speter#define VAR_NO_CONFIRM "noConfirm" 10026795Sjkh#define VAR_NO_ERROR "noError" 10126717Sjkh#define VAR_NO_WARN "noWarn" 10237735Sjkh#define VAR_NO_USR "noUsr" 10387583Sdillon#define VAR_NO_TMP "noTmp" 10487557Sdillon#define VAR_NO_HOME "noHome" 10526456Sjkh#define VAR_NONINTERACTIVE "nonInteractive" 10626456Sjkh#define VAR_PARTITION "partition" 10712661Speter#define VAR_RELNAME "releaseName" 10812661Speter#define VAR_ROOT_SIZE "rootSize" 10912661Speter#define VAR_SWAP_SIZE "swapSize" 11012661Speter#define VAR_TAPE_BLOCKSIZE "tapeBlocksize" 11112661Speter#define VAR_UFS_PATH "ufs" 11212661Speter#define VAR_USR_SIZE "usrSize" 11312661Speter#define VAR_VAR_SIZE "varSize" 11487583Sdillon#define VAR_TMP_SIZE "tmpSize" 11578160Solgeni#define VAR_TERM "TERM" 11679813Sache#define VAR_CONSTERM "_consterm" 1179202Srgrimes 11812661Speter#define DEFAULT_TAPE_BLOCKSIZE "20" 1199202Srgrimes 12012661Speter/* One MB worth of blocks */ 12112661Speter#define ONE_MEG 2048 12257617Sjkh#define ONE_GIG (ONE_MEG * 1024) 1238549Sjkh 12416208Sjkh/* Which selection attributes to use */ 12516294Sjkh#define ATTR_SELECTED (ColorDisplay ? item_selected_attr : item_attr) 12616366Sjkh#define ATTR_TITLE button_active_attr 12716208Sjkh 12820247Sjkh/* Handy strncpy() macro */ 12920569Sjkh#define SAFE_STRCPY(to, from) sstrncpy((to), (from), sizeof (to) - 1) 13016366Sjkh 1318208Sjkh/*** Types ***/ 13276402Sjkhtypedef int Boolean; 1338549Sjkhtypedef struct disk Disk; 1348549Sjkhtypedef struct chunk Chunk; 1358097Sjkh 13615242Sjkh/* Bitfields for menu options */ 13715242Sjkh#define DMENU_NORMAL_TYPE 0x1 /* Normal dialog menu */ 13815242Sjkh#define DMENU_RADIO_TYPE 0x2 /* Radio dialog menu */ 13915242Sjkh#define DMENU_CHECKLIST_TYPE 0x4 /* Multiple choice menu */ 14015242Sjkh#define DMENU_SELECTION_RETURNS 0x8 /* Immediate return on item selection */ 1418097Sjkh 1428097Sjkhtypedef struct _dmenu { 14315242Sjkh int type; /* What sort of menu we are */ 1448174Sjkh char *title; /* Our title */ 1458174Sjkh char *prompt; /* Our prompt */ 1468174Sjkh char *helpline; /* Line of help at bottom */ 1478174Sjkh char *helpfile; /* Help file for "F1" */ 14894056Smurray dialogMenuItem items[]; /* Array of menu items */ 1498097Sjkh} DMenu; 1508097Sjkh 15125251Sjkh/* An rc.conf variable */ 1528097Sjkhtypedef struct _variable { 1538097Sjkh struct _variable *next; 15420331Sjkh char *name; 15520331Sjkh char *value; 15643685Sjkh int dirty; 1578097Sjkh} Variable; 1588097Sjkh 15922099Sjkh#define NO_ECHO_OBJ(type) ((type) | (DITEM_NO_ECHO << 16)) 16022099Sjkh#define TYPE_OF_OBJ(type) ((type) & 0xff) 16122099Sjkh#define ATTR_OF_OBJ(type) ((type) >> 16) 16222099Sjkh 16321243Sjkh/* A screen layout structure */ 16421243Sjkhtypedef struct _layout { 16521243Sjkh int y; /* x & Y co-ordinates */ 16621243Sjkh int x; 16721243Sjkh int len; /* The size of the dialog on the screen */ 16821243Sjkh int maxlen; /* How much the user can type in ... */ 16921243Sjkh char *prompt; /* The string for the prompt */ 17021243Sjkh char *help; /* The display for the help line */ 17121243Sjkh void *var; /* The var to set when this changes */ 17221243Sjkh int type; /* The type of the dialog to create */ 17321243Sjkh void *obj; /* The obj pointer returned by libdialog */ 17421243Sjkh} Layout; 17521243Sjkh 1768208Sjkhtypedef enum { 1778363Sjkh DEVICE_TYPE_NONE, 1788208Sjkh DEVICE_TYPE_DISK, 1798642Sjkh DEVICE_TYPE_DOS, 1808837Sjkh DEVICE_TYPE_UFS, 1818363Sjkh DEVICE_TYPE_ANY, 1828208Sjkh} DeviceType; 1838097Sjkh 184161060Snetchild/* A "device" from sade's point of view */ 1858208Sjkhtypedef struct _device { 1868208Sjkh char name[DEV_NAME_MAX]; 1878556Sjkh char *description; 1888636Sjkh char *devname; 1898208Sjkh DeviceType type; 1908549Sjkh Boolean enabled; 1919202Srgrimes Boolean (*init)(struct _device *dev); 19220315Sjkh FILE * (*get)(struct _device *dev, char *file, Boolean probe); 1939202Srgrimes void (*shutdown)(struct _device *dev); 1948556Sjkh void *private; 1959202Srgrimes unsigned int flags; 19694597Smurray unsigned int volume; 1978208Sjkh} Device; 1988208Sjkh 1998307Sjkh/* Some internal representations of partitions */ 2008307Sjkhtypedef enum { 2018307Sjkh PART_NONE, 2028307Sjkh PART_SLICE, 2038307Sjkh PART_SWAP, 2048549Sjkh PART_FILESYSTEM, 2058549Sjkh PART_FAT, 206121890Smarcel PART_EFI 2078307Sjkh} PartType; 2088208Sjkh 209107565Srwatson#define NEWFS_UFS_CMD "newfs" 210107565Srwatson#define NEWFS_MSDOS_CMD "newfs_msdos" 2118336Sjkh 212107565Srwatsonenum newfs_type { NEWFS_UFS, NEWFS_MSDOS, NEWFS_CUSTOM }; 213107565Srwatson#define NEWFS_UFS_STRING "UFS" 214107565Srwatson#define NEWFS_MSDOS_STRING "FAT" 215107565Srwatson#define NEWFS_CUSTOM_STRING "CST" 216107565Srwatson 217107565Srwatson/* The longest set of custom command line arguments we'll pass. */ 218107565Srwatson#define NEWFS_CMD_ARGS_MAX 256 219107565Srwatson 2208307Sjkhtypedef struct _part_info { 221107565Srwatson char mountpoint[FILENAME_MAX]; 222107565Srwatson 223107565Srwatson /* Is invocation of newfs desired? */ 224107565Srwatson Boolean do_newfs; 225107565Srwatson 226107565Srwatson enum newfs_type newfs_type; 227107565Srwatson union { 228107565Srwatson struct { 229107565Srwatson char user_options[NEWFS_CMD_ARGS_MAX]; 230107565Srwatson Boolean acls; /* unused */ 231107565Srwatson Boolean multilabel; /* unused */ 232107565Srwatson Boolean softupdates; 233113751Srwatson Boolean ufs1; 234107565Srwatson } newfs_ufs; 235107565Srwatson struct { 236107565Srwatson /* unused */ 237107565Srwatson } newfs_msdos; 238107565Srwatson struct { 239107565Srwatson char command[NEWFS_CMD_ARGS_MAX]; 240107565Srwatson } newfs_custom; 241107565Srwatson } newfs_data; 2428307Sjkh} PartInfo; 2438307Sjkh 24412661Speter/* An option */ 24512661Spetertypedef struct _opt { 24612661Speter char *name; 24712661Speter char *desc; 24812661Speter enum { OPT_IS_STRING, OPT_IS_INT, OPT_IS_FUNC, OPT_IS_VAR } type; 24912661Speter void *data; 25012661Speter void *aux; 251161099Sdelphij char *(*check)(void); 25212661Speter} Option; 25312661Speter 2548549Sjkhtypedef int (*commandFunc)(char *key, void *data); 2558307Sjkh 25612661Speter#define EXTRAS_FIELD_LEN 128 2578549Sjkh 2588208Sjkh/*** Externs ***/ 25925052Sjkhextern jmp_buf BailOut; /* Used to get the heck out */ 2608576Sjkhextern int DebugFD; /* Where diagnostic output goes */ 26115439Sjkhextern Boolean Fake; /* Don't actually modify anything - testing */ 26284831Sjkhextern Boolean Restarting; /* Are we restarting sysinstall? */ 2638881Srgrimesextern Boolean SystemWasInstalled; /* Did we install it? */ 2648735Sjkhextern Boolean RunningAsInit; /* Are we running stand-alone? */ 2658576Sjkhextern Boolean DialogActive; /* Is the dialog() stuff up? */ 2668576Sjkhextern Boolean ColorDisplay; /* Are we on a color display? */ 2678576Sjkhextern Boolean OnVTY; /* On a syscons VTY? */ 2688576Sjkhextern Variable *VarHead; /* The head of the variable chain */ 2699202Srgrimesextern int BootMgr; /* Which boot manager to use */ 27017375Sjkhextern int StatusLine; /* Where to print our status messages */ 271115293Speter#if defined(__i386__) || defined(__amd64__) 272106374Snyan#ifdef PC98 273106374Snyanextern DMenu MenuIPLType; /* Type of IPL to write on the disk */ 274106374Snyan#else 2758660Sjkhextern DMenu MenuMBRType; /* Type of MBR to write on the disk */ 276106374Snyan#endif 277107350Sjhb#endif 278161060Snetchildextern DMenu MenuMain; /* New main menu */ 279161060Snetchildextern DMenu MenuDiskDevices; /* Disk type devices */ 28067862Seivindextern const char * StartName; /* Which name we were started as */ 281178946Sobrienextern const char * ProgName; /* Program's proper name */ 2828576Sjkh 283133241Smarcel/* Important chunks. */ 284133241Smarcelextern Chunk *HomeChunk; 285133241Smarcelextern Chunk *RootChunk; 286133241Smarcelextern Chunk *SwapChunk; 287133241Smarcelextern Chunk *TmpChunk; 288133241Smarcelextern Chunk *UsrChunk; 289133241Smarcelextern Chunk *VarChunk; 290133241Smarcel#ifdef __ia64__ 291133241Smarcelextern Chunk *EfiChunk; 292133241Smarcel#endif 293133241Smarcel 29421243Sjkh/* Stuff from libdialog which isn't properly declared outside */ 29521243Sjkhextern void display_helpfile(void); 29621243Sjkhextern void display_helpline(WINDOW *w, int y, int width); 2978576Sjkh 2988208Sjkh/*** Prototypes ***/ 2998107Sjkh 3008347Sjkh/* command.c */ 3018347Sjkhextern void command_clear(void); 3028347Sjkhextern void command_sort(void); 3038347Sjkhextern void command_execute(void); 304161099Sdelphijextern void command_shell_add(char *key, const char *fmt, ...) __printflike(2, 3); 3058549Sjkhextern void command_func_add(char *key, commandFunc func, void *data); 3068347Sjkh 3078705Sjkh/* config.c */ 30843255Sjkhextern void configEnvironmentRC_conf(void); 30943811Sjkhextern void configRC_conf(void); 31041162Sjkhextern int configFstab(dialogMenuItem *self); 31126456Sjkhextern int configRC(dialogMenuItem *self); 31225251Sjkhextern int configWriteRC_conf(dialogMenuItem *self); 3138705Sjkh 3148351Sjkh/* devices.c */ 31515242Sjkhextern DMenu *deviceCreateMenu(DMenu *menu, DeviceType type, int (*hook)(dialogMenuItem *d), 31615242Sjkh int (*check)(dialogMenuItem *d)); 3178556Sjkhextern void deviceGetAll(void); 31845371Sjkhextern void deviceReset(void); 31945371Sjkhextern void deviceRescan(void); 3208556Sjkhextern Device **deviceFind(char *name, DeviceType type); 32121730Sjkhextern Device **deviceFindDescr(char *name, char *desc, DeviceType class); 3228636Sjkhextern int deviceCount(Device **devs); 3238641Sjkhextern Device *new_device(char *name); 324161099Sdelphijextern Device *deviceRegister(char *name, char *desc, char *devicename, DeviceType type, Boolean enabled, 32520315Sjkh Boolean (*init)(Device *mediadev), 32620315Sjkh FILE * (*get)(Device *dev, char *file, Boolean probe), 32720315Sjkh void (*shutDown)(Device *mediadev), 3288722Sjkh void *private); 3299202Srgrimesextern Boolean dummyInit(Device *dev); 33020315Sjkhextern FILE *dummyGet(Device *dev, char *dist, Boolean probe); 3319202Srgrimesextern void dummyShutdown(Device *dev); 3328097Sjkh 3338351Sjkh/* disks.c */ 334107350Sjhb#ifdef WITH_SLICES 335107350Sjhbextern void diskPartition(Device *dev); 33615091Sjkhextern int diskPartitionEditor(dialogMenuItem *self); 337107350Sjhb#endif 33815091Sjkhextern int diskPartitionWrite(dialogMenuItem *self); 33930345Sjkhextern int diskGetSelectCount(Device ***devs); 3408097Sjkh 34115788Sjkh/* dispatch.c */ 34215788Sjkhextern int dispatchCommand(char *command); 34329517Sjkhextern int dispatch_load_floppy(dialogMenuItem *self); 34429517Sjkhextern int dispatch_load_file_int(int); 34529517Sjkhextern int dispatch_load_file(dialogMenuItem *self); 34615788Sjkh 3478107Sjkh/* dmenu.c */ 34815091Sjkhextern int dmenuDisplayFile(dialogMenuItem *tmp); 34915091Sjkhextern int dmenuSubmenu(dialogMenuItem *tmp); 35015091Sjkhextern int dmenuSystemCommand(dialogMenuItem *tmp); 35115091Sjkhextern int dmenuSystemCommandBox(dialogMenuItem *tmp); 35215416Sjkhextern int dmenuExit(dialogMenuItem *tmp); 35330414Sjkhextern int dmenuISetVariable(dialogMenuItem *tmp); 35415091Sjkhextern int dmenuSetVariable(dialogMenuItem *tmp); 35519488Sjkhextern int dmenuSetVariables(dialogMenuItem *tmp); 35616327Sjkhextern int dmenuToggleVariable(dialogMenuItem *tmp); 35715091Sjkhextern int dmenuSetFlag(dialogMenuItem *tmp); 35815091Sjkhextern int dmenuSetValue(dialogMenuItem *tmp); 359161099Sdelphijextern Boolean dmenuOpen(DMenu *menu, int *choice, int *bscroll, int *curr, int *max, Boolean buttons); 36016887Sjkhextern Boolean dmenuOpenSimple(DMenu *menu, Boolean buttons); 36115091Sjkhextern int dmenuVarCheck(dialogMenuItem *item); 36226610Sjkhextern int dmenuVarsCheck(dialogMenuItem *item); 36315091Sjkhextern int dmenuFlagCheck(dialogMenuItem *item); 36415091Sjkhextern int dmenuRadioCheck(dialogMenuItem *item); 3658097Sjkh 3668792Sjkh/* dos.c */ 367161060Snetchildextern Boolean mediaCloseDOS(Device *dev, FILE *fp); 368161060Snetchildextern Boolean mediaInitDOS(Device *dev); 369161060Snetchildextern FILE *mediaGetDOS(Device *dev, char *file, Boolean probe); 370161060Snetchildextern void mediaShutdownDOS(Device *dev); 3718792Sjkh 3728351Sjkh/* globals.c */ 3738351Sjkhextern void globalsInit(void); 3748351Sjkh 3758351Sjkh/* install.c */ 376133241Smarcelextern Boolean checkLabels(Boolean whinge); 37715091Sjkhextern int installCommit(dialogMenuItem *self); 37815788Sjkhextern int installCustomCommit(dialogMenuItem *self); 37915091Sjkhextern int installFilesystems(dialogMenuItem *self); 38015091Sjkhextern int installVarDefaults(dialogMenuItem *self); 38122756Sjkhextern void installEnvironment(void); 38212661Speterextern Boolean copySelf(void); 3838351Sjkh 38442898Sjkh/* kget.c */ 38542898Sjkhextern int kget(char *out); 38642898Sjkh 3878549Sjkh/* label.c */ 38815091Sjkhextern int diskLabelEditor(dialogMenuItem *self); 38915091Sjkhextern int diskLabelCommit(dialogMenuItem *self); 3908549Sjkh 3918107Sjkh/* misc.c */ 3928097Sjkhextern Boolean file_readable(char *fname); 3938097Sjkhextern Boolean file_executable(char *fname); 39414670Sjkhextern Boolean directory_exists(const char *dirname); 39517034Sjkhextern char *root_bias(char *path); 39616462Sjkhextern char *itoa(int value); 3978097Sjkhextern char *string_concat(char *p1, char *p2); 39812661Speterextern char *string_concat3(char *p1, char *p2, char *p3); 3998097Sjkhextern char *string_prune(char *str); 4008097Sjkhextern char *string_skipwhite(char *str); 40112661Speterextern char *string_copy(char *s1, char *s2); 40212661Speterextern char *pathBaseName(const char *path); 4038097Sjkhextern void safe_free(void *ptr); 4048208Sjkhextern void *safe_malloc(size_t size); 4058363Sjkhextern void *safe_realloc(void *orig, size_t size); 40615242Sjkhextern dialogMenuItem *item_add(dialogMenuItem *list, char *prompt, char *title, 40715242Sjkh int (*checked)(dialogMenuItem *self), 40815242Sjkh int (*fire)(dialogMenuItem *self), 40915242Sjkh void (*selected)(dialogMenuItem *self, int is_selected), 41083842Smurray void *data, int *aux, int *curr, int *max); 41115242Sjkhextern void items_free(dialogMenuItem *list, int *curr, int *max); 41217005Sjkhextern int Mkdir(char *); 413107525Smarcelextern int Mkdir_command(char *key, void *data); 4148556Sjkhextern int Mount(char *, void *data); 41521243Sjkhextern WINDOW *openLayoutDialog(char *helpfile, char *title, int x, int y, int width, int height); 41621243Sjkhextern ComposeObj *initLayoutDialog(WINDOW *win, Layout *layout, int x, int y, int *max); 41721243Sjkhextern int layoutDialogLoop(WINDOW *win, Layout *layout, ComposeObj **obj, 41821243Sjkh int *n, int max, int *cbutton, int *cancel); 41921243Sjkh 42015242Sjkhextern WINDOW *savescr(void); 42115242Sjkhextern void restorescr(WINDOW *w); 42220247Sjkhextern char *sstrncpy(char *dst, const char *src, int size); 4238097Sjkh 4248107Sjkh/* msg.c */ 4258837Sjkhextern Boolean isDebug(void); 426161099Sdelphijextern void msgInfo(const char *fmt, ...) __printf0like(1, 2); 427161099Sdelphijextern void msgYap(const char *fmt, ...) __printflike(1, 2); 428161099Sdelphijextern void msgWarn(const char *fmt, ...) __printflike(1, 2); 429161099Sdelphijextern void msgDebug(const char *fmt, ...) __printflike(1, 2); 430161099Sdelphijextern void msgError(const char *fmt, ...) __printflike(1, 2); 431161099Sdelphijextern void msgFatal(const char *fmt, ...) __printflike(1, 2); 432161099Sdelphijextern void msgConfirm(const char *fmt, ...) __printflike(1, 2); 433161099Sdelphijextern void msgNotify(const char *fmt, ...) __printflike(1, 2); 434161099Sdelphijextern void msgWeHaveOutput(const char *fmt, ...) __printflike(1, 2); 435161099Sdelphijextern int msgYesNo(const char *fmt, ...) __printflike(1, 2); 436161099Sdelphijextern int msgNoYes(const char *fmt, ...) __printflike(1, 2); 437161099Sdelphijextern char *msgGetInput(char *buf, const char *fmt, ...) __printflike(2, 3); 438161099Sdelphijextern int msgSimpleConfirm(const char *); 439161099Sdelphijextern int msgSimpleNotify(const char *); 4408097Sjkh 44155942Shosokawa/* pccard.c */ 44255942Shosokawaextern void pccardInitialize(void); 44355942Shosokawa 4448351Sjkh/* system.c */ 4458351Sjkhextern void systemInitialize(int argc, char **argv); 44615788Sjkhextern void systemShutdown(int status); 44712661Speterextern int execExecute(char *cmd, char *name); 4488351Sjkhextern int systemExecute(char *cmd); 44963404Sobrienextern void systemSuspendDialog(void); 45063404Sobrienextern void systemResumeDialog(void); 45112661Speterextern int systemDisplayHelp(char *file); 4528351Sjkhextern char *systemHelpFile(char *file, char *buf); 4538351Sjkhextern void systemChangeFont(const u_char font[]); 4548351Sjkhextern void systemChangeLang(char *lang); 45512661Speterextern void systemChangeTerminal(char *color, const u_char c_termcap[], char *mono, const u_char m_termcap[]); 4568351Sjkhextern void systemChangeScreenmap(const u_char newmap[]); 457161099Sdelphijextern int vsystem(const char *fmt, ...) __printflike(1, 2); 4588107Sjkh 4598351Sjkh/* termcap.c */ 4608351Sjkhextern int set_termcap(void); 4618208Sjkh 46212661Speter/* variable.c */ 46343685Sjkhextern void variable_set(char *var, int dirty); 46443685Sjkhextern void variable_set2(char *name, char *value, int dirty); 46512661Speterextern char *variable_get(char *var); 46630345Sjkhextern int variable_cmp(char *var, char *value); 46712661Speterextern void variable_unset(char *var); 46843685Sjkhextern char *variable_get_value(char *var, char *prompt, int dirty); 46926610Sjkhextern int variable_check(char *data); 470117475Strhodesextern int variable_check2(char *data); 47137735Sjkhextern int dump_variables(dialogMenuItem *self); 47283820Smurrayextern void free_variables(void); 47383880Smurrayextern void pvariable_set(char *var); 47483880Smurrayextern char *pvariable_get(char *var); 4758208Sjkh 4768281Sjkh/* wizard.c */ 4778549Sjkhextern void slice_wizard(Disk *d); 4788281Sjkh 47979065Sdd/* 48079065Sdd * Macros. Please find a better place for us! 48179065Sdd */ 482126844Sbde#define DEVICE_INIT(d) ((d) != NULL ? (d)->init((d)) : (Boolean)0) 48379065Sdd#define DEVICE_GET(d, b, f) ((d) != NULL ? (d)->get((d), (b), (f)) : NULL) 48479065Sdd#define DEVICE_SHUTDOWN(d) ((d) != NULL ? (d)->shutdown((d)) : (void)0) 48579065Sdd 4868097Sjkh#endif 4878097Sjkh/* _SYSINSTALL_H_INCLUDE */ 488