|
@@ -55,8 +55,10 @@ struct ret_buffer_size_t_err buffer_remove_between(struct buffer buf,
|
|
|
struct ret_size_t_err buffer_index_bw_word(struct buffer buf);
|
|
struct ret_size_t_err buffer_index_bw_word(struct buffer buf);
|
|
|
struct ret_size_t_err buffer_index_fw_word(struct buffer buf);
|
|
struct ret_size_t_err buffer_index_fw_word(struct buffer buf);
|
|
|
|
|
|
|
|
-struct ret_size_t_err buffer_index_bw_char(struct buffer buf, char c);
|
|
|
|
|
-struct ret_size_t_err buffer_index_fw_char(struct buffer buf, char c);
|
|
|
|
|
|
|
+struct ret_size_t_err buffer_index_bw_char(struct buffer buf,
|
|
|
|
|
+ size_t start, char c);
|
|
|
|
|
+struct ret_size_t_err buffer_index_fw_char(struct buffer buf,
|
|
|
|
|
+ size_t start, char c);
|
|
|
|
|
|
|
|
#if defined(BUFFER_IMP) || defined(IMP)
|
|
#if defined(BUFFER_IMP) || defined(IMP)
|
|
|
|
|
|
|
@@ -358,7 +360,7 @@ err: ;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
struct ret_size_t_err
|
|
struct ret_size_t_err
|
|
|
-buffer_index_bw_char(struct buffer buf, char c)
|
|
|
|
|
|
|
+buffer_index_bw_char(struct buffer buf, size_t start, char c)
|
|
|
{
|
|
{
|
|
|
enum buffer_err err;
|
|
enum buffer_err err;
|
|
|
if ( buf.data.size == 0 ) {
|
|
if ( buf.data.size == 0 ) {
|
|
@@ -376,7 +378,7 @@ buffer_index_bw_char(struct buffer buf, char c)
|
|
|
bool cond = false;
|
|
bool cond = false;
|
|
|
/* TODO: Find a way to not use ssize_t buf size_t */
|
|
/* TODO: Find a way to not use ssize_t buf size_t */
|
|
|
ssize_t closest = -1;
|
|
ssize_t closest = -1;
|
|
|
- for ( ssize_t i = 0; i < (ssize_t) buf.cur; ++i ) {
|
|
|
|
|
|
|
+ for ( ssize_t i = 0; i < (ssize_t) start; ++i ) {
|
|
|
cond = str[i] == c;
|
|
cond = str[i] == c;
|
|
|
closest = ( cond ) * i + ( ! cond ) * closest;
|
|
closest = ( cond ) * i + ( ! cond ) * closest;
|
|
|
}
|
|
}
|
|
@@ -398,7 +400,7 @@ err: ;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
struct ret_size_t_err
|
|
struct ret_size_t_err
|
|
|
-buffer_index_fw_char(struct buffer buf, char c)
|
|
|
|
|
|
|
+buffer_index_fw_char(struct buffer buf, size_t start, char c)
|
|
|
{
|
|
{
|
|
|
enum buffer_err err;
|
|
enum buffer_err err;
|
|
|
if ( buf.data.size == 0 ) {
|
|
if ( buf.data.size == 0 ) {
|
|
@@ -413,7 +415,7 @@ buffer_index_fw_char(struct buffer buf, char c)
|
|
|
|
|
|
|
|
const char *str = buf.data.items;
|
|
const char *str = buf.data.items;
|
|
|
|
|
|
|
|
- for ( size_t i = buf.cur; i < buf.data.size; ++i ) {
|
|
|
|
|
|
|
+ for ( size_t i = start; i < buf.data.size; ++i ) {
|
|
|
if ( str[i] == c ) {
|
|
if ( str[i] == c ) {
|
|
|
return (struct ret_size_t_err) {
|
|
return (struct ret_size_t_err) {
|
|
|
.f1 = i,
|
|
.f1 = i,
|