f2469f1600
token_build: rename current_index to idx
2025-02-20 15:00:48 +01:00
6f8a86732b
wordsplit: rename token_build to builder in argument names
2025-02-20 15:00:48 +01:00
b23eb0f244
wordsplit: increment index + rename rules
2025-02-20 15:00:48 +01:00
6c8dd312c0
wordsplit: make it compile
2025-02-20 15:00:48 +01:00
3e64ac3769
wordsplit: use individual rule funcs
2025-02-20 15:00:32 +01:00
Jérôme Guélen
58be71725b
Wordsplitting: the preparation for a reswitch.
2025-02-20 15:00:32 +01:00
Jérôme Guélen
0d0a14d21a
Word splitting refactor: Prototypes to be modified
2025-02-20 15:00:32 +01:00
cba6fba845
dev: ignore .cache and compile_commands.json
...
These files are used by clangd to know where code is located.
To generate them, use
bear -- make re
and restart your lsp
jguelen: you probably don't have to deal with this
2025-02-20 15:00:32 +01:00
f92763e479
wordsplit: handle operators
2025-02-20 15:00:32 +01:00
558ddb4096
wordsplit: return error for unclosed quotes
2025-02-20 15:00:32 +01:00
7806043a98
wordsplit: ensure that mixed broken quotes are handled correctly
2025-02-20 15:00:32 +01:00
452d35acdf
wordsplit: handle mixed quotes
2025-02-20 15:00:32 +01:00
1676cf6696
wordsplit: handle double quotes
2025-02-20 15:00:32 +01:00
5276aba278
wordsplit: handle single quotes
2025-02-20 15:00:32 +01:00
81d28c15d4
wordsplit refactor: follow the specification more closesly
...
This will make it easier to implement the rest of the specification.
I probably should have started like this..
2025-02-20 15:00:32 +01:00
db0abe82cc
tests: also show debug info for succeeding assertions
...
This reminds us of all the good stuff we already acomplished!
2025-02-20 15:00:32 +01:00
65b57987b5
buffer: add buffer struct and related functions
2025-02-20 15:00:32 +01:00
4171a3d07b
wordsplit: handle multiple words
2025-02-20 15:00:11 +01:00
00fd2380cf
wordsplit: handle a sigle word separated surrounded by blanks
...
a blank here is as defined by POSIX
https://pubs.opengroup.org/onlinepubs/9699919799/
section 7.3.1
2025-02-20 15:00:11 +01:00
aa12f7c971
matchers: add matcher for <blank> character class
2025-02-20 15:00:11 +01:00
ac10c3b4de
libft: add functions to get the first character matching or not matching a predicate
2025-02-20 14:59:26 +01:00
8defbf4d13
wordsplit: handle single word with spaces before or after
2025-02-20 14:55:29 +01:00
fc985ea046
fix(tests): also run tests if test program did not change
2025-02-20 14:55:29 +01:00
25369f02ab
fix(Makefile): ASAN malloc stacktraces were being truncated
2025-02-20 14:55:29 +01:00
40c97b6813
tests Makefile: add rules to run C tests iwth specific sanitizer
2025-02-20 14:55:29 +01:00
a083800506
word splitting: a single word is not split
...
Sorry this commit is a bit big, lots of groudwork is being established here
2025-02-20 14:55:29 +01:00
871571e258
tests: more clear output log
2025-02-20 14:47:31 +01:00
c5eaa0e126
tests: fix typo in UBSAN invocation
2025-02-20 14:47:31 +01:00
7f71bd1694
tests: add testutils
2025-02-20 14:44:56 +01:00
715e6e122f
libft: add ft_strcmp function
2025-02-20 14:44:56 +01:00
6b64e0dfd7
tests: tests can now use libft
2025-02-20 14:44:05 +01:00
abea59eba4
get_command refactor: put into own file
2025-02-20 14:40:57 +01:00
486dec7bb7
get_command: if input is not a tty, use get next line
...
This simplifies tests
2025-02-20 14:40:57 +01:00
dff68d5a8b
env refactor: split imports over multiple files
...
This allows for potentially faster recompilation, by not triggering
recompilation for all env files if env_manip changes
2025-02-19 16:43:37 +01:00
e445f668b3
env_manip: sort funcs per structure that is being manipulated
...
This is instead of the operation that is being performed.
I find it more logical this way, but if you prefer we can keep it as-is.
I also put the identifier_isvalid func into parser/matchers
2025-02-19 14:47:10 +01:00
Jérôme Guélen
e985fcc562
env_set_entry: use ft_errno to indicate error conditions
2025-02-19 14:34:09 +01:00
Jérôme Guélen
df8aec148f
env_manip: add function to check if a str is a valid variable identifier
2025-02-19 14:34:09 +01:00
Jérôme Guélen
532f9dc526
libft: add free2 function
...
This frees two pointers, and returns NULL
2025-02-19 14:34:09 +01:00
Jérôme Guélen
622a9caa53
refactor: move env_get_size to env_get.c
2025-02-19 14:34:09 +01:00
Jérôme Guélen
30d32a1d53
ft_errno: integrate ft_errno library
2025-02-19 14:34:09 +01:00
Jérôme Guélen
660d785237
ENV: A small set of functions for internal env
2025-02-19 14:34:09 +01:00
18a2835a7c
tests: add testutils
2025-02-19 14:34:09 +01:00
Jérôme Guélen
5b00059526
refactor: rename env_get_set.c to env_get.c
2025-02-19 14:34:09 +01:00
ab6a4d6368
envp_get_val: add tests + make it more consistent with envp_get_key
...
In particular, this is what is now changed:
- if line is null or empty, return null
- if line contains no =, return an empty string
This way, if non-null is returned, that means that line was valid. If null is
returned, there is either an error with line, or malloc failed.
2025-02-19 14:34:09 +01:00
af90bec318
envp_get_key: fix buffer overflow if line contains no '='
2025-02-19 14:34:09 +01:00
9ac8588518
envp_get_key: add tests
2025-02-19 14:34:09 +01:00
aad17031a8
libft: add ft_strcmp function
2025-02-19 14:34:09 +01:00
897f6c6a6b
fix(Makefile): ASAN malloc stacktraces were being truncated
2025-02-19 14:34:09 +01:00
a6ce45ca87
tests Makefile: add rules to run C tests iwth specific sanitizer
2025-02-19 14:34:08 +01:00
c7a86eecfd
tests: tests can now use libft
2025-02-19 14:34:08 +01:00