File: stringstrreplace.c

package info (click to toggle)
yodl 4.04.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,720 kB
  • sloc: ansic: 7,803; perl: 683; cpp: 570; sh: 411; xml: 190; makefile: 164
file content (26 lines) | stat: -rw-r--r-- 703 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "string.ih"

char *string_str_replace(char const *left,
                    char const *search, char const *replace)
{
    size_t searchlen = search ? strlen(search) : 0;
    register char const *right;
    String out;

    if (!searchlen)                     /* search should have some length */
        return new_str(left);

    {
        string_construct(&out, 0);

        while ((right = strstr(left, search)))
        {
            string_additerators(&out, left, right);
            string_addstr(&out, replace);
            left = right + searchlen;
        }
        string_addstr(&out, left);          /* append the final tail        */

        return string_release(&out);
    }
}