Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
292
cde/programs/dtterm/DtTermSyntax.c
Normal file
292
cde/programs/dtterm/DtTermSyntax.c
Normal file
@@ -0,0 +1,292 @@
|
||||
#ifndef lint
|
||||
#ifdef VERBOSE_REV_INFO
|
||||
static char rcs_id[] = "$XConsortium: DtTermSyntax.c /main/4 1996/05/16 11:22:57 ageorge $";
|
||||
#endif /* VERBOSE_REV_INFO */
|
||||
#endif /* lint */
|
||||
|
||||
/* *
|
||||
* (c) Copyright 1993, 1994 Hewlett-Packard Company *
|
||||
* (c) Copyright 1993, 1994 International Business Machines Corp. *
|
||||
* (c) Copyright 1993, 1994 Sun Microsystems, Inc. *
|
||||
* (c) Copyright 1993, 1994 Novell, Inc. *
|
||||
*/
|
||||
|
||||
#include "TermHeader.h"
|
||||
#include "TermPrimMessageCatI.h"
|
||||
struct _options {
|
||||
char *opt;
|
||||
char *desc;
|
||||
struct _options *next;
|
||||
};
|
||||
|
||||
static struct _options *optHead;
|
||||
static struct _options *messageHead;
|
||||
|
||||
static char *options_default[] = {
|
||||
"-/+132 enable/disable 80<->132 column escape seq",
|
||||
"-/+aw enable/disable autowrap",
|
||||
"-/+bs turn off/on Term background is select color",
|
||||
"-display displayname X server to contact",
|
||||
"-e command args command to execute",
|
||||
"-fb fontset bold text font",
|
||||
"-fn fontset normal text font",
|
||||
"-geometry geom size (in characters) and position of window",
|
||||
"-help print out this message",
|
||||
"-/+iconic start/do not start iconic",
|
||||
"-/+j enable/disable jump scroll",
|
||||
"-/+kshMode enable/disable ksh mode",
|
||||
"-/+l enable/disable logging",
|
||||
"-lf filename logging filename",
|
||||
"-/+ls enable/disable login shell",
|
||||
"-/+map enable/disable map window on pty output",
|
||||
"-/+mb enable/disable margin bell",
|
||||
"-ms color pointer color",
|
||||
"-n string specify icon name",
|
||||
"-name string client instance, icon, and title strings",
|
||||
"-nb distance specify distance for right margin bell",
|
||||
"-/+rw enable/disable reverse wrap",
|
||||
"-/+sb enable/disable scroll bar",
|
||||
"-/+sf enable/disable SUN function keys",
|
||||
"-sl number[s] number of scrolled lines [screens] to save",
|
||||
"-ti name string used for programmatic identification",
|
||||
"-title string title string for window",
|
||||
"-tm string terminal mode keywords and characters",
|
||||
"-tn name TERM environment variable name",
|
||||
"-usage print out this message",
|
||||
"-/+vb enable/disable visual bell",
|
||||
"-xrm resourcestring additional resource specifications",
|
||||
"-C console mode",
|
||||
"-Sxxd slave mode on \"ttyxx\" file descriptor \"d\"",
|
||||
"-Sxxx.d slave mode on \"ttyxxx\" file descriptor \"d\"",
|
||||
"End-Of-List",
|
||||
};
|
||||
|
||||
static char *message_defaults[] = {
|
||||
"The -e option, if given must appear at the end of the command line,",
|
||||
"otherwise the user's default shell will be started. Options that start",
|
||||
"with a plus sign (+) restore the default.",
|
||||
"End-Of-List",
|
||||
};
|
||||
|
||||
static void GetUsage()
|
||||
{
|
||||
register struct _options *optPtr;
|
||||
register int i;
|
||||
register char *c;
|
||||
char *c2;
|
||||
int num_messages;
|
||||
optHead = (struct _options *) 0;
|
||||
optPtr = (struct _options *) 0;
|
||||
|
||||
for (i = 1; ; i++) {
|
||||
/*
|
||||
** get the next option...
|
||||
*/
|
||||
num_messages = i;
|
||||
c2 = GETMESSAGE(NL_SETN_Syntax, i, options_default[i-1]);
|
||||
c = XtMalloc(strlen(c2) + 1);
|
||||
(void) strcpy(c, c2);
|
||||
/*
|
||||
** check and see if we are at the end of the list...
|
||||
*/
|
||||
if (!strcmp(c, "End-Of-List"))
|
||||
break;
|
||||
|
||||
/*
|
||||
** allocate the next entry...
|
||||
*/
|
||||
if (!optHead) {
|
||||
optHead = (struct _options *) malloc(sizeof(struct _options));
|
||||
optPtr = optHead;
|
||||
} else {
|
||||
optPtr->next = (struct _options *) malloc(sizeof(struct _options));
|
||||
optPtr = optPtr->next;
|
||||
}
|
||||
|
||||
#ifdef DKS
|
||||
/*
|
||||
** did we run out of malloc space...
|
||||
*/
|
||||
if (!optPtr) {
|
||||
errno = 0;
|
||||
#ifdef _VUE_NO_PROTO
|
||||
SysError(HPT_MALLOC4);
|
||||
#else /* _VUE_NO_PROTO */
|
||||
SysError(HPT_MALLOC4, NULL);
|
||||
#endif /* _VUE_NO_PROTO */
|
||||
}
|
||||
#endif /* DKS */
|
||||
|
||||
/*
|
||||
** there is no next element yet...
|
||||
*/
|
||||
optPtr->next = (struct _options *) 0;
|
||||
|
||||
/*
|
||||
** the first part of the string is the option...
|
||||
*/
|
||||
optPtr->opt = c;
|
||||
/*
|
||||
** find a tab...
|
||||
*/
|
||||
while (*c && ('\t' != *c))
|
||||
(void) c++;
|
||||
/*
|
||||
** this marks the end of the option...
|
||||
*/
|
||||
if (*c)
|
||||
*c++ = '\0';
|
||||
/*
|
||||
** skip over any more tabs...
|
||||
*/
|
||||
while (*c && ('\t' == *c))
|
||||
(void) c++;
|
||||
/*
|
||||
** and this is the beginning of the option desc..
|
||||
*/
|
||||
optPtr->desc = c;
|
||||
}
|
||||
|
||||
messageHead = (struct _options *) 0;
|
||||
optPtr = (struct _options *) 0;
|
||||
|
||||
for (i = num_messages + 1; ; i++) {
|
||||
/*
|
||||
** get the next message string...
|
||||
*/
|
||||
c2 = GETMESSAGE(NL_SETN_Syntax, i,message_defaults[i - num_messages - 1]);
|
||||
c = XtMalloc(strlen(c2) + 1);
|
||||
(void) strcpy(c, c2);
|
||||
/*
|
||||
** check and see if we are at the end of the list...
|
||||
*/
|
||||
if (!strcmp(c, "End-Of-List"))
|
||||
break;
|
||||
|
||||
/*
|
||||
** allocate the next entry...
|
||||
*/
|
||||
if (!messageHead) {
|
||||
messageHead = (struct _options *) malloc(sizeof(struct _options));
|
||||
optPtr = messageHead;
|
||||
} else {
|
||||
optPtr->next = (struct _options *) malloc(sizeof(struct _options));
|
||||
optPtr = optPtr->next;
|
||||
}
|
||||
|
||||
#ifdef DKS
|
||||
/*
|
||||
** did we run out of malloc space...
|
||||
*/
|
||||
if (!optPtr) {
|
||||
errno = 0;
|
||||
#ifdef _VUE_NO_PROTO
|
||||
SysError(HPT_MALLOC5);
|
||||
#else /* _VUE_NO_PROTO */
|
||||
SysError(HPT_MALLOC5, NULL);
|
||||
#endif /* _VUE_NO_PROTO */
|
||||
}
|
||||
#endif /* DKS */
|
||||
|
||||
/*
|
||||
** there is no next element yet...
|
||||
*/
|
||||
optPtr->next = (struct _options *) 0;
|
||||
|
||||
/*
|
||||
** the entire string is the "desc"...
|
||||
*/
|
||||
optPtr->desc = c;
|
||||
}
|
||||
}
|
||||
|
||||
void Syntax(char *programName, char *badOption)
|
||||
{
|
||||
register struct _options *optPtr;
|
||||
int col;
|
||||
int cols;
|
||||
char *c;
|
||||
char *fmt;
|
||||
int fmtlen;
|
||||
char buffer[BUFSIZ];
|
||||
|
||||
/*
|
||||
** get the usage message string...
|
||||
*/
|
||||
GetUsage();
|
||||
|
||||
/* suppress codecenter "Assignment in conditional 'if' expression."
|
||||
* warning...
|
||||
*/
|
||||
/*SUPPRESS 624*/
|
||||
if (c = getenv("COLUMNS")) cols = atoi(c);
|
||||
else cols = 80;
|
||||
|
||||
(void) fprintf(stderr, (GETMESSAGE(NL_SETN_Syntax,47,
|
||||
"%s: bad command line option \"%s\"\r\n\n")),
|
||||
programName, badOption);
|
||||
|
||||
(void) fprintf(stderr, (GETMESSAGE(NL_SETN_Syntax,48, "usage: %s")),
|
||||
programName);
|
||||
col = 8 + strlen(programName);
|
||||
/*
|
||||
** now that we are NLSized, we need to figure out the width that the
|
||||
** format string adds to each option...
|
||||
*/
|
||||
|
||||
c = GETMESSAGE(NL_SETN_Syntax,50, " [%s]");
|
||||
fmt = XtMalloc(strlen(c) + 1);
|
||||
(void) strcpy(fmt, c);
|
||||
(void) sprintf(buffer, fmt, "");
|
||||
fmtlen = strlen(buffer);
|
||||
|
||||
for (optPtr = optHead; optPtr; optPtr = optPtr->next) {
|
||||
/*DKS*DKS*DKS*
|
||||
** the following 3 assumes that the msg_catalog doesn't add more than
|
||||
** 2 characters to the string...
|
||||
*/
|
||||
int len = fmtlen + strlen(optPtr->opt);
|
||||
if (col + len >= cols) {
|
||||
(void) fprintf(stderr, (GETMESSAGE(NL_SETN_Syntax,49, "\r\n ")));
|
||||
col = 3;
|
||||
}
|
||||
(void) fprintf(stderr, fmt, optPtr->opt);
|
||||
col += len;
|
||||
}
|
||||
(void) fprintf(stderr, (GETMESSAGE(NL_SETN_Syntax,51,
|
||||
"\r\n\nType \"%s -help\" for a full description.\r\n\n")),
|
||||
programName);
|
||||
|
||||
(void) exit(1);
|
||||
}
|
||||
|
||||
void Help(char *programName)
|
||||
{
|
||||
register struct _options *optPtr;
|
||||
int width = 0;
|
||||
|
||||
/*
|
||||
** get the usage message string...
|
||||
*/
|
||||
GetUsage();
|
||||
|
||||
(void) fprintf(stderr, (GETMESSAGE(NL_SETN_Syntax,52, "usage:\n")));
|
||||
(void) fprintf(stderr, (GETMESSAGE(NL_SETN_Syntax,53,
|
||||
"\t%s [-options ...] [-e command args]\n\n")),
|
||||
programName);
|
||||
(void) fprintf(stderr, (GETMESSAGE(NL_SETN_Syntax,54,
|
||||
"where options include:\n")));
|
||||
for (optPtr = optHead; optPtr; optPtr = optPtr->next)
|
||||
if (strlen(optPtr->opt) > (size_t) width) width = strlen(optPtr->opt);
|
||||
|
||||
for (optPtr = optHead; optPtr; optPtr = optPtr->next)
|
||||
(void) fprintf(stderr, " %-*s %s\n", width, optPtr->opt,
|
||||
optPtr->desc);
|
||||
|
||||
(void) fprintf(stderr, "\n");
|
||||
for (optPtr = messageHead; optPtr; optPtr = optPtr->next)
|
||||
(void) fprintf(stderr, "%s\n", optPtr->desc);
|
||||
|
||||
(void) fprintf(stderr, "\n");
|
||||
(void) exit(0);
|
||||
}
|
||||
Reference in New Issue
Block a user