/****************************************************************************
- * Copyright (c) 2007-2017,2018 Free Software Foundation, Inc. *
+ * Copyright 2018-2021,2022 Thomas E. Dickey *
+ * Copyright 2006-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* authorization. *
****************************************************************************/
/*
- * $Id: savescreen.c,v 1.54 2018/12/29 17:25:56 tom Exp $
+ * $Id: savescreen.c,v 1.62 2022/12/10 23:23:27 tom Exp $
*
* Demonstrate save/restore functions from the curses library.
* Thomas Dickey - 2007/7/14
static void
cleanup(char *files[])
{
- int n;
-
if (!keep_dumps) {
+ int n;
+
for (n = 0; files[n] != 0; ++n) {
unlink(files[n]);
}
{
#if USE_WIDEC_SUPPORT
cchar_t mycc;
- int myxx;
#endif
char *filename = files[which];
bool dumped = FALSE;
wmove(stdscr, cy, cx);
#if USE_WIDEC_SUPPORT
if (win_wch(curscr, &mycc) != ERR) {
- myxx = wcwidth(BaseChar(mycc));
+ int myxx = wcwidth(BaseChar(mycc));
if (myxx > 0) {
wadd_wchnstr(stdscr, &mycc, 1);
cx += (myxx - 1);
}
static void
-usage(void)
+usage(int ok)
{
static const char *msg[] =
{
- "Usage: savescreen [-r] files",
- "",
- "Options:",
- " -f file fill/initialize screen using text from this file",
- " -i use scr_init/scr_restore rather than scr_set",
- " -k keep the restored dump-files rather than removing them",
- " -r replay the screen-dump files"
+ "Usage: savescreen [-r] files"
+ ,""
+ ,USAGE_COMMON
+ ,"Options:"
+ ," -f file fill/initialize screen using text from this file"
+ ," -i use scr_init/scr_restore rather than scr_set"
+ ," -k keep the restored dump-files rather than removing them"
+ ," -r replay the screen-dump files"
};
unsigned n;
for (n = 0; n < SIZEOF(msg); ++n) {
fprintf(stderr, "%s\n", msg[n]);
}
- ExitProgram(EXIT_FAILURE);
+ ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE);
}
+/* *INDENT-OFF* */
+VERSION_COMMON()
+/* *INDENT-ON* */
int
main(int argc, char *argv[])
char **files;
char *fill_by = 0;
#if USE_WIDEC_SUPPORT
- int r, g, b;
- int cube = 0;
- int cube0 = 16;
- int cube1;
cchar_t mycc;
static const wchar_t mywc[2] =
{L'#', 0};
- bool using_rgb = FALSE;
#endif
setlocale(LC_ALL, "");
- while ((ch = getopt(argc, argv, "f:ikr")) != -1) {
+ while ((ch = getopt(argc, argv, OPTS_COMMON "f:ikr")) != -1) {
switch (ch) {
case 'f':
fill_by = optarg;
case 'r':
replaying = TRUE;
break;
+ case OPTS_VERSION:
+ show_version(argv);
+ ExitProgram(EXIT_SUCCESS);
default:
- usage();
- break;
+ usage(ch == OPTS_USAGE);
+ /* NOTREACHED */
}
}
curs_set(0);
if (has_colors() && (start_color() == OK) && COLORS >= MAX_ANSI) {
+#if USE_WIDEC_SUPPORT
+ bool using_rgb = FALSE;
+#endif
static const struct {
int fg, bg;
} table[MAX_ANSI] = {
int r_delta = (r_max / cols);
int g_delta = (g_max / cols);
int row = 0;
+ int b = 0;
- b = 0;
using_rgb = TRUE;
while (row++ < rows) {
int col = 0;
- r = 0;
- g = g_max;
+ int r = 0;
+ int g = g_max;
while (col++ < cols) {
int color = (((r * (g_max + 1)) + g) * (b_max + 1)
+ b + MAX_ANSI);
-#if HAVE_INIT_EXTENDED_COLOR
+#if USE_EXTENDED_COLOR
init_extended_pair(pair, color, color);
#else
init_pair(pair, color, color);
#endif
}
if ((fill_by == 0) && !replaying) {
+#if USE_WIDEC_SUPPORT
+ int cube = 0;
+#endif
/*
* Originally (before wide-characters) ncurses supported 16 colors.
*/
cube = 6;
}
if (cube != 0) {
- cube0 = 16;
- cube1 = cube0 + (cube * cube * cube);
+ int r, g, b;
+ int cube0 = 16;
+ int cube1 = cube0 + (cube * cube * cube);
addch('\n');
printw("Color cube, %dx%dx%d:\n", cube, cube, cube);
int cols = COLS - 1;
int row = 0;
- b = 0;
pair = MAX_ANSI;
while (row++ < rows) {
int col = 0;
}
move(0, 0);
} else {
- exit_curses();
+ stop_curses();
fprintf(stderr, "Cannot open \"%s\"\n", fill_by);
ExitProgram(EXIT_FAILURE);
}
* Use the last file as the initial/current screen.
*/
if (last < 0) {
- exit_curses();
+ stop_curses();
printf("No screen-dumps given\n");
ExitProgram(EXIT_FAILURE);
}
which = last;
if (load_screen(files[which]) == ERR) {
- exit_curses();
+ stop_curses();
printf("Cannot load screen-dump %s\n", files[which]);
ExitProgram(EXIT_FAILURE);
}
#else
int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+main(void)
{
printf("This program requires the screen-dump functions\n");
ExitProgram(EXIT_FAILURE);