From 8facd84c6f58dfd27e99aea6596389227390f97b Mon Sep 17 00:00:00 2001 From: Thiago Farina Date: Sun, 15 Aug 2010 00:11:27 -0300 Subject: [PATCH] uemacs: Add --help option. Add a basic usage() function to support the --help option. Signed-off-by: Thiago Farina Signed-off-by: Linus Torvalds --- display.c | 19 ++++----- estruct.h | 119 ++++++++++++++++++++++++------------------------------ eval.c | 13 +++--- main.c | 24 ++++++++--- version.h | 9 +++++ 5 files changed, 98 insertions(+), 86 deletions(-) create mode 100644 version.h diff --git a/display.c b/display.c index 75e6212..deb54a5 100644 --- a/display.c +++ b/display.c @@ -1,4 +1,4 @@ -/* DISPLAY.C +/* display.c * * The functions in this file handle redisplay. There are two halves, the * ones that update the virtual display screen, and the ones that make the @@ -8,13 +8,14 @@ * modified by Petri Kutvonen */ -#include -#include -#include -#include -#include "estruct.h" -#include "edef.h" -#include "efunc.h" +#include +#include +#include +#include +#include "estruct.h" +#include "edef.h" +#include "efunc.h" +#include "version.h" struct video { int v_flag; /* Flags */ @@ -1132,7 +1133,7 @@ static void modeline(struct window *wp) n = 2; strcpy(tline, " "); - strcat(tline, PROGNAME); + strcat(tline, PROGRAM_NAME_LONG); strcat(tline, " "); strcat(tline, VERSION); strcat(tline, ": "); diff --git a/estruct.h b/estruct.h index aacc217..fc29944 100644 --- a/estruct.h +++ b/estruct.h @@ -21,58 +21,45 @@ #undef CTRLZ #endif -/* Program Identification..... - - PROGNAME should always be MicroEMACS for a distibrution - unmodified version. People using MicroEMACS as a shell - for other products should change this to reflect their - product. Macros can query this via the $progname variable - - this version in called uEmacs/PK -*/ - -#define PROGNAME "uEmacs/PK" -#define VERSION "4.0.15" - -/* Machine/OS definitions */ +/* Machine/OS definitions. */ #if defined(AUTOCONF) || defined(MSDOS) || defined(BSD) || defined(SYSV) || defined(VMS) -/* make an intelligent guess about the target system */ +/* Make an intelligent guess about the target system. */ #if defined(__TURBOC__) -#define MSDOS 1 /* MS/PC DOS 3.1-4.0 with Turbo C 2.0 */ +#define MSDOS 1 /* MS/PC DOS 3.1-4.0 with Turbo C 2.0 */ #else -#define MSDOS 0 +#define MSDOS 0 #endif #if defined(BSD) || defined(sun) || defined(ultrix) || (defined(vax) && defined(unix)) || defined(ultrix) || defined(__osf__) #ifndef BSD -#define BSD 1 /* Berkeley UNIX */ +#define BSD 1 /* Berkeley UNIX */ #endif #else -#define BSD 0 +#define BSD 0 #endif #if defined(SVR4) || defined(__linux__) /* ex. SunOS 5.3 */ -#define SVR4 1 -#define SYSV 1 +#define SVR4 1 +#define SYSV 1 #undef BSD #endif #if defined(SYSV) || defined(u3b2) || defined(_AIX) || (defined(i386) && defined(unix)) || defined(__hpux) -#define USG 1 /* System V UNIX */ +#define USG 1 /* System V UNIX */ #else -#define USG 0 +#define USG 0 #endif #if defined(VMS) || (defined(vax) && ! defined(unix)) -#define VMS 1 /* VAX/VMS */ +#define VMS 1 /* VAX/VMS */ #else -#define VMS 0 +#define VMS 0 #endif -#define V7 0 /* no more */ +#define V7 0 /* No more. */ #else @@ -130,25 +117,25 @@ #define TERMCAP UNIX #define IBMPC MSDOS -#endif /*autoconf */ +#endif /* Autoconf. */ /* Configuration options */ -#define CVMVAS 1 /* arguments to page forward/back in pages */ -#define CLRMSG 0 /* space clears the message line with no insert */ -#define CFENCE 1 /* fench matching in CMODE */ -#define TYPEAH 1 /* type ahead causes update to be skipped */ -#define DEBUGM 1 /* $debug triggers macro debugging */ -#define VISMAC 0 /* update display during keyboard macros */ -#define CTRLZ 0 /* add a ^Z at end of files under MSDOS only */ -#define ADDCR 0 /* ajout d'un CR en fin de chaque ligne (ST520) */ -#define NBRACE 1 /* new style brace matching command */ -#define REVSTA 1 /* Status line appears in reverse video */ +#define CVMVAS 1 /* arguments to page forward/back in pages */ +#define CLRMSG 0 /* space clears the message line with no insert */ +#define CFENCE 1 /* fench matching in CMODE */ +#define TYPEAH 1 /* type ahead causes update to be skipped */ +#define DEBUGM 1 /* $debug triggers macro debugging */ +#define VISMAC 0 /* update display during keyboard macros */ +#define CTRLZ 0 /* add a ^Z at end of files under MSDOS only */ +#define ADDCR 0 /* ajout d'un CR en fin de chaque ligne (ST520) */ +#define NBRACE 1 /* new style brace matching command */ +#define REVSTA 1 /* Status line appears in reverse video */ #ifndef AUTOCONF -#define COLOR 1 /* color commands and windows */ -#define FILOCK 0 /* file locking under unix BSD 4.2 */ +#define COLOR 1 /* color commands and windows */ +#define FILOCK 0 /* file locking under unix BSD 4.2 */ #else @@ -159,43 +146,43 @@ #define FILOCK BSD #endif -#endif /* autoconf */ +#endif /* Autoconf. */ -#define ISRCH 1 /* Incremental searches like ITS EMACS */ -#define WORDPRO 1 /* Advanced word processing features */ -#define FNLABEL 0 /* function key label code [HP150] */ -#define APROP 1 /* Add code for Apropos command */ -#define CRYPT 1 /* file encryption enabled? */ -#define MAGIC 1 /* include regular expression matching? */ -#define AEDIT 1 /* advanced editing options: en/detabbing */ -#define PROC 1 /* named procedures */ -#define CLEAN 0 /* de-alloc memory on exit */ -#define CALLED 0 /* is emacs a called subroutine? or stand alone */ +#define ISRCH 1 /* Incremental searches like ITS EMACS */ +#define WORDPRO 1 /* Advanced word processing features */ +#define FNLABEL 0 /* function key label code [HP150] */ +#define APROP 1 /* Add code for Apropos command */ +#define CRYPT 1 /* file encryption enabled? */ +#define MAGIC 1 /* include regular expression matching? */ +#define AEDIT 1 /* advanced editing options: en/detabbing */ +#define PROC 1 /* named procedures */ +#define CLEAN 0 /* de-alloc memory on exit */ +#define CALLED 0 /* is emacs a called subroutine? or stand alone */ -#define ASCII 1 /* always using ASCII char sequences for now */ -#define EBCDIC 0 /* later IBM mainfraim versions will use EBCDIC */ +#define ASCII 1 /* always using ASCII char sequences for now */ +#define EBCDIC 0 /* later IBM mainfraim versions will use EBCDIC */ #ifndef AUTOCONF -#define XONXOFF 0 /* don't disable XON-XOFF flow control P.K. */ -#define NATIONL 0 /* interprete [,],\,{,},| as characters P.K. */ +#define XONXOFF 0 /* don't disable XON-XOFF flow control P.K. */ +#define NATIONL 0 /* interprete [,],\,{,},| as characters P.K. */ #else #define XONXOFF (UNIX | VMS) #define NATIONL (UNIX | VMS) -#endif /* autoconf */ +#endif /* Autoconf. */ -#define PKCODE 1 /* include my extensions P.K., define always */ -#define IBMCHR MSDOS /* use IBM PC character set P.K. */ -#define SCROLLCODE 1 /* scrolling code P.K. */ +#define PKCODE 1 /* include my extensions P.K., define always */ +#define IBMCHR MSDOS /* use IBM PC character set P.K. */ +#define SCROLLCODE 1 /* scrolling code P.K. */ -/* System dependant library redefinitions, structures and includes */ +/* System dependant library redefinitions, structures and includes. */ -#if TURBO -#include -#include +#if TURBO +#include +#include #undef peek #undef poke #define peek(a,b,c,d) movedata(a,b,FP_SEG(c),FP_OFF(c),d) @@ -208,7 +195,7 @@ #define getname xgetname #endif -#if MSDOS & MSC +#if MSDOS & MSC #include #include #define peek(a,b,c,d) movedata(a,b,FP_SEG(c),FP_OFF(c),d) @@ -220,7 +207,7 @@ #define unlink(a) delete(a) #endif -/* define some ability flags */ +/* Define some ability flags. */ #if IBMPC #define MEMMAP 1 @@ -234,11 +221,11 @@ #define ENVFUNC 0 #endif -/* Emacs global flag bit definitions (for gflags) */ +/* Emacs global flag bit definitions (for gflags). */ #define GFREAD 1 -/* internal constants */ +/* Internal constants. */ #define NBINDS 256 /* max # of bound keys */ #define NFILEN 80 /* # of bytes, file name */ diff --git a/eval.c b/eval.c index 269b4d2..8d685f2 100644 --- a/eval.c +++ b/eval.c @@ -1,4 +1,4 @@ -/* EVAL.C +/* eval.c * * Expression evaluation functions * @@ -12,19 +12,20 @@ #include "efunc.h" #include "evar.h" #include "util.h" +#include "version.h" +/* Initialize the user variable list. */ void varinit(void) -{ /* initialize the user variable list */ +{ int i; - for (i = 0; i < MAXVARS; i++) uv[i].u_name[0] = 0; } /* - * evaluate a function + * Evaluate a function. * - * char *fname; name of function to evaluate + * @fname: name of function to evaluate. */ char *gtfun(char *fname) { @@ -259,7 +260,7 @@ char *gtenv(char *vname) case EVVERSION: return (VERSION); case EVPROGNAME: - return (PROGNAME); + return (PROGRAM_NAME_LONG); case EVSEED: return (itoa(seed)); case EVDISINP: diff --git a/main.c b/main.c index 873fbf8..24ee40a 100644 --- a/main.c +++ b/main.c @@ -60,6 +60,7 @@ #include "edef.h" /* Global definitions. */ #include "efunc.h" /* Function declarations and name table. */ #include "ebind.h" /* Default key bindings. */ +#include "version.h" /* For MSDOS, increase the default stack space. */ #if MSDOS & TURBO @@ -87,6 +88,16 @@ extern void sizesignal(int); #endif #endif +void usage(int status) +{ + printf("Usage: %s filename\n", PROGRAM_NAME); + printf(" or: %s [options]\n\n", PROGRAM_NAME); + fputs(" --help display this help and exit\n", stdout); + fputs(" --version output version information and exit\n", stdout); + + exit(status); +} + #if CALLED int emacs(int argc, char **argv) #else @@ -117,11 +128,11 @@ int main(int argc, char **argv) int newc; #if PKCODE & VMS - (void) umask(-1); /* use old protection (this is at wrong place) */ + (void) umask(-1); /* Use old protection (this is at wrong place). */ #endif #if PKCODE & BSD - sleep(1); /* time for window manager */ + sleep(1); /* Time for window manager. */ #endif #if UNIX @@ -130,13 +141,16 @@ int main(int argc, char **argv) #endif #endif if (argc == 2) { - if (!strcmp(argv[1], "--version")) { - printf("%s version %s\n", PROGNAME, VERSION); + if (strcmp(argv[1], "--help") == 0) { + usage(EXIT_FAILURE); + } + if (strcmp(argv[1], "--version") == 0) { + printf("%s version %s\n", PROGRAM_NAME_LONG, VERSION); exit(EXIT_SUCCESS); } } - /* initialize the editor */ + /* Initialize the editor. */ vtinit(); /* Display */ edinit("main"); /* Buffers, windows */ varinit(); /* user variables */ diff --git a/version.h b/version.h new file mode 100644 index 0000000..5f9c6ff --- /dev/null +++ b/version.h @@ -0,0 +1,9 @@ +#ifndef VERSION_H_ +#define VERSION_H_ + +#define PROGRAM_NAME "em" +#define PROGRAM_NAME_LONG "uEmacs/Pk" + +#define VERSION "4.0.15" + +#endif // VERSION_H_