back to scratko.xyz
summaryrefslogtreecommitdiff
path: root/shell.h
diff options
context:
space:
mode:
Diffstat (limited to 'shell.h')
-rw-r--r--shell.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/shell.h b/shell.h
index d1d5a2c..7a5ba3a 100644
--- a/shell.h
+++ b/shell.h
@@ -4,6 +4,8 @@
#include "dynamic_array.h"
#include "queue.h"
+#include <signal.h>
+
enum {
end_of_file = 4,
new_line = 10,
@@ -18,7 +20,10 @@ enum {
enum {
append = '>' + 1,
and = '&' + 1,
- or = '|' + 1
+ or = '|' + 1,
+ next_command = ';',
+ start_subshell = '(',
+ end_subshell = ')'
};
/* error codes */
@@ -29,7 +34,10 @@ enum {
err_bg_process = 4,
err_empty_command = 5,
err_extra_chars_after_filename = 6,
- err_odd_double_quotes = 7
+ err_odd_double_quotes = 7,
+ err_set_failure = 8,
+ err_missing_closing_bracket = 9,
+ err_repeated_background_ch = 10
};
/* storing file names to redirect standard input/output streams */
@@ -48,12 +56,19 @@ struct param_type {
int tokens;
int wrong_command;
struct io_type streams;
- int last_execution_status;
int pipeline;
int new_readline;
+ int general_pipe_pgid;
+ int general_subshell_pgid;
int general_pgid;
+ int subshell;
+ int fd_read_for_channel;
+ int fd_read_for_subshell;
+ int background_process;
};
+extern volatile sig_atomic_t last_execution_status;
+
int filename_waiting(struct param_type *params);
void add_filename(struct dynamic_array *tmp_word, struct param_type *params);
void add_word(struct w_queue *word_chain, struct dynamic_array *tmp_word,