diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2021-11-11 16:31:58 -0800 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2021-11-11 16:31:58 -0800 |
commit | 9695ea005d4af93dcd60f74f10fd3c54499a182f (patch) | |
tree | 3e1a9abb9456ba07c0c97cd3d691f6a2df115791 /sys/base/string/replace.c | |
parent | c65794b50b1bc729e7a4e940b76a973afa3030b9 (diff) |
chore: split up base library into individual files for smaller binaries
Diffstat (limited to 'sys/base/string/replace.c')
-rw-r--r-- | sys/base/string/replace.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sys/base/string/replace.c b/sys/base/string/replace.c new file mode 100644 index 0000000..127daed --- /dev/null +++ b/sys/base/string/replace.c @@ -0,0 +1,26 @@ +#include "internal.h" + +// replace will replace all occurences of the given bytes 'from' to bytes 'to' +// edits are done in place and modify the string. +// NOTE: as of now strings from and to must be the same size. +void +str·replace(string s, const byte* from, const byte* to) +{ + vlong fromL = strlen(from); + vlong toL = strlen(to); + if (toL != fromL) { panicf("different sized replacement string not supported"); } + + vlong l = str·len(s); + vlong i = l; + vlong j = l; + + for (i = 0; i < l; i++) { + for (j = 0; j < toL; j++) { + if (s[i] == from[j]) { + s[i] = to[j]; + break; + } + } + } +} + |