File: substr.c

package info (click to toggle)
icmake 7.11-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 2,804 kB
  • ctags: 1,541
  • sloc: ansic: 7,755; makefile: 6,063; sh: 359; cpp: 83
file content (27 lines) | stat: -rw-r--r-- 510 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
27
/*
*/

#include "builtin.ih"

void fun_substr()
{
    char const *str = stringStr(top());
    size_t str_len = strlen(str);
    int offset = intValue(top() - 1);
    int count = intValue(top() - 2);

    if (offset < 0)
        offset = 0;

    if ((size_t)offset >= str_len || count <= 0)
        reg = *stringConstructor();
    else
    {
        reg = *stringConstructor_cP(str + offset);
        if (count < (int)(str_len - (size_t)offset))
            ((char *)stringStr(&reg))[count] = 0;
    }    
}