### along with mLib/Python; if not, write to the Free Software Foundation,
### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-def word(char *p, quotep = False):
+def word(object p, object quotep = False):
"""word(STR, [quotep = False]) -> WORD, REST"""
- cdef unsigned f
- cdef char *op
- cdef char *pp
+ cdef unsigned f = 0
+ cdef char *op = xstrdup(TEXT_PTR(p))
+ cdef char *pp = op
cdef char *q
cdef object w
cdef object r
- f = 0
if quotep:
- f = f | STRF_QUOTE
- pp = op = xstrdup(p)
+ f |= STRF_QUOTE
q = str_qword(&pp, f)
if q is NULL:
w = None
else:
- w = q
+ w = <str>q
if pp is NULL:
r = ''
else:
- r = pp
+ r = <str>pp
xfree(op)
return w, r
-def split(char *p, int n = -1, quotep = False):
+def split(object p, int n = -1, quotep = False):
"""split(STR, [n = -1], [quotep = False]) -> WORDS, REST"""
- cdef unsigned f
- cdef char *op
- cdef char *pp
+ cdef unsigned f = 0
+ cdef char *op = xstrdup(TEXT_PTR(p))
+ cdef char *pp = op
cdef char *q
- cdef object l
+ cdef object l = []
cdef object r
- f = 0
if quotep:
- f = f | STRF_QUOTE
- l = []
- op = pp = xstrdup(p)
+ f |= STRF_QUOTE
while n != 0:
q = str_qword(&pp, f)
if q is NULL:
break
- l.append(q)
+ l.append(<str>q)
if n > 0:
- n = n - 1
+ n -= 1
if pp is NULL:
r = ''
else:
- r = pp
+ r = <str>pp
xfree(op)
return l, r
-def match(char *p, char *s, prefixp = False):
+def match(object p, object s, prefixp = False):
"""match(PAT, STR, [prefixp = False]) -> BOOL"""
- cdef unsigned f
+ cdef unsigned f = 0
- f = 0
if prefixp:
- f = f | STRF_PREFIX
- return _tobool(str_matchx(p, s, f))
+ f |= STRF_PREFIX
+ return str_matchx(TEXT_PTR(p), TEXT_PTR(s), f)
-def sanitize(char *p, int n = -1):
+def sanitize(object s, int n = -1):
"""sanitize(STR, [n = -1]) -> STR"""
+ cdef Py_ssize_t nn
+ cdef const char *ss = _text_strlen(s, &nn)
cdef char *buf
cdef object d
if n < 0:
- n = strlen(p)
+ n = nn
buf = <char *>xmalloc(n + 1)
- str_sanitize(buf, p, n + 1)
- d = buf
+ str_sanitize(buf, ss, n + 1)
+ d = <str>buf
xfree(buf)
return d
-def versioncmp(char *va, char *vb):
+def versioncmp(object va, object vb):
"""versioncmp(V0, V1) -> -1 | 0 | +1"""
- return _versioncmp(va, vb)
+ return _versioncmp(TEXT_PTR(va), TEXT_PTR(vb))
###----- That's all, folks --------------------------------------------------