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
88ed66e138
refactor cmdlist.num_cmds -> cmdlist.num_cmd to be more consistent
2025-03-28 14:50:37 +01:00
448458b37f
redirection parsing: parse redirections for cmdgroup
2025-03-28 14:50:37 +01:00
c258fa6077
fix(simple_cmd): did not free redirection list correctly
2025-03-28 14:50:37 +01:00
0584757446
refactor: put parsing of command and debugging out of main loop
2025-03-28 14:50:37 +01:00
36c1b72eff
tests: implement a better integration test framework than shellspec
...
(for our usecase at least)
2025-03-28 14:50:37 +01:00
1f03cbbedb
tree debug: implement rest of tree debug
...
This is a big commit, sorry!
2025-03-28 14:50:37 +01:00
76b2b8ec7f
treedrawing: fix bug where rare circumstances could lead to incorrect indent
...
The problem took me a while to find, but the issue here was that push_buf does
not add a terminating null byte, and I was only asking push_buf to copy the
bytes that contained characters, not the terminating null byte as well.
This, combined with the fact that to remove bytes from the end of the buffer, I
just placed a null byte a the end, caused some combinations of indentation and
dedentations to overwrite the null byte, and not place a null byte after the new
indent, which would still contain data from a previous indentation.
2025-03-28 14:50:37 +01:00
1486c3b124
treeprint refactor: use simpler types
2025-03-28 14:50:37 +01:00
3edff91107
cmdgroup parsing: parse a single cmdlist
2025-03-28 14:50:37 +01:00
5379ad34f2
cmdlist debug: implement debug func (STUB)
...
I need to actually parse some cmdlists for this to have any meaning further
2025-03-28 14:50:37 +01:00
40c5164eef
tree debug: create library for easy indent/dedent
2025-03-28 14:50:37 +01:00
47a61699ab
cmdlist debug: tree debug printing (STUB)
2025-03-28 14:50:37 +01:00
131ba36d93
cmdlist refactor: use cmdlist instead of command_list as a shorthand
...
I hope this doesn't break too much code ^^
2025-03-28 14:50:37 +01:00
56fe943efc
cmdlist: use new architecture (STUB)
...
I fixed the tests, and the basic functionallity of detecting pipelines works,
but detecting nested cmdgroups is not yet implemented
2025-03-28 14:50:37 +01:00
8f7e7f7dfe
cmdgroup: tree debug routine
2025-03-28 14:50:37 +01:00
55d21196b8
cmdgroup: start implementing debug routines
2025-03-28 14:50:37 +01:00
d069abcd43
Makefile: add rules to build main executable with sanitizers
2025-03-28 14:50:37 +01:00
f9aa614ef2
cmdgroup parsing: start implementing the new architecture
2025-03-28 14:50:37 +01:00
d6bb24df54
cmdgroup parsing: ensure parsing of a pipeline functions correctly
2025-03-28 14:50:37 +01:00
0f0d3ea0bd
notes: new architecture for cmdgroup
2025-03-28 14:50:37 +01:00
d8dd1613c8
cmdgroup parsing: handle parsing a single cmdlist (badly)
2025-03-28 14:50:37 +01:00
9707316085
tests: put usefull test functions in own files
2025-03-28 14:50:37 +01:00
f5ae3a5d8d
tests: add a test_ prefix to all files that contain actual tests
...
This will make it easier to differentiate with utility files, as the next change
will add sevral
2025-03-28 14:50:37 +01:00
bc5be67bf6
cmdgroup parsing: parse empty wordlist
2025-03-28 14:50:37 +01:00
8f919b33df
notes: some notes about the implementation of cmdgroup
2025-03-28 14:50:37 +01:00
Jérôme Guélen
c73884e43a
Expansion: Added documentation for wildcard checking
2025-03-24 13:52:42 +01:00
Jérôme Guélen
08d883b792
Expansion: fixed one documenting comment.
2025-03-24 10:53:02 +01:00
Jérôme Guélen
d5415d978c
Expansion: one fix to make sur $? is handled correctly
2025-03-24 10:48:05 +01:00