diff options
Diffstat (limited to 'com32/rosh/rosh.h')
-rw-r--r-- | com32/rosh/rosh.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/com32/rosh/rosh.h b/com32/rosh/rosh.h new file mode 100644 index 00000000..d7296e1a --- /dev/null +++ b/com32/rosh/rosh.h @@ -0,0 +1,148 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 2008 Gene Cumm - All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, Inc., 53 Temple Place Ste 330, + * Boston MA 02111-1307, USA; either version 2 of the License, or + * (at your option) any later version; incorporated herein by reference. + * + * ----------------------------------------------------------------------- */ + +/* + * rosh.h + * + * Read-Only shell; Header + */ + +/* + * History + * b021 Move much PreProcessing stuff to rosh.h + * b018 Create rosh_debug() macro + * b012 Version of rosh.c at time of creating this file. + */ + +#ifndef ROSH_H +#define ROSH_H + +#include <stdio.h> +#include <stdlib.h> +#include <stdbool.h> /* macro: true false */ +#include <string.h> /* strcpy() strlen() memcpy() strchr() */ +#include <sys/types.h> +#include <sys/stat.h> /* fstat() */ +#include <fcntl.h> /* open(); open mode macros */ +#include <dirent.h> /* fdopendir() opendir() readdir() closedir() DIR */ +#include <unistd.h> /* getcwd() */ +#include <errno.h> /* errno; error macros */ +#include <netinet/in.h> /* For htonl/ntohl/htons/ntohs */ + +#include <getkey.h> +#include <consoles.h> + +/* A GNUC extension to void out unused functions are used */ +/* Plus, there seem to be other references for SYSLINUX to __GNUC__ */ +#ifndef __GNUC__ +#error SYSLINUX (I believe) requires __GNUC__ +#endif /* __GNUC__ */ + +#ifdef DO_DEBUG +#define ROSH_DEBUG(f, ...) printf (f, ## __VA_ARGS__) +#ifdef DO_DEBUG2 +#define ROSH_DEBUG2(f, ...) printf (f, ## __VA_ARGS__) +#else /* DO_DEBUG2 */ +#define ROSH_DEBUG2(f, ...) ((void)0) +#endif /* DO_DEBUG2 */ +#else /* DO_DEBUG */ +#define ROSH_DEBUG(f, ...) ((void)0) +#define ROSH_DEBUG2(f, ...) ((void)0) +#endif /* DO_DEBUG */ + +#ifdef __COM32__ +#define ROSH_IS_COM32 1 +#include <console.h> /* openconsole() */ +#include <syslinux/config.h> /* Has info on the SYSLINUX variant */ +#include <syslinux/boot.h> /* syslinux_run_command() */ +#define ROSH_COM32(f, ...) printf (f, ## __VA_ARGS__) +#else +#include <termios.h> +#define ROSH_IS_COM32 0 +static inline char *syslinux_config_file() +{ + return ""; +} +static inline int getscreensize(int fd, int *rows, int *cols) +{ + char *str; + int rv; + *rows = 0; + *cols = 0; + if (rows) { + str = getenv("LINES"); + if (str) { + *rows = atoi(str); + } + } + if (cols) { + str = getenv("COLUMNS"); + if (str) { + *cols = atoi(str); + } + } + if (!rows || !cols) + rv = -1; + else if (!*rows || !*cols) + rv = -2; + else + rv = 0; + return rv; +} +#define ROSH_COM32(f, ...) ((void)0) +#define syslinux_run_command(f) ((void)0) +#endif /* __COM32__ */ + +#define SEP '/' + +/* Size of buffer string */ +#define ROSH_BUF_SZ 16384 +/* Size of screen output buffer (80*40) */ +#define ROSH_SBUF_SZ 1200 + +/* Size of command buffer string */ +#ifdef MAX_CMDLINE_LEN +#define ROSH_CMD_SZ MAX_CMDLINE_LEN +#else +#ifdef COMMAND_LINE_SIZE +#define ROSH_CMD_SZ COMMAND_LINE_SIZE +#else +#define ROSH_CMD_SZ 2048 +#endif /* COMMAND_LINE_SIZE */ +#endif /* MAX_CMDLINE_LEN */ + +/* Size of path buffer string */ +#ifdef PATH_MAX +#define ROSH_PATH_SZ PATH_MAX +#elif NAME_MAX +#define ROSH_PATH_SZ NAME_MAX +#else +#define ROSH_PATH_SZ 255 +#endif /* NAME_MAX */ + +const char rosh_help_str1[] = +"Commands: ? cat cd cfg dir exit help less ls man more pwd run quit ver"; + +const char rosh_help_str2[] = +"Commands: (some 1-letter abreviations also allowed)\n\ + h HELP\n ALSO ? help man\n\ + cat Concatenate file to console\n cat <file>\n\ + cd Change to directory <dir>\n cd <dir>\n\ + less Page a file with rewind\n\ + ls List contents of current directory\n ls <dir>\n\ + ALSO dir\n\ + more Page a file\n\ + pwd display Present Working Directory\n\ + run Run a program/kernel with options\n\ + exit Exit to previous environment\n ALSO quit"; + +#endif /* Not ROSH_H */ |