/*
* $Id: debug_stty.c,v 1.5 2002/08/23 13:38:14 howardjp Exp $
*
* Copyright (c) 1990
* Jan Wolter. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Jan Wolter
* and his contributors.
* 4. Neither the name of Jan Wolter nor the names of his contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY JAN WOLTER AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL JAN WOLTER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/* PARTY PROGRAM -- STTY DEBUGGING ROUTINES -- Jan Wolter
*
* This file is for debugging support only. If you don't have DEBUG_STTY set,
* you don't need it.
*/
#ifdef DEBUG_STTY
#include <stdio.h>
#include <ctype.h>
#include "party.h"
struct ct {
unsigned char cc;
char *name;
};
struct ft {
unsigned long flag;
char *name;
};
#ifdef F_STTY
struct ft flagtab[] = {
{TANDEM, "tandem"},
{CBREAK, "cbreak"},
{LCASE, "lcase"},
{ECHO, "echo"},
{CRMOD, "crmod"},
{RAW, "raw"},
{ODDP, "oddp"},
{EVENP, "evenp"},
{NL1, "nl1"},
{NL2, "nl2"},
{NL3, "nl3"},
{TAB1, "tab1"},
{TAB2, "tab2"},
{CR1, "cr1"},
{CR2, "cr2"},
{FF1, "ff1"},
{BS1, "bs1"},
{CRTBS, "crtbs"},
{PRTERA, "prtera"},
{CRTERA, "crtera"},
#ifdef EUCBKSP
{EUCBKSP, "eucbksp"},
#endif
#ifdef TILDE
{TILDE, "tilde"},
#endif
{MDMBUF, "mdmbuf"},
{LITOUT, "litout"},
{TOSTOP, "tostop"},
{FLUSHO, "flusho"},
{NOHANG, "nohang"},
{PASS8OUT, "pass8out"},
{CRTKIL, "crtkil"},
{PASS8, "pass8"},
{CTLECH, "ctlech"},
{PENDIN, "pendin"},
{DECCTQ, "decctq"},
{NOFLSH, "noflsh"},
{0, NULL}};
#endif /*F_STTY*/
#ifdef F_TERMIOS
struct ct cchartab[] = {
{VEOF, "eof"},
{VEOL, "eol"},
#ifdef VEOL2
{VEOL2, "eol2"},
#endif
{VERASE, "erase"},
#ifdef VWERASE
{VWERASE, "werase"},
#endif
{VKILL, "kill"},
#ifdef VREPRINT
{VREPRINT, "reprint"},
#endif
{VINTR, "intr"},
{VQUIT, "quit"},
{VSUSP, "susp"},
#ifdef VDSUSP
{VDSUSP, "dsusp"},
#endif
{VSTART, "start"},
{VSTOP, "stop"},
#ifdef VLNEXT
{VLNEXT, "lnext"},
#endif
#ifdef VDISCARD
{VDISCARD, "discard"},
#endif
{VMIN, "min"},
{VTIME, "time"},
#ifdef VSTATUS
{VSTATUS, "status"},
#endif
{0, NULL}};
struct ft iflagtab[] = {
{IGNBRK, "ignbrk"},
{BRKINT, "brkint"},
{IGNPAR, "ignpar"},
{PARMRK, "parmrk"},
{INPCK, "inpck"},
{ISTRIP, "istrip"},
{INLCR, "inlcr"},
{IGNCR, "igncr"},
{IXON, "ixon"},
{IXOFF, "ixoff"},
#ifdef IXANY
{IXANY, "ixany"},
#endif
#ifdef IXANY
{IMAXBEL, "imaxbel"},
#endif
{0, NULL}};
struct ft oflagtab[] = {
{OPOST, "opost"},
#ifdef ONLCR
{ONLCR, "onlcr"},
#endif
#ifdef OXTABS
{OXTABS, "oxtabs"},
#endif
#ifdef ONOEOT
{ONOEOT, "onoeot"},
#endif
{0, NULL}};
struct ft cflagtab[] = {
#ifdef CIGNORE
{CIGNORE, "cignore"},
#endif
{CS6, "cs6"},
{CS7, "cs7"},
{CS8, "cs8"},
{CSTOPB, "cstopb"},
{CREAD, "cread"},
{PARENB, "parenb"},
{PARODD, "parodd"},
{HUPCL, "hupcl"},
{CLOCAL, "clocal"},
#ifdef CRTS_OFLOW
{CRTS_OFLOW, "crts_oflow"},
#endif
#ifdef CRTS_IFLOW
{CRTS_IFLOW, "crts_iflow"},
#endif
#ifdef MDMBUG
{MDMBUG, "mdmbuf"},
#endif
{0, NULL}};
struct ft lflagtab[] = {
#ifdef ECHOKE
{ECHOKE, "echoke"},
#endif
{ECHOE, "echoe"},
{ECHOK, "echok"},
{ECHO, "echo"},
{ECHONL, "echonl"},
#ifdef ECHOPRT
{ECHOPRT, "echoprt"},
#endif
#ifdef ECHOCTL
{ECHOCTL, "echoctl"},
#endif
{ISIG, "isig"},
{ICANON, "icanon"},
#ifdef ALTWERASE
{ALTWERASE, "altwerase"},
#endif
{IEXTEN, "iexten"},
{EXTPROC, "extproc"},
{TOSTOP, "tostop"},
#ifdef FLUSHO
{FLUSHO, "flusho"},
#endif
#ifdef NOKERNINFO
{NOKERNINFO, "nokerninfo"},
#endif
#ifdef PENDIN
{PENDIN, "pendin"},
#endif
{NOFLSH, "noflsh"},
{0, NULL}};
#endif /*F_TERMIOS*/
int pscnt;
#ifdef F_STTY
printstty(fp,t)
FILE *fp;
struct sgttyb *t;
{
int i;
pscnt= 0;
for (i= 0; flagtab[i].name != NULL; i++)
psflg(fp,flagtab[i].name, t->sg_flags & flagtab[i].flag);
fprintf(fp,"\nerase %d kill %d ", t->sg_erase,t->sg_kill);
fprintf(fp,"ispeed %d ospeed %d\n", t->sg_ispeed,t->sg_ospeed);
}
#endif /* F_STTY */
#ifdef F_TERMIOS
printstty(fp,t)
FILE *fp;
struct termios *t;
{
int i;
pscnt= 0;
for (i= 0; iflagtab[i].name != NULL; i++)
psflg(fp,iflagtab[i].name, t->c_iflag & iflagtab[i].flag);
for (i= 0; oflagtab[i].name != NULL; i++)
psflg(fp,oflagtab[i].name, t->c_oflag & oflagtab[i].flag);
for (i= 0; cflagtab[i].name != NULL; i++)
psflg(fp,cflagtab[i].name, t->c_cflag & cflagtab[i].flag);
for (i= 0; lflagtab[i].name != NULL; i++)
psflg(fp,lflagtab[i].name, t->c_lflag & lflagtab[i].flag);
for (i= 0; cchartab[i].name != NULL; i++)
pskey(fp,cchartab[i].name, t->c_cc[cchartab[i].cc]);
fprintf(fp,"\nispeed %d ospeed %d\n", t->c_ispeed,t->c_ospeed);
}
#endif /* F_TERMIOS */
psflg(fp,name,flag)
FILE *fp;
char *name;
unsigned int flag;
{
if (pscnt > 8)
{
putc('\n',fp);
pscnt= 0;
}
if (pscnt != 0) putc(' ',fp);
if (!flag) putc('-',fp);
fputs(name,fp);
pscnt++;
}
pskey(fp,name,key)
FILE *fp;
char *name;
unsigned char key;
{
if (pscnt > 8)
{
putc('\n',fp);
pscnt= 0;
}
if (pscnt != 0) putc(' ',fp);
fprintf(fp,"%s %d",name,key);
pscnt++;
}
#endif DEBUG_STTY
syntax highlighted by Code2HTML, v. 0.9.1