mirror of
https://github.com/tezc/sc.git
synced 2025-01-14 06:43:04 +08:00
Fix array, url and bump uarch version
This commit is contained in:
parent
159996a896
commit
35a06b702a
2
.github/workflows/.aarch64.yml
vendored
2
.github/workflows/.aarch64.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
name: Build on aarch64
|
name: Build on aarch64
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2.1.0
|
- uses: actions/checkout@v2.1.0
|
||||||
- uses: uraimo/run-on-arch-action@v2.0.7
|
- uses: uraimo/run-on-arch-action@v2.0.8
|
||||||
name: Build artifact
|
name: Build artifact
|
||||||
id: build
|
id: build
|
||||||
with:
|
with:
|
||||||
|
2
.github/workflows/.armv6.yml
vendored
2
.github/workflows/.armv6.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
name: Build on armv6
|
name: Build on armv6
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2.1.0
|
- uses: actions/checkout@v2.1.0
|
||||||
- uses: uraimo/run-on-arch-action@v2.0.7
|
- uses: uraimo/run-on-arch-action@v2.0.8
|
||||||
name: Build artifact
|
name: Build artifact
|
||||||
id: build
|
id: build
|
||||||
with:
|
with:
|
||||||
|
2
.github/workflows/.armv7.yml
vendored
2
.github/workflows/.armv7.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
name: Build on armv7
|
name: Build on armv7
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2.1.0
|
- uses: actions/checkout@v2.1.0
|
||||||
- uses: uraimo/run-on-arch-action@v2.0.7
|
- uses: uraimo/run-on-arch-action@v2.0.8
|
||||||
name: Build artifact
|
name: Build artifact
|
||||||
id: build
|
id: build
|
||||||
with:
|
with:
|
||||||
|
2
.github/workflows/.ppc64le.yml
vendored
2
.github/workflows/.ppc64le.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
name: Build on ppc64le
|
name: Build on ppc64le
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2.1.0
|
- uses: actions/checkout@v2.1.0
|
||||||
- uses: uraimo/run-on-arch-action@v2.0.7
|
- uses: uraimo/run-on-arch-action@v2.0.8
|
||||||
name: Build artifact
|
name: Build artifact
|
||||||
id: build
|
id: build
|
||||||
with:
|
with:
|
||||||
|
2
.github/workflows/.s390x.yml
vendored
2
.github/workflows/.s390x.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
name: Build on s390x
|
name: Build on s390x
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2.1.0
|
- uses: actions/checkout@v2.1.0
|
||||||
- uses: uraimo/run-on-arch-action@v2.0.7
|
- uses: uraimo/run-on-arch-action@v2.0.8
|
||||||
name: Build artifact
|
name: Build artifact
|
||||||
id: build
|
id: build
|
||||||
with:
|
with:
|
||||||
|
@ -220,4 +220,6 @@ int main(int argc, char *argv[])
|
|||||||
test1();
|
test1();
|
||||||
fail_test();
|
fail_test();
|
||||||
bounds_test();
|
bounds_test();
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ cleanup_mutex:
|
|||||||
cleanup_attr:
|
cleanup_attr:
|
||||||
pthread_mutexattr_destroy(&attr);
|
pthread_mutexattr_destroy(&attr);
|
||||||
error:
|
error:
|
||||||
strncpy(cond->err, strerror(rc), sizeof(cond->err));
|
strncpy(cond->err, strerror(rc), sizeof(cond->err) - 1);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,13 +148,13 @@ int sc_cond_term(struct sc_cond *cond)
|
|||||||
rv = pthread_mutex_destroy(&cond->mtx);
|
rv = pthread_mutex_destroy(&cond->mtx);
|
||||||
if (rv != 0) {
|
if (rv != 0) {
|
||||||
rc = -1;
|
rc = -1;
|
||||||
strncpy(cond->err, strerror(rv), sizeof(cond->err));
|
strncpy(cond->err, strerror(rv), sizeof(cond->err) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
rv = pthread_cond_destroy(&cond->cond);
|
rv = pthread_cond_destroy(&cond->cond);
|
||||||
if (rv != 0) {
|
if (rv != 0) {
|
||||||
rc = -1;
|
rc = -1;
|
||||||
strncpy(cond->err, strerror(rv), sizeof(cond->err));
|
strncpy(cond->err, strerror(rv), sizeof(cond->err) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
18
url/sc_url.c
18
url/sc_url.c
@ -35,6 +35,7 @@ struct sc_url *sc_url_create(const char *str)
|
|||||||
const char *s2 = "%.*s%c%.*s%c%.*s%c%.*s%c%.*s%c%.*s%c%.*s%c";
|
const char *s2 = "%.*s%c%.*s%c%.*s%c%.*s%c%.*s%c%.*s%c%.*s%c";
|
||||||
const char *authority = "//";
|
const char *authority = "//";
|
||||||
|
|
||||||
|
int diff;
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
size_t len, full_len, parts_len;
|
size_t len, full_len, parts_len;
|
||||||
size_t scheme_len = 0, authority_len = 0, userinfo_len = 0;
|
size_t scheme_len = 0, authority_len = 0, userinfo_len = 0;
|
||||||
@ -120,7 +121,7 @@ struct sc_url *sc_url_create(const char *str)
|
|||||||
parts_len -= (query_len != 0);
|
parts_len -= (query_len != 0);
|
||||||
parts_len -= (fragment_len != 0);
|
parts_len -= (fragment_len != 0);
|
||||||
|
|
||||||
url = sc_url_malloc(sizeof(struct sc_url) + parts_len + full_len);
|
url = sc_url_malloc(sizeof(*url) + parts_len + full_len);
|
||||||
if (url == NULL) {
|
if (url == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -135,12 +136,15 @@ struct sc_url *sc_url_create(const char *str)
|
|||||||
|
|
||||||
scheme_len -= (scheme_len != 0); // Skip ":"
|
scheme_len -= (scheme_len != 0); // Skip ":"
|
||||||
userinfo_len -= (userinfo_len != 0); // Skip "@"
|
userinfo_len -= (userinfo_len != 0); // Skip "@"
|
||||||
port_len -= (port_len != 0); // Skip ":"
|
diff = port_len != 0;
|
||||||
port += (port_len != 0); // Skip ":"
|
port_len -= diff; // Skip ":"
|
||||||
query_len -= (query_len != 0); // Skip "?"
|
port += diff; // Skip ":"
|
||||||
query += (query_len != 0); // Skip "?"
|
diff = (query_len != 0);
|
||||||
fragment_len -= (fragment_len != 0); // Skip "#"
|
query_len -= diff; // Skip "?"
|
||||||
fragment += (fragment_len != 0); // Skip "#"
|
query += diff; // Skip "?"
|
||||||
|
diff = (fragment_len != 0);
|
||||||
|
fragment_len -= diff; // Skip "#"
|
||||||
|
fragment += diff; // Skip "#"
|
||||||
|
|
||||||
len = sprintf(dest, s2, scheme_len, scheme, 0, userinfo_len, userinfo, 0,
|
len = sprintf(dest, s2, scheme_len, scheme, 0, userinfo_len, userinfo, 0,
|
||||||
host_len, host, 0, port_len, port, 0, path_len, path, 0,
|
host_len, host, 0, port_len, port, 0, path_len, path, 0,
|
||||||
|
@ -210,6 +210,25 @@ void test11(void)
|
|||||||
sc_url_destroy(url);
|
sc_url_destroy(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test12(void)
|
||||||
|
{
|
||||||
|
struct sc_url *url;
|
||||||
|
const char* f = "foo://user:password@example.com:1/over/there?x#3";
|
||||||
|
|
||||||
|
url = sc_url_create(f);
|
||||||
|
assert(url != NULL);
|
||||||
|
assert(strcmp(url->str, f) == 0);
|
||||||
|
assert(strcmp(url->scheme, "foo") == 0);
|
||||||
|
assert(strcmp(url->userinfo, "user:password") == 0);
|
||||||
|
assert(strcmp(url->host, "example.com") == 0);
|
||||||
|
assert(strcmp(url->port, "1") == 0);
|
||||||
|
assert(strcmp(url->path, "/over/there") == 0);
|
||||||
|
assert(strcmp(url->query, "x") == 0);
|
||||||
|
assert(strcmp(url->fragment, "3") == 0);
|
||||||
|
|
||||||
|
sc_url_destroy(url);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef SC_HAVE_WRAP
|
#ifdef SC_HAVE_WRAP
|
||||||
|
|
||||||
bool fail_malloc = false;
|
bool fail_malloc = false;
|
||||||
@ -255,6 +274,7 @@ int main(int argc, char *argv[])
|
|||||||
test9();
|
test9();
|
||||||
test10();
|
test10();
|
||||||
test11();
|
test11();
|
||||||
|
test12();
|
||||||
fail_test();
|
fail_test();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user