aboutsummaryrefslogtreecommitdiff
path: root/common/stringop.c
AgeCommit message (Collapse)AuthorLines
2023-02-28Add format_str() and vformat_str()Furkan Sahin-0/+33
Simple helpers to allocate and format a string.
2020-12-03common: make 'lenient_strcmp' arguments constFurkan Sahin-1/+1
Prevents build failures when calling the function with 'const char *' arguments. This is also more accurate since the function is not expected to modify the args.
2019-11-23Amend typosFurkan Sahin-1/+1
2019-11-20input_cmd_xkb_file: allow shell path expansionFurkan Sahin-0/+19
This allows for shell path expansion for input_cmd_xkb_file. The logic has been extracted from output_cmd_background
2019-06-11Fix segfaults caused by faulty command parsingFurkan Sahin-16/+40
This patch fixes faulty command parsing introduced by 482bcb78e6fa356c28d685552e2409e4c9c66714. When that commit allowed criteria reset on ';' delimeters in commands lists, it failed to account for its inner ','-parsing loop eating threw the entire rest of the string. This patch refactors argsep to use a list of multiple separators, and (optionally) return the separator that it matched against in this iteration via a pointer. This allows it to hint at the command parser which separator was used at the end of the last command, allowing it to trigger a potential secondary read of the criteria. Fixes #4239
2019-01-17stringop.c: refactor a few functionsFurkan Sahin-8/+5
2019-01-17stringop.c: clean up headersFurkan Sahin-5/+5
2019-01-17stringop.c: remove unused functionsFurkan Sahin-115/+0
The only use of `join_list` in swaybar/tray/icon.c has been rewritten.
2019-02-05output_cmd_background: fix no file + valid modeFurkan Sahin-0/+3
If output_cmd_background is given a valid mode as the first argument, then there is no file given and an error should be returned. join_args should not be called with an argc of zero since it sets the last character to the null terminator. With an argc of zero, the length is zero causing a heap buffer overflow when setting the byte before the start of argv to '\0'. This probably will not ever generate a segfault, but may cause data corruption to whatever is directly before it in memory. To make other such cases easier to detect, this also adds a sway_assert in join_args when argc is zero.
2019-01-02fixup! stringop.c: rewrite strip_whitespaceFurkan Sahin-4/+4
2018-12-09stringop.c: rewrite strip_whitespaceFurkan Sahin-17/+10
2018-12-08list.c: Remove list_foreachFurkan Sahin-8/+0
Most occurrences have been replaced by `free_flat_list` which has been moved from stringop.c to list.c. The rest have been replaced by for loops.
2018-11-25Replace _XOPEN_SOURCE with _POSIX_C_SOURCEFurkan Sahin-1/+1
And make sure we don't define both in the same source file.
2018-09-01Allow reload command to exist anywhere in the command stringFurkan Sahin-0/+14
This fixes a crash if you have commands where reload appears in the middle or at the end, such as `bindsym r mode default, reload`.
2018-05-25Clean up container title functionsFurkan Sahin-0/+14
* Add and use lenient_strcat and lenient_strncat functions * Rename `concatenate_child_titles` function as that's no longer what it does * Rename `container_notify_child_title_changed` because we only need to notify that the tree structure has changed, not titles * Don't notify parents when a child changes its title * Update ancestor titles when changing a container's layout * Eg. create nested tabs and change the inner container to stacking * No need to store tree presentation in both container->name and formatted_title
2017-06-05FreeBSD fixesFurkan Sahin-1/+1
Increase _POSIX_SOURCE value where needed. Increase _XOPEN_SOURCE value where needed. Conditionally link to libcap (only on Linux). Possibly some trailing whitespace fixes (automatic).
2017-03-10UnGNUify the codebaseFurkan Sahin-0/+1
2016-04-29common/stringop.c: a premature decrement meant an element of argv was never ↵Furkan Sahin-1/+1
released
2016-04-02Fix spelling mistakesFurkan Sahin-1/+1
2016-01-25Add quotes to multiword arguments.Furkan Sahin-0/+26
This adds quotes around multiword arguments before they are passed to `/bin/sh -c` in an exec command. Example: I connect to irc like this: exec termite -e "mosh server tmux a" Without this patch the arguments are passed to sh as: termite -e mosh server tmux a When it should be: termite -e "mosh server tmux a" For the command to work.
2015-11-29Only strip comments at the start of a lineFurkan Sahin-20/+0
This is necessary because i3 config files use CSS notation for colors (i.e. #rrggbb).
2015-11-26Parse command line args for swaymsgFurkan Sahin-0/+382