|
|
7425195350
|
norm: fix all easy issues
|
2025-04-14 14:44:42 +02:00 |
|
|
|
1c9653a5a5
|
parsing: parse redirections
|
2025-04-14 14:44:42 +02:00 |
|
|
|
1866da6ea6
|
fix: make it compile
|
2025-04-11 16:57:31 +02:00 |
|
Jérôme Guélen
|
4baad88a44
|
parse-cmd: Only redirections left to parse.
|
2025-04-10 18:57:04 +02:00 |
|
Jérôme Guélen
|
926774846f
|
parse-cmd: Almost done but stopped by the gong
|
2025-04-08 19:56:46 +02:00 |
|
Jérôme Guélen
|
d0cea8828d
|
parse-cmd: Mainly adding destructors and a token type.
|
2025-04-08 16:29:57 +02:00 |
|
Jérôme Guélen
|
72714855f7
|
parse-cmd: fixes and partial norm.
|
2025-04-08 13:08:43 +02:00 |
|
Jérôme Guélen
|
10a3c9c411
|
parse-cmd: Various fixes and a rotation of the parsing tree
|
2025-04-08 12:14:38 +02:00 |
|
Jerome
|
90d213bf98
|
parse-cmd: Slow start. Ideas starting to coalesce.
|
2025-04-06 21:52:33 +02:00 |
|
Jerome
|
9acee63d22
|
parse-cmd: grammar.md
|
2025-04-06 15:49:52 +02:00 |
|
Jerome
|
1a22a39336
|
parse-cmd: fix typo and grammar.md appearance
|
2025-04-06 15:49:52 +02:00 |
|
Jérôme Guélen
|
fea514ea63
|
parse-cmd: Just a forgotten check to be reviewed later.
|
2025-04-06 15:49:52 +02:00 |
|
Jérôme Guélen
|
5f95751b36
|
parse-cmd: A very basic skeleton of functions to come
|
2025-04-06 15:49:52 +02:00 |
|
Jérôme Guélen
|
f490cc22f5
|
Parsing: Added a document to describe the underlying grammar
|
2025-04-06 15:49:52 +02:00 |
|
Jérôme Guélen
|
4d9fabc794
|
Parse-cmd: Added a builder structure (unfinished)
|
2025-04-06 15:49:52 +02:00 |
|
Jérôme Guélen
|
10d7b65b08
|
Parse-cmd: fix and add comment
|
2025-04-06 15:49:52 +02:00 |
|
|
|
0a80b9fbe3
|
simple_cmd executing refactor: put builtin related utilities into own file
|
2025-04-01 16:38:41 +02:00 |
|
|
|
ba4192bf8d
|
export: set correct exit status
|
2025-04-01 15:58:56 +02:00 |
|
|
|
3cdf7c3f76
|
export: handle invalid identifiers
|
2025-04-01 15:54:46 +02:00 |
|
|
|
299e016a27
|
export: handle simple cases
|
2025-04-01 14:39:02 +02:00 |
|
|
|
b92aa33c4e
|
inttests: fix test runner sometimes reporting wrong todo count
|
2025-04-01 14:28:47 +02:00 |
|
|
|
bac3512898
|
minishell: do variable substitution in postprocessing
|
2025-04-01 13:50:14 +02:00 |
|
|
|
7153df9305
|
cd: print error if cd is called with too many arguments
|
2025-03-31 20:06:34 +02:00 |
|
|
|
a66b71e5ce
|
cd: ensure relative paths work as expected
|
2025-03-31 19:59:32 +02:00 |
|
|
|
f1b2e1e22d
|
cd: handle empty argument
|
2025-03-31 17:07:46 +02:00 |
|
|
|
8f3c15f096
|
cd: when going to $HOME, show error message if it is unset
|
2025-03-31 16:58:21 +02:00 |
|
|
|
e046d151a2
|
inttests: add ability to manipulate environment for a single test
|
2025-03-31 16:57:40 +02:00 |
|
|
|
d66ca10a0c
|
cd: with no arg, go to $HOME
|
2025-03-31 16:40:22 +02:00 |
|
|
|
e93e6efb93
|
builtins: cd: implement cd to absolute paths
|
2025-03-31 16:34:48 +02:00 |
|
|
|
5ce4a2b85f
|
builtin: implement pwd
|
2025-03-31 14:54:40 +02:00 |
|
|
|
1c4733b1cc
|
here_doc: print error if failed to create temp file
|
2025-03-28 19:10:43 +01:00 |
|
|
|
66ea1328aa
|
simple_cmd executing: print error message on command not found
|
2025-03-28 16:58:13 +01:00 |
|
|
|
a4c482e8f9
|
here_doc: perform variable expansion
|
2025-03-28 16:45:28 +01:00 |
|
Jérôme Guélen
|
5ff990ef50
|
Parsing-refactor: Determining structures.
|
2025-03-28 15:03:15 +01:00 |
|
|
|
befe219436
|
simple_cmd executing: works with arguments and env
Does not handle redirections at all, no special facilities are in place to allow
nofork or builtin execution.
|
2025-03-28 14:50:37 +01:00 |
|
|
|
dd293c0183
|
leaks: ignore readline add_history leaks
|
2025-03-28 14:50:37 +01:00 |
|
|
|
bd01c79838
|
fix: get_cmdpath returns NULL if executable is absent in first directory searched
|
2025-03-28 14:50:37 +01:00 |
|
|
|
a5a93be3d0
|
fix: get_cmdpath will sometimes leak memory
|
2025-03-28 14:50:37 +01:00 |
|
|
|
a7b78272ab
|
minishell: initialize app struct with env
|
2025-03-28 14:50:37 +01:00 |
|
|
|
db1834a620
|
inttests: run each test in a clean directory
|
2025-03-28 14:50:37 +01:00 |
|
|
|
d8bc528c5a
|
minishell: only parse simple commands
|
2025-03-28 14:50:37 +01:00 |
|
|
|
f07a80c762
|
postprocessing: do quote removal
|
2025-03-28 14:50:37 +01:00 |
|
|
|
22b0b4746f
|
fix: worddesc_copy did not copy the marker
|
2025-03-28 14:50:37 +01:00 |
|
|
|
8b67ccc813
|
inttests: add a way to mark a test as TODO
|
2025-03-28 14:50:37 +01:00 |
|
|
|
0fbfee7d78
|
cmdgroup parsing: parse cmdlist surrounded by parentheses
|
2025-03-28 14:50:37 +01:00 |
|
|
|
185a069044
|
cmdgroup parsing refactor: use builder pattern
This will make it easier to add the next logic stuff to it
|
2025-03-28 14:50:37 +01:00 |
|
|
|
73a64b2ec3
|
fix potential memory leak in cmdlist_from_wordlist
This leak would happen if the alocation of the builder fails. In that case, we
don't free our copy of the wordlist
|
2025-03-28 14:50:37 +01:00 |
|
|
|
bed8c9d507
|
inttests: exit with number of failed test as exit code
|
2025-03-28 14:50:37 +01:00 |
|
|
|
dff5de66da
|
fix redirection parsing sometimes skipping over redirections
This happens when multiple redirections are following each others, such as in
echo hi > out < in
which would be parsed as
╰─ t_cmdgroup
├─ t_cmdlist
│ ├─ num_cmds = 1
│ ╰─ cmd[0]
│ ├─ t_cmdlist_item
│ │ ╰─ t_pipeline
│ │ ├─ num_cmd = 1
│ │ ╰─ cmd[0]
│ │ ╰─ t_simple_cmd
│ │ ├─ words = [echo][hi][<][in]
│ │ ╰─ t_redir_list
│ │ ╰─ redirection[0]
│ │ ╰─ t_redirection
│ │ ├─ t_redir_type = REDIR_OUTPUT
│ │ ╰─ marker = [out]
│ ╰─ t_operator = END
╰─ (no redirections)
when the correct parsing is
╰─ t_cmdgroup
├─ t_cmdlist
│ ├─ num_cmds = 1
│ ╰─ cmd[0]
│ ├─ t_cmdlist_item
│ │ ╰─ t_pipeline
│ │ ├─ num_cmd = 1
│ │ ╰─ cmd[0]
│ │ ╰─ t_simple_cmd
│ │ ├─ words = [echo][hi]
│ │ ╰─ t_redir_list
│ │ ├─ redirection[0]
│ │ │ ╰─ t_redirection
│ │ │ ├─ t_redir_type = REDIR_OUTPUT
│ │ │ ╰─ marker = [out]
│ │ ╰─ redirection[1]
│ │ ╰─ t_redirection
│ │ ├─ t_redir_type = REDIR_INPUT
│ │ ╰─ marker = [in]
│ ╰─ t_operator = END
╰─ (no redirections)
|
2025-03-28 14:50:37 +01:00 |
|
|
|
9fb4e13420
|
implement tree debug for redirections
|
2025-03-28 14:50:37 +01:00 |
|