not re-implementing fputs. - iomenu - interactive terminal-based selection menu
(HTM) git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
(DIR) LICENSE
---
(DIR) commit e2db9fd49d5351986d5803604bed7e2680545621
(DIR) parent 33e51a893ff428e83faf59b5116dde88e3f83c50
(HTM) Author: Josuah Demangeon <josuah.demangeon@gandi.net>
Date: Mon, 21 Aug 2017 02:56:50 +0200
not re-implementing fputs.
Diffstat:
M iomenu.c | 45 +++++++++++++------------------
1 file changed, 19 insertions(+), 26 deletions(-)
---
(DIR) diff --git a/iomenu.c b/iomenu.c
@@ -54,7 +54,7 @@ setterminal(void)
struct termios new;
/* save cursor postition */
- fputs("\x1b[s", stderr);
+ fputs("\033[s", stderr);
/* save attributes to `termios` */
if (tcgetattr(ttyfd, &termios) < 0 || tcgetattr(ttyfd, &new) < 0) {
@@ -74,10 +74,10 @@ resetterminal(void)
/* clear terminal */
for (i = 0; i < opt['l'] + 1; i++)
- fputs("\r\x1b[K\n", stderr);
+ fputs("\r\033[K\n", stderr);
/* reset cursor position */
- fputs("\x1b[u", stderr);
+ fputs("\033[u", stderr);
/* set terminal back to normal mode */
tcsetattr(ttyfd, TCSANOW, &termios);
@@ -151,44 +151,37 @@ printlines(int count)
while (printed < count && i < matchc) {
- if (opt['#'] && matchv[i][0] == '#') {
- char *s = format(matchv[i], ws.ws_col);
- fprintf(stderr, "\n\x1b[1m\x1b[K%s\x1b[m", s + 1);
+ char *s = format(matchv[i], ws.ws_col - 1);
- } else if (i == current) {
- char *s = format(matchv[i], ws.ws_col - 3);
- fprintf(stderr, "\n\x1b[30;47m\x1b[K %s\x1b[m", s);
-
- } else {
- char *s = format(matchv[i], ws.ws_col - 3);
- fprintf(stderr, "\n\x1b[K %s", s);
- }
+ if (opt['#'] && matchv[i][0] == '#')
+ fprintf(stderr, "\n\033[1m\033[K %s\033[m", s);
+ else if (i == current)
+ fprintf(stderr, "\n\033[30;47m\033[K %s\033[m", s);
+ else
+ fprintf(stderr, "\n\033[K %s", s);
i++; printed++;
}
while (printed++ < count)
- fputs("\n\x1b[K", stderr);
+ fputs("\n\033[K", stderr);
}
static void
printscreen(void)
{
- int cols = ws.ws_col - 1, i;
+ int cols = ws.ws_col - 1;
int count = MIN(opt['l'], ws.ws_row - 1);
- fputs("\r\x1b[K", stderr);
+ fputs("\r\033[K", stderr);
printlines(count);
- fprintf(stderr, "\x1b[%dA\r", count);
+ fprintf(stderr, "\033[%dA\r", count);
if (*prompt) {
- format(prompt, cols);
- fputs("\x1b[30;47m ", stderr);
- for (i = 0; formatted[i]; i++)
- fputc(formatted[i], stderr);
- fputs(" \x1b[m", stderr);
- cols -= strlen(formatted) + 1;
+ format(prompt, cols - 2);
+ fprintf(stderr, "\033[30;47m %s \033[m", formatted);
+ cols -= strlen(formatted) + 2;
}
fputc(' ', stderr);
@@ -308,7 +301,7 @@ printselection(void)
puts(matchv[current]);
}
- fputs("\r\x1b[K", stderr);
+ fputs("\r\033[K", stderr);
}
static int
@@ -364,7 +357,7 @@ top:
printselection();
return EXIT_SUCCESS;
- case 0x1b: /* escape / alt */
+ case 033: /* escape / alt */
key = ALT(fgetc(stdin));
goto top;