strparse: switch the API to work on 'const char *'

The functions are not meant to touch the input anyway.

Closes #16316
This commit is contained in:
Daniel Stenberg 2025-02-13 09:00:08 +01:00
parent c1341813bd
commit 92611f2a56
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
8 changed files with 43 additions and 41 deletions

View file

@ -149,7 +149,7 @@ static struct altsvc *altsvc_create(struct Curl_str *srchost,
}
/* only returns SERIOUS errors */
static CURLcode altsvc_add(struct altsvcinfo *asi, char *line)
static CURLcode altsvc_add(struct altsvcinfo *asi, const char *line)
{
/* Example line:
h2 example.com 443 h3 shiny.example.com 8443 "20191231 10:00:00" 1

View file

@ -87,7 +87,7 @@
#if !defined(CURL_DISABLE_ALTSVC) || defined(USE_HTTPSRR)
enum alpnid Curl_alpn2alpnid(char *name, size_t len)
enum alpnid Curl_alpn2alpnid(const char *name, size_t len)
{
if(len == 2) {
if(strncasecompare(name, "h1", 2))

View file

@ -32,7 +32,7 @@
struct Curl_dns_entry;
struct ip_quadruple;
enum alpnid Curl_alpn2alpnid(char *name, size_t len);
enum alpnid Curl_alpn2alpnid(const char *name, size_t len);
/* generic function that returns how much time there is left to run, according
to the timeouts set */

View file

@ -416,7 +416,7 @@ skipsave:
}
/* only returns SERIOUS errors */
static CURLcode hsts_add(struct hsts *h, char *line)
static CURLcode hsts_add(struct hsts *h, const char *line)
{
/* Example lines:
example.com "20191231 10:00:00"

View file

@ -390,7 +390,8 @@ static CURLcode calc_payload_hash(struct Curl_easy *data,
#define S3_UNSIGNED_PAYLOAD "UNSIGNED-PAYLOAD"
static CURLcode calc_s3_payload_hash(struct Curl_easy *data,
Curl_HttpReq httpreq, char *provider1,
Curl_HttpReq httpreq,
const char *provider1,
size_t plen,
unsigned char *sha_hash,
char *sha_hex, char *header)
@ -576,7 +577,7 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
CURLcode result = CURLE_OUT_OF_MEMORY;
struct connectdata *conn = data->conn;
size_t len;
char *line;
const char *line;
struct Curl_str provider0;
struct Curl_str provider1;
struct Curl_str region = { NULL, 0};

View file

@ -26,10 +26,10 @@
/* Get a word until the first DELIM or end of string. At least one byte long.
return non-zero on error */
int Curl_str_until(char **linep, struct Curl_str *out,
int Curl_str_until(const char **linep, struct Curl_str *out,
const size_t max, char delim)
{
char *s = *linep;
const char *s = *linep;
size_t len = 0;
DEBUGASSERT(linep && *linep && out && max && delim);
@ -51,7 +51,7 @@ int Curl_str_until(char **linep, struct Curl_str *out,
/* Get a word until the first space or end of string. At least one byte long.
return non-zero on error */
int Curl_str_word(char **linep, struct Curl_str *out,
int Curl_str_word(const char **linep, struct Curl_str *out,
const size_t max)
{
return Curl_str_until(linep, out, max, ' ');
@ -60,10 +60,10 @@ int Curl_str_word(char **linep, struct Curl_str *out,
/* Get a "quoted" word. No escaping possible.
return non-zero on error */
int Curl_str_quotedword(char **linep, struct Curl_str *out,
int Curl_str_quotedword(const char **linep, struct Curl_str *out,
const size_t max)
{
char *s = *linep;
const char *s = *linep;
size_t len = 0;
DEBUGASSERT(linep && *linep && out && max);
@ -87,7 +87,7 @@ int Curl_str_quotedword(char **linep, struct Curl_str *out,
/* Advance over a single character.
return non-zero on error */
int Curl_str_single(char **linep, char byte)
int Curl_str_single(const char **linep, char byte)
{
DEBUGASSERT(linep && *linep);
if(**linep != byte)
@ -98,14 +98,14 @@ int Curl_str_single(char **linep, char byte)
/* Advance over a single space.
return non-zero on error */
int Curl_str_singlespace(char **linep)
int Curl_str_singlespace(const char **linep)
{
return Curl_str_single(linep, ' ');
}
/* Get an unsigned number. Leading zeroes are accepted.
return non-zero on error */
int Curl_str_number(char **linep, size_t *nump, size_t max)
int Curl_str_number(const char **linep, size_t *nump, size_t max)
{
size_t num = 0;
DEBUGASSERT(linep && *linep && nump);
@ -125,7 +125,7 @@ int Curl_str_number(char **linep, size_t *nump, size_t max)
/* CR or LF
return non-zero on error */
int Curl_str_newline(char **linep)
int Curl_str_newline(const char **linep)
{
DEBUGASSERT(linep && *linep);
if(ISNEWLINE(**linep)) {

View file

@ -35,37 +35,38 @@
#define STRE_OVERFLOW 7
struct Curl_str {
char *str;
const char *str;
size_t len;
};
/* Get a word until the first space
return non-zero on error */
int Curl_str_word(char **linep, struct Curl_str *out, const size_t max);
int Curl_str_word(const char **linep, struct Curl_str *out, const size_t max);
/* Get a word until the first DELIM or end of string
return non-zero on error */
int Curl_str_until(char **linep, struct Curl_str *out, const size_t max,
int Curl_str_until(const char **linep, struct Curl_str *out, const size_t max,
char delim);
/* Get a "quoted" word. No escaping possible.
return non-zero on error */
int Curl_str_quotedword(char **linep, struct Curl_str *out, const size_t max);
int Curl_str_quotedword(const char **linep, struct Curl_str *out,
const size_t max);
/* Advance over a single character.
return non-zero on error */
int Curl_str_single(char **linep, char byte);
int Curl_str_single(const char **linep, char byte);
/* Advance over a single space.
return non-zero on error */
int Curl_str_singlespace(char **linep);
int Curl_str_singlespace(const char **linep);
/* Get an unsigned number
return non-zero on error */
int Curl_str_number(char **linep, size_t *nump, size_t max);
int Curl_str_number(const char **linep, size_t *nump, size_t max);
/* Check for CR or LF
return non-zero on error */
int Curl_str_newline(char **linep);
int Curl_str_newline(const char **linep);
#endif /* HEADER_CURL_STRPARSE_H */