Merge pull request #52 from AnonymusRaccoon/termios

Global clean up
This commit is contained in:
Anonymus Raccoon
2020-05-20 14:47:58 +02:00
committed by GitHub
4 changed files with 32 additions and 4 deletions
+17
View File
@@ -46,4 +46,21 @@ void my_addstr(my_window *window, const char *str);
#define my_mvaddstr(window, y, x, str) (my_move(window, y, x), \
my_addstr(window, str))
#define COLOR 0
#define BACKGROUND_COLOR 10
#define BRIGHT_MODIFIER 60
#define BLACK 30
#define RED 31
#define GREEN 32
#define YELLOW 33
#define BLUE 34
#define MAGENTA 53
#define CYAN 36
#define WHITE 37
#define my_attron(attr, value) (printf("\x1B[%dm", attr + value))
#define my_attrreset() (printf("\x1B[0m"))
void my_clrtoeol(void);
+4 -1
View File
@@ -17,10 +17,11 @@
int run_builtin(const builtin *cmd, char **a, redirection *inout[2], env_t *env)
{
int ret = 0;
int saved_fd[2];
int saved_fd[3];
saved_fd[0] = dup(0);
saved_fd[1] = dup(1);
saved_fd[2] = dup(2);
if (saved_fd[0] < 0 || saved_fd[1] < 0) {
perror("mysh");
return (-1);
@@ -29,8 +30,10 @@ int run_builtin(const builtin *cmd, char **a, redirection *inout[2], env_t *env)
ret = cmd->run(a, env);
dup2(saved_fd[0], 0);
dup2(saved_fd[1], 1);
dup2(saved_fd[2], 2);
close(saved_fd[0]);
close(saved_fd[1]);
close(saved_fd[2]);
if (handle_parent_inout(inout, env, true))
ret = 0;
return (ret);
+1 -1
View File
@@ -68,7 +68,7 @@ int newline_command(int key, buffer_t *buffer, env_t *env)
ret = eval_raw_cmd(buffer->buffer, env);
buffer->buffer[0] = '\0';
buffer->pos = 0;
if (env->window)
if (env->window && ret >= 0)
prompt_prepare(buffer, env);
return (ret);
}
+10 -2
View File
@@ -6,15 +6,16 @@
*/
#include "redirections.h"
#include "my_ncurses.h"
#include <malloc.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <stddef.h>
#include <ncurses.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <string.h>
#define _XOPEN_SOURCE 600
#define __USE_XOPEN_EXTENDED
#include <stdlib.h>
@@ -88,7 +89,14 @@ void pty_get_output(redirection *pty, env_t *env)
close(pty->fd);
while (getline(&line, &size, file) > 0)
my_addstr(env->window, line);
if (line)
if (line) {
if (line[0] && !strchr(line, '\n')) {
my_attron(BACKGROUND_COLOR, WHITE);
my_attron(COLOR, BLACK);
my_addstr(env->window, "%\n");
my_attrreset();
}
free(line);
}
fclose(file);
}