Update sixdraw and tcsgrep.
This commit is contained in:
parent
c20ca12750
commit
decdf5738f
|
@ -38,14 +38,14 @@
|
||||||
|
|
||||||
#include <ctlseqs.h>
|
#include <ctlseqs.h>
|
||||||
|
|
||||||
#ifndef SIXDRAW_DEFAULT_TIMEOUT_MILLIS
|
#ifndef DEFAULT_TIMEOUT_MILLIS
|
||||||
# define SIXDRAW_DEFAULT_TIMEOUT_MILLIS 500
|
# define DEFAULT_TIMEOUT_MILLIS 500
|
||||||
#endif // !SIXDRAW_DEFAULT_TIMEOUT_MILLIS
|
#endif // !DEFAULT_TIMEOUT_MILLIS
|
||||||
|
|
||||||
#define SIXDRAW_DECRQM_SET 1
|
#define DECRQM_SET 1
|
||||||
#define SIXDRAW_DECRQM_RST 2
|
#define DECRQM_RST 2
|
||||||
#define SIXDRAW_DECTCEM 25u
|
#define DECTCEM 25u
|
||||||
#define SIXDRAW_ALT_SCRBUF 1049u
|
#define ALT_SCRBUF 1049u
|
||||||
|
|
||||||
struct sixdraw_ctx {
|
struct sixdraw_ctx {
|
||||||
struct termios termios;
|
struct termios termios;
|
||||||
|
@ -66,7 +66,7 @@ struct sixdraw_ctx {
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
sixdraw_print_error(struct sixdraw_ctx const *ctx, char const *format, ...)
|
print_error(struct sixdraw_ctx const *ctx, char const *format, ...)
|
||||||
{
|
{
|
||||||
char msg[1024];
|
char msg[1024];
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -77,7 +77,7 @@ sixdraw_print_error(struct sixdraw_ctx const *ctx, char const *format, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
sixdraw_clear_signal(int signum)
|
clear_signal(int signum)
|
||||||
{
|
{
|
||||||
sigset_t sigset;
|
sigset_t sigset;
|
||||||
sigemptyset(&sigset);
|
sigemptyset(&sigset);
|
||||||
|
@ -86,31 +86,31 @@ sixdraw_clear_signal(int signum)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
sixdraw_handle_signals(struct sixdraw_ctx *ctx)
|
handle_signals(struct sixdraw_ctx *ctx)
|
||||||
{
|
{
|
||||||
sigset_t sigset;
|
sigset_t sigset;
|
||||||
sigpending(&sigset);
|
sigpending(&sigset);
|
||||||
if (!sigismember(&sigset, SIGWINCH)) {
|
if (!sigismember(&sigset, SIGWINCH)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
sixdraw_clear_signal(SIGWINCH);
|
clear_signal(SIGWINCH);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sixdraw_terminate(struct sixdraw_ctx *ctx)
|
terminate(struct sixdraw_ctx *ctx)
|
||||||
{
|
{
|
||||||
ctlseqs_matcher_free(ctx->matcher);
|
ctlseqs_matcher_free(ctx->matcher);
|
||||||
ctlseqs_reader_free(ctx->reader);
|
ctlseqs_reader_free(ctx->reader);
|
||||||
|
|
||||||
// Restore cursor status.
|
// Restore cursor status.
|
||||||
if (ctx->show_cursor) {
|
if (ctx->show_cursor) {
|
||||||
dprintf(ctx->out_fd, CTLSEQS_DECSET("%u"), SIXDRAW_DECTCEM);
|
dprintf(ctx->out_fd, CTLSEQS_DECSET("%u"), DECTCEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore normal screen buffer.
|
// Restore normal screen buffer.
|
||||||
if (ctx->normal_scrbuf) {
|
if (ctx->normal_scrbuf) {
|
||||||
dprintf(ctx->out_fd, CTLSEQS_DECRST("%u"), SIXDRAW_ALT_SCRBUF);
|
dprintf(ctx->out_fd, CTLSEQS_DECRST("%u"), ALT_SCRBUF);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore original terminal modes.
|
// Restore original terminal modes.
|
||||||
|
@ -120,15 +120,15 @@ sixdraw_terminate(struct sixdraw_ctx *ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
sixdraw_get_winsize(struct sixdraw_ctx *ctx)
|
get_winsize(struct sixdraw_ctx *ctx)
|
||||||
{
|
{
|
||||||
struct winsize ws = { 0 };
|
struct winsize ws = { 0 };
|
||||||
if (ioctl(ctx->in_fd, TIOCGWINSZ, &ws) != 0) {
|
if (ioctl(ctx->in_fd, TIOCGWINSZ, &ws) != 0) {
|
||||||
sixdraw_print_error(ctx, "failed to get terminal window size");
|
print_error(ctx, "failed to get terminal window size");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (ws.ws_xpixel == 0 || ws.ws_ypixel == 0) {
|
if (ws.ws_xpixel == 0 || ws.ws_ypixel == 0) {
|
||||||
sixdraw_print_error(ctx, "failed to get terminal window size (in pixels)");
|
print_error(ctx, "failed to get terminal window size (in pixels)");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ctx->rows = ws.ws_row;
|
ctx->rows = ws.ws_row;
|
||||||
|
@ -139,7 +139,7 @@ sixdraw_get_winsize(struct sixdraw_ctx *ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
sixdraw_decrqm(struct sixdraw_ctx *ctx, unsigned mode_id, char const *name)
|
decrqm(struct sixdraw_ctx *ctx, unsigned mode_id, char const *name)
|
||||||
{
|
{
|
||||||
ssize_t retval;
|
ssize_t retval;
|
||||||
union ctlseqs_value *result = ctx->result;
|
union ctlseqs_value *result = ctx->result;
|
||||||
|
@ -148,24 +148,24 @@ sixdraw_decrqm(struct sixdraw_ctx *ctx, unsigned mode_id, char const *name)
|
||||||
retval = ctlseqs_read(ctx->reader, ctx->matcher, ctx->timeout);
|
retval = ctlseqs_read(ctx->reader, ctx->matcher, ctx->timeout);
|
||||||
} while (retval == CTLSEQS_PARTIAL);
|
} while (retval == CTLSEQS_PARTIAL);
|
||||||
if (retval != 1) {
|
if (retval != 1) {
|
||||||
sixdraw_print_error(ctx, "failed to get %s status", name);
|
print_error(ctx, "failed to get %s status", name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (result[0].num != mode_id || (result[1].num != SIXDRAW_DECRQM_SET && result[1].num != SIXDRAW_DECRQM_RST)) {
|
if (result[0].num != mode_id || (result[1].num != DECRQM_SET && result[1].num != DECRQM_RST)) {
|
||||||
sixdraw_print_error(ctx, "%s status not recognizable", name);
|
print_error(ctx, "%s status not recognizable", name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
sixdraw_init(struct sixdraw_ctx *ctx, int argc, char **argv)
|
init(struct sixdraw_ctx *ctx, int argc, char **argv)
|
||||||
{
|
{
|
||||||
*ctx = (struct sixdraw_ctx) {
|
*ctx = (struct sixdraw_ctx) {
|
||||||
.prog_name = argc > 0 ? argv[0] : "sixdraw",
|
.prog_name = argc > 0 ? argv[0] : "sixdraw",
|
||||||
.in_fd = STDIN_FILENO,
|
.in_fd = STDIN_FILENO,
|
||||||
.out_fd = STDOUT_FILENO,
|
.out_fd = STDOUT_FILENO,
|
||||||
.timeout = SIXDRAW_DEFAULT_TIMEOUT_MILLIS,
|
.timeout = DEFAULT_TIMEOUT_MILLIS,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Process command line arguments.
|
// Process command line arguments.
|
||||||
|
@ -184,7 +184,7 @@ sixdraw_init(struct sixdraw_ctx *ctx, int argc, char **argv)
|
||||||
// Initialize control sequence matcher.
|
// Initialize control sequence matcher.
|
||||||
ctx->matcher = ctlseqs_matcher_init();
|
ctx->matcher = ctlseqs_matcher_init();
|
||||||
if (ctx->matcher == NULL) {
|
if (ctx->matcher == NULL) {
|
||||||
sixdraw_print_error(ctx, "failed to initialize matcher");
|
print_error(ctx, "failed to initialize matcher");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
char const *patterns[] = {
|
char const *patterns[] = {
|
||||||
|
@ -196,14 +196,14 @@ sixdraw_init(struct sixdraw_ctx *ctx, int argc, char **argv)
|
||||||
.npatterns = sizeof(patterns) / sizeof(char const *),
|
.npatterns = sizeof(patterns) / sizeof(char const *),
|
||||||
};
|
};
|
||||||
if (ctlseqs_matcher_config(ctx->matcher, &matcher_options) != 0) {
|
if (ctlseqs_matcher_config(ctx->matcher, &matcher_options) != 0) {
|
||||||
sixdraw_print_error(ctx, "failed to set matcher options");
|
print_error(ctx, "failed to set matcher options");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize control sequence reader.
|
// Initialize control sequence reader.
|
||||||
ctx->reader = ctlseqs_reader_init();
|
ctx->reader = ctlseqs_reader_init();
|
||||||
if (ctx->reader == NULL) {
|
if (ctx->reader == NULL) {
|
||||||
sixdraw_print_error(ctx, "failed to initialize reader");
|
print_error(ctx, "failed to initialize reader");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
struct ctlseqs_reader_options reader_options = {
|
struct ctlseqs_reader_options reader_options = {
|
||||||
|
@ -212,7 +212,7 @@ sixdraw_init(struct sixdraw_ctx *ctx, int argc, char **argv)
|
||||||
.maxlen = 4096,
|
.maxlen = 4096,
|
||||||
};
|
};
|
||||||
if (ctlseqs_reader_config(ctx->reader, &reader_options) != CTLSEQS_OK) {
|
if (ctlseqs_reader_config(ctx->reader, &reader_options) != CTLSEQS_OK) {
|
||||||
sixdraw_print_error(ctx, "failed to set reader options");
|
print_error(ctx, "failed to set reader options");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,17 +227,17 @@ sixdraw_init(struct sixdraw_ctx *ctx, int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
sixdraw_prepare(struct sixdraw_ctx *ctx)
|
prepare(struct sixdraw_ctx *ctx)
|
||||||
{
|
{
|
||||||
// Check whether we're running on a terminal.
|
// Check whether we're running on a terminal.
|
||||||
if (!isatty(ctx->in_fd) || !isatty(ctx->out_fd)) {
|
if (!isatty(ctx->in_fd) || !isatty(ctx->out_fd)) {
|
||||||
sixdraw_print_error(ctx, "this program can only run in a terminal");
|
print_error(ctx, "this program can only run in a terminal");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set terminal to noncanonical mode.
|
// Set terminal to noncanonical mode.
|
||||||
if (tcgetattr(ctx->in_fd, &ctx->termios) != 0) {
|
if (tcgetattr(ctx->in_fd, &ctx->termios) != 0) {
|
||||||
sixdraw_print_error(ctx, "failed to get terminal attributes");
|
print_error(ctx, "failed to get terminal attributes");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
struct termios termios = ctx->termios;
|
struct termios termios = ctx->termios;
|
||||||
|
@ -245,7 +245,7 @@ sixdraw_prepare(struct sixdraw_ctx *ctx)
|
||||||
termios.c_cc[VTIME] = 0;
|
termios.c_cc[VTIME] = 0;
|
||||||
termios.c_lflag &= ~(ICANON | ISIG | ECHO);
|
termios.c_lflag &= ~(ICANON | ISIG | ECHO);
|
||||||
if (tcsetattr(ctx->in_fd, TCSANOW, &termios) != 0) {
|
if (tcsetattr(ctx->in_fd, TCSANOW, &termios) != 0) {
|
||||||
sixdraw_print_error(ctx, "failed to set terminal attributes");
|
print_error(ctx, "failed to set terminal attributes");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ctx->has_termios = true;
|
ctx->has_termios = true;
|
||||||
|
@ -253,16 +253,16 @@ sixdraw_prepare(struct sixdraw_ctx *ctx)
|
||||||
// Set STDIN flags to nonblocking.
|
// Set STDIN flags to nonblocking.
|
||||||
int flags = fcntl(ctx->in_fd, F_GETFL);
|
int flags = fcntl(ctx->in_fd, F_GETFL);
|
||||||
if (flags == -1) {
|
if (flags == -1) {
|
||||||
sixdraw_print_error(ctx, "failed to get file status flags");
|
print_error(ctx, "failed to get file status flags");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (fcntl(ctx->in_fd, F_SETFL, flags | O_NONBLOCK) == -1) {
|
if (fcntl(ctx->in_fd, F_SETFL, flags | O_NONBLOCK) == -1) {
|
||||||
sixdraw_print_error(ctx, "failed to set file status flags");
|
print_error(ctx, "failed to set file status flags");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get initial terminal window size.
|
// Get initial terminal window size.
|
||||||
if (!sixdraw_get_winsize(ctx)) {
|
if (!get_winsize(ctx)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -273,7 +273,7 @@ sixdraw_prepare(struct sixdraw_ctx *ctx)
|
||||||
retval = ctlseqs_read(ctx->reader, ctx->matcher, ctx->timeout);
|
retval = ctlseqs_read(ctx->reader, ctx->matcher, ctx->timeout);
|
||||||
} while (retval == CTLSEQS_PARTIAL);
|
} while (retval == CTLSEQS_PARTIAL);
|
||||||
if (retval != 0) {
|
if (retval != 0) {
|
||||||
sixdraw_print_error(ctx, "failed to get terminal features");
|
print_error(ctx, "failed to get terminal features");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
bool has_sixel = false;
|
bool has_sixel = false;
|
||||||
|
@ -287,34 +287,34 @@ sixdraw_prepare(struct sixdraw_ctx *ctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!has_sixel) {
|
if (!has_sixel) {
|
||||||
sixdraw_print_error(ctx, "terminal does not support sixel graphics");
|
print_error(ctx, "terminal does not support sixel graphics");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!has_dec_locator) {
|
if (!has_dec_locator) {
|
||||||
sixdraw_print_error(ctx, "terminal does not support DEC locator mode");
|
print_error(ctx, "terminal does not support DEC locator mode");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get current cursor status.
|
// Get current cursor status.
|
||||||
if (!sixdraw_decrqm(ctx, SIXDRAW_DECTCEM, "cursor")) {
|
if (!decrqm(ctx, DECTCEM, "cursor")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ctx->show_cursor = result[1].num == SIXDRAW_DECRQM_SET;
|
ctx->show_cursor = result[1].num == DECRQM_SET;
|
||||||
|
|
||||||
// Hide cursor.
|
// Hide cursor.
|
||||||
if (ctx->show_cursor) {
|
if (ctx->show_cursor) {
|
||||||
dprintf(ctx->out_fd, CTLSEQS_DECRST("%u"), SIXDRAW_DECTCEM);
|
dprintf(ctx->out_fd, CTLSEQS_DECRST("%u"), DECTCEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get current screen buffer status.
|
// Get current screen buffer status.
|
||||||
if (!sixdraw_decrqm(ctx, SIXDRAW_ALT_SCRBUF, "screen buffer")) {
|
if (!decrqm(ctx, ALT_SCRBUF, "screen buffer")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ctx->normal_scrbuf = result[1].num == SIXDRAW_DECRQM_RST;
|
ctx->normal_scrbuf = result[1].num == DECRQM_RST;
|
||||||
|
|
||||||
// Switch to alternate screen buffer.
|
// Switch to alternate screen buffer.
|
||||||
if (ctx->normal_scrbuf) {
|
if (ctx->normal_scrbuf) {
|
||||||
dprintf(ctx->out_fd, CTLSEQS_DECSET("%u"), SIXDRAW_ALT_SCRBUF);
|
dprintf(ctx->out_fd, CTLSEQS_DECSET("%u"), ALT_SCRBUF);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -326,12 +326,12 @@ main(int argc, char **argv)
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
struct sixdraw_ctx ctx;
|
struct sixdraw_ctx ctx;
|
||||||
if (!sixdraw_init(&ctx, argc, argv) || !sixdraw_prepare(&ctx)) {
|
if (!init(&ctx, argc, argv) || !prepare(&ctx)) {
|
||||||
status = -1;
|
status = -1;
|
||||||
goto terminate;
|
goto terminate;
|
||||||
}
|
}
|
||||||
|
|
||||||
terminate:
|
terminate:
|
||||||
sixdraw_terminate(&ctx);
|
terminate(&ctx);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
328
tests/tcsgrep.c
328
tests/tcsgrep.c
|
@ -33,24 +33,26 @@
|
||||||
|
|
||||||
#include <ctlseqs.h>
|
#include <ctlseqs.h>
|
||||||
|
|
||||||
#define TCSGREP_NINTH_ARG_(a1, a2, a3, a4, a5, a6, a7, a8, a9, ...) a9
|
#define NINTH_ARG_(a1, a2, a3, a4, a5, a6, a7, a8, a9, ...) a9
|
||||||
#define TCSGREP_COUNT_ARGS_(...) TCSGREP_NINTH_ARG_(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0)
|
#define COUNT_ARGS_(...) NINTH_ARG_(__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0)
|
||||||
|
|
||||||
#define TCSGREP_CONCAT_1_(a1) a1
|
#define CONCAT_1_(a1) a1
|
||||||
#define TCSGREP_CONCAT_2_(a1, a2) a1 a2
|
#define CONCAT_2_(a1, a2) a1 a2
|
||||||
#define TCSGREP_CONCAT_3_(a1, a2, a3) a1 a2 a3
|
#define CONCAT_3_(a1, a2, a3) a1 a2 a3
|
||||||
#define TCSGREP_CONCAT_4_(a1, a2, a3, a4) a1 a2 a3 a4
|
#define CONCAT_4_(a1, a2, a3, a4) a1 a2 a3 a4
|
||||||
#define TCSGREP_CONCAT_5_(a1, a2, a3, a4, a5) a1 a2 a3 a4 a5
|
#define CONCAT_5_(a1, a2, a3, a4, a5) a1 a2 a3 a4 a5
|
||||||
#define TCSGREP_CONCAT_6_(a1, a2, a3, a4, a5, a6) a1 a2 a3 a4 a5 a6
|
#define CONCAT_6_(a1, a2, a3, a4, a5, a6) a1 a2 a3 a4 a5 a6
|
||||||
#define TCSGREP_CONCAT_7_(a1, a2, a3, a4, a5, a6, a7) a1 a2 a3 a4 a5 a6 a7
|
#define CONCAT_7_(a1, a2, a3, a4, a5, a6, a7) a1 a2 a3 a4 a5 a6 a7
|
||||||
#define TCSGREP_CONCAT_8_(a1, a2, a3, a4, a5, a6, a7, a8) a1 a2 a3 a4 a5 a6 a7 a8
|
#define CONCAT_8_(a1, a2, a3, a4, a5, a6, a7, a8) a1 a2 a3 a4 a5 a6 a7 a8
|
||||||
|
|
||||||
#define TCSGREP_CONCAT_(nargs) TCSGREP_CONCAT_##nargs##_
|
#define CONCAT_(nargs) CONCAT_##nargs##_
|
||||||
#define TCSGREP_DEFARGS_(nargs, ...) TCSGREP_CONCAT_(nargs)(__VA_ARGS__)
|
#define DEFARGS_(nargs, ...) CONCAT_(nargs)(__VA_ARGS__)
|
||||||
|
|
||||||
#define TCSGREP_DEFSEQ_NOARGS(name) { #name, CTLSEQS_##name(), "" }
|
#define DEFSEQ_NOARGS(name) { #name, CTLSEQS_##name(), "" }
|
||||||
#define TCSGREP_DEFSEQ(name, ...) \
|
#define DEFSEQ(name, ...) \
|
||||||
{ #name, CTLSEQS_##name(__VA_ARGS__), TCSGREP_DEFARGS_(TCSGREP_COUNT_ARGS_(__VA_ARGS__), __VA_ARGS__) }
|
{ #name, CTLSEQS_##name(__VA_ARGS__), DEFARGS_(COUNT_ARGS_(__VA_ARGS__), __VA_ARGS__) }
|
||||||
|
|
||||||
|
#define DEFAULT_MAX_BUFFER_LEN 4096
|
||||||
|
|
||||||
struct tcsgrep_sequence {
|
struct tcsgrep_sequence {
|
||||||
char const *name;
|
char const *name;
|
||||||
|
@ -101,7 +103,7 @@ print_char(int ch)
|
||||||
} else if (ch == 0x7f) {
|
} else if (ch == 0x7f) {
|
||||||
printf(" DEL");
|
printf(" DEL");
|
||||||
} else if (!iscntrl(ch)) {
|
} else if (!iscntrl(ch)) {
|
||||||
printf(" \\x%02x", ch);
|
printf(" \\x%02x", (unsigned char)ch);
|
||||||
} else {
|
} else {
|
||||||
printf(" %s", ascii_table[ch]);
|
printf(" %s", ascii_table[ch]);
|
||||||
}
|
}
|
||||||
|
@ -156,7 +158,7 @@ main(int argc, char **argv)
|
||||||
struct tcsgrep_ctx ctx = {
|
struct tcsgrep_ctx ctx = {
|
||||||
.prog_name = argv[0],
|
.prog_name = argv[0],
|
||||||
.timeout = -1,
|
.timeout = -1,
|
||||||
.limit = 4096,
|
.limit = DEFAULT_MAX_BUFFER_LEN,
|
||||||
};
|
};
|
||||||
|
|
||||||
int opt;
|
int opt;
|
||||||
|
@ -203,154 +205,154 @@ main(int argc, char **argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
static struct tcsgrep_sequence seqs[] = {
|
static struct tcsgrep_sequence seqs[] = {
|
||||||
TCSGREP_DEFSEQ_NOARGS(S7C1T),
|
DEFSEQ_NOARGS(S7C1T),
|
||||||
TCSGREP_DEFSEQ_NOARGS(S8C1T),
|
DEFSEQ_NOARGS(S8C1T),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECDHL_TOP),
|
DEFSEQ_NOARGS(DECDHL_TOP),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECDHL_BOTOM),
|
DEFSEQ_NOARGS(DECDHL_BOTOM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECSWL),
|
DEFSEQ_NOARGS(DECSWL),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECDWL),
|
DEFSEQ_NOARGS(DECDWL),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECALN),
|
DEFSEQ_NOARGS(DECALN),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECBI),
|
DEFSEQ_NOARGS(DECBI),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECSC),
|
DEFSEQ_NOARGS(DECSC),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECRC),
|
DEFSEQ_NOARGS(DECRC),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECFI),
|
DEFSEQ_NOARGS(DECFI),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECKPAM),
|
DEFSEQ_NOARGS(DECKPAM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECKPNM),
|
DEFSEQ_NOARGS(DECKPNM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(RIS),
|
DEFSEQ_NOARGS(RIS),
|
||||||
TCSGREP_DEFSEQ(DECUDK, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
DEFSEQ(DECUDK, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(DECRQSS, CTLSEQS_PH_STR),
|
DEFSEQ(DECRQSS, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(DECRSPS, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
DEFSEQ(DECRSPS, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(XTGETXRES, CTLSEQS_PH_STR),
|
DEFSEQ(XTGETXRES, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(XTSETTCAP, CTLSEQS_PH_STR),
|
DEFSEQ(XTSETTCAP, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(XTGETTCAP, CTLSEQS_PH_STR),
|
DEFSEQ(XTGETTCAP, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(ICH, CTLSEQS_PH_NUM),
|
DEFSEQ(ICH, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(SL, CTLSEQS_PH_NUM),
|
DEFSEQ(SL, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CUU, CTLSEQS_PH_NUM),
|
DEFSEQ(CUU, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CUD, CTLSEQS_PH_NUM),
|
DEFSEQ(CUD, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CUF, CTLSEQS_PH_NUM),
|
DEFSEQ(CUF, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CUB, CTLSEQS_PH_NUM),
|
DEFSEQ(CUB, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CNL, CTLSEQS_PH_NUM),
|
DEFSEQ(CNL, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CPL, CTLSEQS_PH_NUM),
|
DEFSEQ(CPL, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CHA, CTLSEQS_PH_NUM),
|
DEFSEQ(CHA, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CUP, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(CUP, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CHT, CTLSEQS_PH_NUM),
|
DEFSEQ(CHT, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(ED, CTLSEQS_PH_NUM),
|
DEFSEQ(ED, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSED, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSED, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(EL, CTLSEQS_PH_NUM),
|
DEFSEQ(EL, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSEL, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSEL, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(IL, CTLSEQS_PH_NUM),
|
DEFSEQ(IL, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DL, CTLSEQS_PH_NUM),
|
DEFSEQ(DL, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DCH, CTLSEQS_PH_NUM),
|
DEFSEQ(DCH, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(SU, CTLSEQS_PH_NUM),
|
DEFSEQ(SU, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTSMGRAPHICS, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUMS),
|
DEFSEQ(XTSMGRAPHICS, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(SD, CTLSEQS_PH_NUM),
|
DEFSEQ(SD, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTHIMOUSE, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(XTHIMOUSE, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTRMTITLE, CTLSEQS_PH_STR),
|
DEFSEQ(XTRMTITLE, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(ECH, CTLSEQS_PH_NUM),
|
DEFSEQ(ECH, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(CBT, CTLSEQS_PH_NUM),
|
DEFSEQ(CBT, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(HPA, CTLSEQS_PH_NUM),
|
DEFSEQ(HPA, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(HPR, CTLSEQS_PH_NUM),
|
DEFSEQ(HPR, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(REP, CTLSEQS_PH_NUM),
|
DEFSEQ(REP, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(PRIMARY_DA),
|
DEFSEQ_NOARGS(PRIMARY_DA),
|
||||||
TCSGREP_DEFSEQ_NOARGS(TERTIARY_DA),
|
DEFSEQ_NOARGS(TERTIARY_DA),
|
||||||
TCSGREP_DEFSEQ_NOARGS(SECONDARY_DA),
|
DEFSEQ_NOARGS(SECONDARY_DA),
|
||||||
TCSGREP_DEFSEQ(VPA, CTLSEQS_PH_NUM),
|
DEFSEQ(VPA, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(VPR, CTLSEQS_PH_NUM),
|
DEFSEQ(VPR, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(HVP, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(HVP, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(TBC, CTLSEQS_PH_NUM),
|
DEFSEQ(TBC, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(SM, CTLSEQS_PH_NUM),
|
DEFSEQ(SM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSET, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSET, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(MC, CTLSEQS_PH_NUM),
|
DEFSEQ(MC, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(MC_DEC, CTLSEQS_PH_NUM),
|
DEFSEQ(MC_DEC, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(RM, CTLSEQS_PH_NUM),
|
DEFSEQ(RM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECRST, CTLSEQS_PH_NUM),
|
DEFSEQ(DECRST, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(SGR, CTLSEQS_PH_NUM),
|
DEFSEQ(SGR, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTMODKEYS, CTLSEQS_PH_NUMS),
|
DEFSEQ(XTMODKEYS, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(DSR, CTLSEQS_PH_NUM),
|
DEFSEQ(DSR, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTMODKEYS_DISABLE, CTLSEQS_PH_NUM),
|
DEFSEQ(XTMODKEYS_DISABLE, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DSR_DEC, CTLSEQS_PH_NUM),
|
DEFSEQ(DSR_DEC, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTSMPOINTER, CTLSEQS_PH_NUM),
|
DEFSEQ(XTSMPOINTER, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECSTR),
|
DEFSEQ_NOARGS(DECSTR),
|
||||||
TCSGREP_DEFSEQ(DECSCL, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSCL, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECRQM_ANSI, CTLSEQS_PH_NUM),
|
DEFSEQ(DECRQM_ANSI, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECRQM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECRQM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(XTVERSION),
|
DEFSEQ_NOARGS(XTVERSION),
|
||||||
TCSGREP_DEFSEQ(DECLL, CTLSEQS_PH_NUM),
|
DEFSEQ(DECLL, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSCUSR, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSCUSR, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSCA, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSCA, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSTBM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSTBM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTRESTORE, CTLSEQS_PH_NUMS),
|
DEFSEQ(XTRESTORE, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(DECCARA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECCARA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(SCOSC),
|
DEFSEQ_NOARGS(SCOSC),
|
||||||
TCSGREP_DEFSEQ(DECSLRM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSLRM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTSAVE, CTLSEQS_PH_NUMS),
|
DEFSEQ(XTSAVE, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(XTWINOPS, CTLSEQS_PH_NUMS),
|
DEFSEQ(XTWINOPS, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(XTSMTITLE, CTLSEQS_PH_NUMS),
|
DEFSEQ(XTSMTITLE, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(DECSWBV, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSWBV, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECRARA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECRARA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(SCORC),
|
DEFSEQ_NOARGS(SCORC),
|
||||||
TCSGREP_DEFSEQ(DECSMBV, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSMBV, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECCRA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM,
|
DEFSEQ(DECCRA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM,
|
||||||
CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECRQPSR, CTLSEQS_PH_NUM),
|
DEFSEQ(DECRQPSR, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECEFR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECEFR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECREQTPARM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECREQTPARM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECEFR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECEFR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECREQTPARM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECREQTPARM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSACE, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSACE, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECFRA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECFRA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTCHECKSUM, CTLSEQS_PH_NUM),
|
DEFSEQ(XTCHECKSUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECRQCRA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM,
|
DEFSEQ(DECRQCRA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM,
|
||||||
CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECELR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECELR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECERA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECERA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSLE, CTLSEQS_PH_NUMS),
|
DEFSEQ(DECSLE, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(XTPUSHSGR, CTLSEQS_PH_NUMS),
|
DEFSEQ(XTPUSHSGR, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(DECSERA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSERA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(XTREPORTSGR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(XTREPORTSGR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECSCPP, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSCPP, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(DECRQLP),
|
DEFSEQ_NOARGS(DECRQLP),
|
||||||
TCSGREP_DEFSEQ(DECSNLS, CTLSEQS_PH_NUM),
|
DEFSEQ(DECSNLS, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(XTPOPSGR),
|
DEFSEQ_NOARGS(XTPOPSGR),
|
||||||
TCSGREP_DEFSEQ(DECIC, CTLSEQS_PH_NUM),
|
DEFSEQ(DECIC, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(DECDC, CTLSEQS_PH_NUM),
|
DEFSEQ(DECDC, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(OSC_SEQ, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
DEFSEQ(OSC_SEQ, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(RESP_DECRQSS, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
DEFSEQ(RESP_DECRQSS, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(RESP_XTGETXRES, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
DEFSEQ(RESP_XTGETXRES, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(RESP_XTGETTCAP, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
DEFSEQ(RESP_XTGETTCAP, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(RESP_PRIMARY_DA, CTLSEQS_PH_NUMS),
|
DEFSEQ(RESP_PRIMARY_DA, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(RESP_SECONDARY_DA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(RESP_SECONDARY_DA, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(RESP_DECXCPR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(RESP_DECXCPR, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(RESP_DSR, CTLSEQS_PH_NUMS),
|
DEFSEQ(RESP_DSR, CTLSEQS_PH_NUMS),
|
||||||
TCSGREP_DEFSEQ(RESP_DECRQM_ANSI, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(RESP_DECRQM_ANSI, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(RESP_DECRQM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(RESP_DECRQM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ(RESP_XTVERSION, CTLSEQS_PH_STR),
|
DEFSEQ(RESP_XTVERSION, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(RESP_DECCIR, CTLSEQS_PH_STR),
|
DEFSEQ(RESP_DECCIR, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(RESP_DECTABSR, CTLSEQS_PH_STR),
|
DEFSEQ(RESP_DECTABSR, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(RESP_DECRQCRA, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
DEFSEQ(RESP_DECRQCRA, CTLSEQS_PH_NUM, CTLSEQS_PH_STR),
|
||||||
TCSGREP_DEFSEQ(RESP_DECRQLP, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
DEFSEQ(RESP_DECRQLP, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM, CTLSEQS_PH_NUM),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_UP),
|
DEFSEQ_NOARGS(KEY_UP),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_DOWN),
|
DEFSEQ_NOARGS(KEY_DOWN),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_RIGHT),
|
DEFSEQ_NOARGS(KEY_RIGHT),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_LEFT),
|
DEFSEQ_NOARGS(KEY_LEFT),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_HOME),
|
DEFSEQ_NOARGS(KEY_HOME),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_END),
|
DEFSEQ_NOARGS(KEY_END),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_INSERT),
|
DEFSEQ_NOARGS(KEY_INSERT),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_DELETE),
|
DEFSEQ_NOARGS(KEY_DELETE),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_PGUP),
|
DEFSEQ_NOARGS(KEY_PGUP),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_PGDN),
|
DEFSEQ_NOARGS(KEY_PGDN),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F1),
|
DEFSEQ_NOARGS(KEY_F1),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F2),
|
DEFSEQ_NOARGS(KEY_F2),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F3),
|
DEFSEQ_NOARGS(KEY_F3),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F4),
|
DEFSEQ_NOARGS(KEY_F4),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F5),
|
DEFSEQ_NOARGS(KEY_F5),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F6),
|
DEFSEQ_NOARGS(KEY_F6),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F7),
|
DEFSEQ_NOARGS(KEY_F7),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F8),
|
DEFSEQ_NOARGS(KEY_F8),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F9),
|
DEFSEQ_NOARGS(KEY_F9),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F10),
|
DEFSEQ_NOARGS(KEY_F10),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F11),
|
DEFSEQ_NOARGS(KEY_F11),
|
||||||
TCSGREP_DEFSEQ_NOARGS(KEY_F12),
|
DEFSEQ_NOARGS(KEY_F12),
|
||||||
};
|
};
|
||||||
size_t npatterns = sizeof(seqs) / sizeof(struct tcsgrep_sequence);
|
size_t npatterns = sizeof(seqs) / sizeof(struct tcsgrep_sequence);
|
||||||
char const **patterns = malloc(sizeof(char const *) * npatterns);
|
char const **patterns = malloc(sizeof(char const *) * npatterns);
|
||||||
|
|
Loading…
Reference in New Issue