Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
alpine
apk-tools
Commits
7cef96c3
Commit
7cef96c3
authored
Apr 14, 2009
by
Timo Teräs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
blob: add strspn helpers
parent
024480ac
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
1 deletion
+37
-1
src/apk_blob.h
src/apk_blob.h
+9
-1
src/blob.c
src/blob.c
+28
-0
No files found.
src/apk_blob.h
View file @
7cef96c3
...
...
@@ -23,12 +23,20 @@ typedef struct apk_blob apk_blob_t;
#define APK_BLOB_IS_NULL(blob) (blob.ptr == NULL)
#define APK_BLOB_NULL ((apk_blob_t){0, NULL})
#define APK_BLOB_STR(str) ((apk_blob_t){strlen(str), (void *)(str)})
#define APK_BLOB_BUF(buf) ((apk_blob_t){sizeof(buf), (char *)(buf)})
#define APK_BLOB_PTR_LEN(beg,len) ((apk_blob_t){(len), (beg)})
#define APK_BLOB_PTR_PTR(beg,end) APK_BLOB_PTR_LEN((beg),(end)-(beg)+1)
static
inline
apk_blob_t
APK_BLOB_STR
(
const
char
*
str
)
{
if
(
str
==
NULL
)
return
APK_BLOB_NULL
;
return
((
apk_blob_t
){
strlen
(
str
),
(
void
*
)(
str
)});
}
char
*
apk_blob_cstr
(
apk_blob_t
str
);
int
apk_blob_spn
(
apk_blob_t
blob
,
const
char
*
accept
,
apk_blob_t
*
l
,
apk_blob_t
*
r
);
int
apk_blob_cspn
(
apk_blob_t
blob
,
const
char
*
reject
,
apk_blob_t
*
l
,
apk_blob_t
*
r
);
int
apk_blob_splitstr
(
apk_blob_t
blob
,
const
char
*
split
,
apk_blob_t
*
l
,
apk_blob_t
*
r
);
int
apk_blob_rsplit
(
apk_blob_t
blob
,
char
split
,
apk_blob_t
*
l
,
apk_blob_t
*
r
);
unsigned
apk_blob_uint
(
apk_blob_t
blob
,
int
base
);
...
...
src/blob.c
View file @
7cef96c3
...
...
@@ -31,6 +31,34 @@ char *apk_blob_cstr(apk_blob_t blob)
return
cstr
;
}
int
apk_blob_spn
(
apk_blob_t
blob
,
const
char
*
accept
,
apk_blob_t
*
l
,
apk_blob_t
*
r
)
{
int
i
;
for
(
i
=
0
;
i
<
blob
.
len
;
i
++
)
{
if
(
strchr
(
accept
,
blob
.
ptr
[
i
])
==
NULL
)
{
*
l
=
APK_BLOB_PTR_LEN
(
blob
.
ptr
,
i
);
*
r
=
APK_BLOB_PTR_LEN
(
blob
.
ptr
+
i
,
blob
.
len
-
i
);
return
1
;
}
}
return
0
;
}
int
apk_blob_cspn
(
apk_blob_t
blob
,
const
char
*
reject
,
apk_blob_t
*
l
,
apk_blob_t
*
r
)
{
int
i
;
for
(
i
=
0
;
i
<
blob
.
len
;
i
++
)
{
if
(
strchr
(
reject
,
blob
.
ptr
[
i
])
!=
NULL
)
{
*
l
=
APK_BLOB_PTR_LEN
(
blob
.
ptr
,
i
);
*
r
=
APK_BLOB_PTR_LEN
(
blob
.
ptr
+
i
,
blob
.
len
-
i
);
return
1
;
}
}
return
0
;
}
int
apk_blob_rsplit
(
apk_blob_t
blob
,
char
split
,
apk_blob_t
*
l
,
apk_blob_t
*
r
)
{
char
*
sep
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment