Linux ip-148-66-134-25.ip.secureserver.net 3.10.0-1160.119.1.el7.tuxcare.els11.x86_64 #1 SMP Sun Nov 3 09:06:59 UTC 2024 x86_64
Apache
: 148.66.134.25 | : 3.144.123.24
66 Domain
8.0.30
amvm
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
usr /
share /
doc /
ncurses-devel-5.9 /
test /
[ HOME SHELL ]
Name
Size
Permission
Action
package
[ DIR ]
drwxr-xr-x
Makefile.in
4.92
KB
-rw-r--r--
README
35.89
KB
-rw-r--r--
aclocal.m4
108.83
KB
-rw-r--r--
background.c
6.84
KB
-rw-r--r--
blue.c
12.4
KB
-rw-r--r--
bs.6
3.91
KB
-rw-r--r--
bs.c
29.95
KB
-rw-r--r--
bulgarian-utf8.txt
340
B
-rw-r--r--
cardfile.c
13.26
KB
-rw-r--r--
cardfile.dat
394
B
-rw-r--r--
chgat.c
9.03
KB
-rw-r--r--
clip_printw.c
9.1
KB
-rw-r--r--
color_name.h
3.32
KB
-rw-r--r--
color_set.c
3.25
KB
-rw-r--r--
configure
449.42
KB
-rw-r--r--
configure.in
9.57
KB
-rw-r--r--
demo_altkeys.c
4.77
KB
-rw-r--r--
demo_defkey.c
7.4
KB
-rw-r--r--
demo_forms.c
13.01
KB
-rw-r--r--
demo_keyok.c
3.24
KB
-rw-r--r--
demo_menus.c
18.74
KB
-rw-r--r--
demo_panels.c
16.89
KB
-rw-r--r--
demo_termcap.c
10.09
KB
-rw-r--r--
demo_terminfo.c
10.05
KB
-rw-r--r--
ditto.c
11.04
KB
-rw-r--r--
dots.c
4.52
KB
-rw-r--r--
dots_mvcur.c
4.66
KB
-rw-r--r--
echochar.c
4.35
KB
-rw-r--r--
edit_field.c
11.21
KB
-rw-r--r--
edit_field.h
2.57
KB
-rw-r--r--
filter.c
4.97
KB
-rw-r--r--
firework.c
5.53
KB
-rw-r--r--
firstlast.c
3.72
KB
-rw-r--r--
foldkeys.c
7.44
KB
-rw-r--r--
gdc.6
3.03
KB
-rw-r--r--
gdc.c
8.74
KB
-rw-r--r--
hanoi.c
8.58
KB
-rw-r--r--
hashtest.c
6.58
KB
-rw-r--r--
inch_wide.c
7.21
KB
-rw-r--r--
inchs.c
7.15
KB
-rw-r--r--
ins_wide.c
12.25
KB
-rw-r--r--
insdelln.c
9.16
KB
-rw-r--r--
inserts.c
10.62
KB
-rw-r--r--
install-sh
6.96
KB
-rw-r--r--
key_names.c
3.22
KB
-rw-r--r--
keynames.c
3.07
KB
-rw-r--r--
knight.c
18.54
KB
-rw-r--r--
linedata.h
3.16
KB
-rw-r--r--
linux-color.dat
2.56
KB
-rw-r--r--
listused.sh
5.46
KB
-rw-r--r--
lrtest.c
5.24
KB
-rw-r--r--
make-tar.sh
4.8
KB
-rw-r--r--
mk-test.awk
4.42
KB
-rw-r--r--
modules
5.07
KB
-rw-r--r--
movewindow.c
16.44
KB
-rw-r--r--
ncurses.c
154.98
KB
-rw-r--r--
ncurses_tst.hin
2.88
KB
-rw-r--r--
newdemo.c
7.38
KB
-rw-r--r--
programs
5.28
KB
-rw-r--r--
railroad.c
5.66
KB
-rw-r--r--
rain.c
8.44
KB
-rw-r--r--
redraw.c
4.66
KB
-rw-r--r--
savescreen.c
7.49
KB
-rw-r--r--
savescreen.sh
2.66
KB
-rw-r--r--
tclock.c
5.26
KB
-rw-r--r--
test.priv.h
19.55
KB
-rw-r--r--
test_add_wchstr.c
14.08
KB
-rw-r--r--
test_addchstr.c
12.14
KB
-rw-r--r--
test_addstr.c
10.3
KB
-rw-r--r--
test_addwstr.c
12.37
KB
-rw-r--r--
test_arrays.c
3.83
KB
-rw-r--r--
test_get_wstr.c
8.94
KB
-rw-r--r--
test_getstr.c
8.88
KB
-rw-r--r--
test_instr.c
6.49
KB
-rw-r--r--
test_inwstr.c
6.69
KB
-rw-r--r--
test_opaque.c
10.42
KB
-rw-r--r--
test_vid_puts.c
3.97
KB
-rw-r--r--
test_vidputs.c
3.92
KB
-rw-r--r--
testaddch.c
3.46
KB
-rw-r--r--
testcurs.c
16.69
KB
-rw-r--r--
testscanw.c
2.88
KB
-rw-r--r--
tracemunch
5.01
KB
-rw-r--r--
view.c
13.84
KB
-rw-r--r--
widechars-utf8.txt
389
B
-rw-r--r--
widechars.h
3.19
KB
-rw-r--r--
worm.c
14.01
KB
-rw-r--r--
xmas.c
33.47
KB
-rw-r--r--
xterm-16color.dat
2.99
KB
-rw-r--r--
xterm-256color.dat
6.88
KB
-rw-r--r--
xterm-88color.dat
4.11
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : view.c
/**************************************************************************** * Copyright (c) 1998-2012,2013 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 * * "Software"), to deal in the Software without restriction, including * * without limitation the rights to use, copy, modify, merge, publish, * * distribute, distribute with modifications, sublicense, and/or sell * * copies of the Software, and to permit persons to whom the Software is * * furnished to do so, subject to the following conditions: * * * * The above copyright notice and this permission notice shall be included * * in all copies or substantial portions of the Software. * * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * * * Except as contained in this notice, the name(s) of the above copyright * * holders shall not be used in advertising or otherwise to promote the * * sale, use or other dealings in this Software without prior written * * authorization. * ****************************************************************************/ /* * view.c -- a silly little viewer program * * written by Eric S. Raymond <esr@snark.thyrsus.com> December 1994 * to test the scrolling code in ncurses. * * modified by Thomas Dickey <dickey@clark.net> July 1995 to demonstrate * the use of 'resizeterm()', and May 2000 to illustrate wide-character * handling. * * Takes a filename argument. It's a simple file-viewer with various * scroll-up and scroll-down commands. * * n -- scroll one line forward * p -- scroll one line back * * Either command accepts a numeric prefix interpreted as a repeat count. * Thus, typing `5n' should scroll forward 5 lines in the file. * * The way you can tell this is working OK is that, in the trace file, * there should be one scroll operation plus a small number of line * updates, as opposed to a whole-page update. This means the physical * scroll operation worked, and the refresh() code only had to do a * partial repaint. * * $Id: view.c,v 1.93 2013/04/27 19:46:53 tom Exp $ */ #include <test.priv.h> #include <widechars.h> #include <time.h> #undef CTRL /* conflict on AIX 5.2 with <sys/ioctl.h> */ #if HAVE_TERMIOS_H # include <termios.h> #else #if !defined(__MINGW32__) # include <sgtty.h> #endif #endif #if !defined(sun) || !HAVE_TERMIOS_H # if HAVE_SYS_IOCTL_H # include <sys/ioctl.h> # endif #endif #define my_pair 1 /* This is needed to compile 'struct winsize' */ #if NEED_PTEM_H #include <sys/stream.h> #include <sys/ptem.h> #endif #undef CTRL #define CTRL(x) ((x) & 0x1f) static void finish(int sig) GCC_NORETURN; static void show_all(const char *tag); #if defined(SIGWINCH) && defined(TIOCGWINSZ) && HAVE_RESIZE_TERM #define CAN_RESIZE 1 #else #define CAN_RESIZE 0 #endif #if CAN_RESIZE static void adjust(int sig); static int interrupted; static bool waiting = FALSE; #endif static int shift = 0; static bool try_color = FALSE; static char *fname; static NCURSES_CH_T **vec_lines; static NCURSES_CH_T **lptr; static int num_lines; static void usage(void) GCC_NORETURN; static void usage(void) { static const char *msg[] = { "Usage: view [options] file" ,"" ,"Options:" ," -c use color if terminal supports it" ," -i ignore INT, QUIT, TERM signals" ," -n NUM specify maximum number of lines (default 1000)" #if defined(KEY_RESIZE) ," -r use old-style sigwinch handler rather than KEY_RESIZE" #endif ," -s start in single-step mode, waiting for input" #ifdef TRACE ," -t trace screen updates" ," -T NUM specify trace mask" #endif }; size_t n; for (n = 0; n < SIZEOF(msg); n++) fprintf(stderr, "%s\n", msg[n]); ExitProgram(EXIT_FAILURE); } static int ch_len(NCURSES_CH_T * src) { int result = 0; #if USE_WIDEC_SUPPORT int count; #endif #if USE_WIDEC_SUPPORT for (;;) { TEST_CCHAR(src, count, { ++result; ++src; } , { break; }) } #else while (*src++) result++; #endif return result; } /* * Allocate a string into an array of chtype's. If UTF-8 mode is * active, translate the string accordingly. */ static NCURSES_CH_T * ch_dup(char *src) { unsigned len = (unsigned) strlen(src); NCURSES_CH_T *dst = typeMalloc(NCURSES_CH_T, len + 1); size_t j, k; #if USE_WIDEC_SUPPORT wchar_t wstr[CCHARW_MAX + 1]; wchar_t wch; int l = 0; size_t rc; int width; #ifndef state_unused mbstate_t state; #endif #endif /* USE_WIDEC_SUPPORT */ #if USE_WIDEC_SUPPORT reset_mbytes(state); #endif for (j = k = 0; j < len; j++) { #if USE_WIDEC_SUPPORT rc = (size_t) check_mbytes(wch, src + j, len - j, state); if (rc == (size_t) -1 || rc == (size_t) -2) break; j += rc - 1; if ((width = wcwidth(wch)) < 0) break; if ((width > 0 && l > 0) || l == CCHARW_MAX) { wstr[l] = L'\0'; l = 0; if (setcchar(dst + k, wstr, 0, 0, NULL) != OK) break; ++k; } if (width == 0 && l == 0) wstr[l++] = L' '; wstr[l++] = wch; #else dst[k++] = (chtype) UChar(src[j]); #endif } #if USE_WIDEC_SUPPORT if (l > 0) { wstr[l] = L'\0'; if (setcchar(dst + k, wstr, 0, 0, NULL) == OK) ++k; } wstr[0] = L'\0'; setcchar(dst + k, wstr, 0, 0, NULL); #else dst[k] = 0; #endif return dst; } int main(int argc, char *argv[]) { int MAXLINES = 1000; FILE *fp; char buf[BUFSIZ]; int i; int my_delay = 0; NCURSES_CH_T **olptr; int value = 0; bool done = FALSE; bool got_number = FALSE; bool single_step = FALSE; #if CAN_RESIZE bool nonposix_resize = FALSE; #endif const char *my_label = "Input"; setlocale(LC_ALL, ""); #ifndef NCURSES_VERSION /* * We know ncurses will catch SIGINT if we don't establish our own handler. * Other versions of curses may/may not catch it. */ (void) signal(SIGINT, finish); /* arrange interrupts to terminate */ #endif while ((i = getopt(argc, argv, "cin:rstT:")) != -1) { switch (i) { case 'c': try_color = TRUE; break; case 'i': CATCHALL(SIG_IGN); break; case 'n': if ((MAXLINES = atoi(optarg)) < 1 || (MAXLINES + 2) <= 1) usage(); break; #if CAN_RESIZE case 'r': nonposix_resize = TRUE; break; #endif case 's': single_step = TRUE; break; #ifdef TRACE case 'T': { char *next = 0; int tvalue = (int) strtol(optarg, &next, 0); if (tvalue < 0 || (next != 0 && *next != 0)) usage(); trace((unsigned) tvalue); } break; case 't': trace(TRACE_CALLS); break; #endif default: usage(); } } if (optind + 1 != argc) usage(); if ((vec_lines = typeCalloc(NCURSES_CH_T *, (size_t) MAXLINES + 2)) == 0) usage(); assert(vec_lines != 0); fname = argv[optind]; if ((fp = fopen(fname, "r")) == 0) { perror(fname); ExitProgram(EXIT_FAILURE); } #if CAN_RESIZE if (nonposix_resize) (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */ #endif Trace(("slurp the file")); for (lptr = &vec_lines[0]; (lptr - vec_lines) < MAXLINES; lptr++) { char temp[BUFSIZ], *s, *d; int col; if (fgets(buf, sizeof(buf), fp) == 0) break; #if USE_WIDEC_SUPPORT if (lptr == vec_lines) { if (!memcmp("", buf, 3)) { Trace(("trim BOM")); s = buf + 3; d = buf; do { } while ((*d++ = *s++) != '\0'); } } #endif /* convert tabs and nonprinting chars so that shift will work properly */ for (s = buf, d = temp, col = 0; (*d = *s) != '\0'; s++) { if (*d == '\r') { if (s[1] == '\n') continue; else break; } if (*d == '\n') { *d = '\0'; break; } else if (*d == '\t') { col = (col | 7) + 1; while ((d - temp) != col) *d++ = ' '; } else #if USE_WIDEC_SUPPORT col++, d++; #else if (isprint(UChar(*d))) { col++; d++; } else { sprintf(d, "\\%03o", UChar(*s)); d += strlen(d); col = (int) (d - temp); } #endif } *lptr = ch_dup(temp); } (void) fclose(fp); num_lines = (int) (lptr - vec_lines); (void) initscr(); /* initialize the curses library */ keypad(stdscr, TRUE); /* enable keyboard mapping */ (void) nonl(); /* tell curses not to do NL->CR/NL on output */ (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ if (!single_step) nodelay(stdscr, TRUE); idlok(stdscr, TRUE); /* allow use of insert/delete line */ if (try_color) { if (has_colors()) { start_color(); init_pair(my_pair, COLOR_WHITE, COLOR_BLUE); bkgd((chtype) COLOR_PAIR(my_pair)); } else { try_color = FALSE; } } lptr = vec_lines; while (!done) { int n, c; if (!got_number) show_all(my_label); for (;;) { #if CAN_RESIZE if (interrupted) { adjust(0); my_label = "interrupt"; } waiting = TRUE; c = getch(); waiting = FALSE; #else c = getch(); #endif if ((c < 127) && isdigit(c)) { if (!got_number) { MvPrintw(0, 0, "Count: "); clrtoeol(); } addch(UChar(c)); value = 10 * value + (c - '0'); got_number = TRUE; } else break; } if (got_number && value) { n = value; } else { n = 1; } if (c != ERR) my_label = keyname(c); switch (c) { case KEY_DOWN: case 'n': olptr = lptr; for (i = 0; i < n; i++) if ((lptr - vec_lines) < (num_lines - LINES + 1)) lptr++; else break; scrl((int) (lptr - olptr)); break; case KEY_UP: case 'p': olptr = lptr; for (i = 0; i < n; i++) if (lptr > vec_lines) lptr--; else break; scrl((int) (lptr - olptr)); break; case 'h': case KEY_HOME: lptr = vec_lines; break; case 'e': case KEY_END: if (num_lines > LINES) lptr = vec_lines + num_lines - LINES + 1; else lptr = vec_lines; break; case 'r': case KEY_RIGHT: shift += n; break; case 'l': case KEY_LEFT: shift -= n; if (shift < 0) { shift = 0; beep(); } break; case 'q': done = TRUE; break; #ifdef KEY_RESIZE case KEY_RESIZE: /* ignore this; ncurses will repaint */ break; #endif case 's': if (got_number) { halfdelay(my_delay = n); } else { nodelay(stdscr, FALSE); my_delay = -1; } break; case ' ': nodelay(stdscr, TRUE); my_delay = 0; break; case CTRL('L'): redrawwin(stdscr); break; case ERR: if (!my_delay) napms(50); break; default: beep(); break; } if (c >= KEY_MIN || (c > 0 && !isdigit(c))) { got_number = FALSE; value = 0; } } finish(0); /* we're done */ } static void finish(int sig) { endwin(); #if NO_LEAKS if (vec_lines != 0) { int n; for (n = 0; n < num_lines; ++n) { free(vec_lines[n]); } free(vec_lines); } #endif ExitProgram(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS); } #if CAN_RESIZE /* * This uses functions that are "unsafe", but it seems to work on SunOS. * Usually: the "unsafe" refers to the functions that POSIX lists which may be * called from a signal handler. Those do not include buffered I/O, which is * used for instance in wrefresh(). To be really portable, you should use the * KEY_RESIZE return (which relies on ncurses' sigwinch handler). * * The 'wrefresh(curscr)' is needed to force the refresh to start from the top * of the screen -- some xterms mangle the bitmap while resizing. */ static void adjust(int sig) { if (waiting || sig == 0) { struct winsize size; if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) { resize_term(size.ws_row, size.ws_col); wrefresh(curscr); show_all(sig ? "SIGWINCH" : "interrupt"); } interrupted = FALSE; } else { interrupted = TRUE; } (void) signal(SIGWINCH, adjust); /* some systems need this */ } #endif /* CAN_RESIZE */ static void show_all(const char *tag) { int i; char temp[BUFSIZ]; NCURSES_CH_T *s; time_t this_time; #if CAN_RESIZE sprintf(temp, "%.20s (%3dx%3d) col %d ", tag, LINES, COLS, shift); i = (int) strlen(temp); if ((i + 7) < (int) sizeof(temp)) { sprintf(temp + i, "view %.*s", (int) (sizeof(temp) - 7 - (size_t) i), fname); } #else (void) tag; sprintf(temp, "view %.*s", (int) sizeof(temp) - 7, fname); #endif move(0, 0); printw("%.*s", COLS, temp); clrtoeol(); this_time = time((time_t *) 0); strncpy(temp, ctime(&this_time), 30); if ((i = (int) strlen(temp)) != 0) { temp[--i] = 0; if (move(0, COLS - i - 2) != ERR) printw(" %s", temp); } scrollok(stdscr, FALSE); /* prevent screen from moving */ for (i = 1; i < LINES; i++) { move(i, 0); printw("%3ld:", (long) (lptr + i - vec_lines)); clrtoeol(); if ((s = lptr[i - 1]) != 0) { int len = ch_len(s); if (len > shift) { #if USE_WIDEC_SUPPORT add_wchstr(s + shift); #else addchstr(s + shift); #endif } #if defined(NCURSES_VERSION) || defined(HAVE_WCHGAT) if (try_color) wchgat(stdscr, -1, A_NORMAL, my_pair, NULL); #endif } } setscrreg(1, LINES - 1); scrollok(stdscr, TRUE); refresh(); }
Close