MINOR: ist: define iststrip() new function
Implement iststrip(). This function removes any trailing newline sequence if present from an ist.
This commit is contained in:
parent
e74148fb7c
commit
bc3c117dc0
|
@ -331,6 +331,25 @@ static inline struct ist istzero(const struct ist ist, size_t size)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Remove trailing newline characters if present in <ist> by reducing its
|
||||||
|
* length. Both '\n', '\r' and '\n\r' match. Return the modified ist.
|
||||||
|
*/
|
||||||
|
static inline struct ist iststrip(const struct ist ist)
|
||||||
|
{
|
||||||
|
struct ist ret = ist;
|
||||||
|
|
||||||
|
if (ret.len) {
|
||||||
|
if (ret.ptr[ret.len - 1] == '\n')
|
||||||
|
--ret.len;
|
||||||
|
}
|
||||||
|
if (ret.len) {
|
||||||
|
if (ret.ptr[ret.len - 1] == '\r')
|
||||||
|
--ret.len;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* returns the ordinal difference between two strings :
|
/* returns the ordinal difference between two strings :
|
||||||
* < 0 if ist1 < ist2
|
* < 0 if ist1 < ist2
|
||||||
* = 0 if ist1 == ist2
|
* = 0 if ist1 == ist2
|
||||||
|
|
|
@ -129,6 +129,30 @@ int test_istzero()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct ist f_iststrip(struct ist ist) { return iststrip(ist); }
|
||||||
|
int test_iststrip()
|
||||||
|
{
|
||||||
|
if (iststrip(ist("foo")).len != 3)
|
||||||
|
return __LINE__;
|
||||||
|
|
||||||
|
if (iststrip(ist("foo\n")).len != 3)
|
||||||
|
return __LINE__;
|
||||||
|
|
||||||
|
if (iststrip(ist("foo\r")).len != 3)
|
||||||
|
return __LINE__;
|
||||||
|
|
||||||
|
if (iststrip(ist("foo\r\n")).len != 3)
|
||||||
|
return __LINE__;
|
||||||
|
|
||||||
|
if (iststrip(ist("")).len != 0)
|
||||||
|
return __LINE__;
|
||||||
|
|
||||||
|
if (iststrip(ist("\n")).len != 0)
|
||||||
|
return __LINE__;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int f_istdiff(const struct ist ist1, const struct ist ist2) { return istdiff(ist1, ist2); }
|
int f_istdiff(const struct ist ist1, const struct ist ist2) { return istdiff(ist1, ist2); }
|
||||||
int test_istdiff()
|
int test_istdiff()
|
||||||
{
|
{
|
||||||
|
@ -682,6 +706,7 @@ int main(void)
|
||||||
printf("%4d istpad()\n", test_istpad());
|
printf("%4d istpad()\n", test_istpad());
|
||||||
printf("%4d isttrim()\n", test_isttrim());
|
printf("%4d isttrim()\n", test_isttrim());
|
||||||
printf("%4d istzero()\n", test_istzero());
|
printf("%4d istzero()\n", test_istzero());
|
||||||
|
printf("%4d iststrip()\n", test_iststrip());
|
||||||
printf("%4d istdiff()\n", test_istdiff());
|
printf("%4d istdiff()\n", test_istdiff());
|
||||||
printf("%4d istmatch()\n", test_istmatch());
|
printf("%4d istmatch()\n", test_istmatch());
|
||||||
printf("%4d istnmatch()\n", test_istnmatch());
|
printf("%4d istnmatch()\n", test_istnmatch());
|
||||||
|
|
Loading…
Reference in New Issue