File: stringreplace.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-- 685 bytes parent folder | download | duplicates (4)
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"

void string_replace(String *str,
                    char const *search, char const *replace)
{
    size_t searchlen = search ? strlen(search) : 0;
    register char *left = str->d_str;
    register char *right;
    String out;

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

    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        */

    string_copy(str, &out);
    string_destruct(&out);
}