mirror of
https://github.com/cesanta/mongoose.git
synced 2024-11-27 20:59:00 +08:00
Commonize mg_str
PUBLISHED_FROM=0e6a1c1a2356c1e12580e498c64ba7be367f601c
This commit is contained in:
parent
29b3950ee7
commit
c907e6c5fb
@ -25,7 +25,6 @@ items:
|
||||
- { type: file, name: mg_set_timer.md }
|
||||
- { type: file, name: mg_time.md }
|
||||
- { type: file, name: mg_event_handler_t.md }
|
||||
- { type: file, name: struct_mg_str.md }
|
||||
- { type: file, name: struct_mg_mgr.md }
|
||||
- { type: file, name: struct_mg_connection.md }
|
||||
- { type: file, name: struct_mg_add_sock_opts.md }
|
||||
|
@ -1,13 +0,0 @@
|
||||
---
|
||||
title: "struct mg_str"
|
||||
decl_name: "struct mg_str"
|
||||
symbol_kind: "struct"
|
||||
signature: |
|
||||
struct mg_str {
|
||||
const char *p; /* Memory chunk pointer */
|
||||
size_t len; /* Memory chunk length */
|
||||
};
|
||||
---
|
||||
|
||||
Describes chunk of memory
|
||||
|
@ -1,10 +0,0 @@
|
||||
---
|
||||
title: "MG_MK_STR()"
|
||||
decl_name: "MG_MK_STR"
|
||||
symbol_kind: "func"
|
||||
signature: |
|
||||
#define MG_MK_STR(str_literal);
|
||||
---
|
||||
|
||||
Macro for initializing mg_str.
|
||||
|
@ -6,8 +6,6 @@ items:
|
||||
- { type: file, name: mg_skip.md }
|
||||
- { type: file, name: mg_ncasecmp.md }
|
||||
- { type: file, name: mg_casecmp.md }
|
||||
- { type: file, name: mg_vcmp.md }
|
||||
- { type: file, name: mg_vcasecmp.md }
|
||||
- { type: file, name: mg_base64_decode.md }
|
||||
- { type: file, name: mg_base64_encode.md }
|
||||
- { type: file, name: mg_stat.md }
|
||||
@ -23,8 +21,6 @@ items:
|
||||
- { type: file, name: mg_is_big_endian.md }
|
||||
- { type: file, name: mg_next_comma_list_entry.md }
|
||||
- { type: file, name: mg_match_prefix.md }
|
||||
- { type: file, name: mg_mk_str.md }
|
||||
- { type: file, name: MG_MK_STR.md }
|
||||
---
|
||||
|
||||
|
||||
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
title: "mg_mk_str()"
|
||||
decl_name: "mg_mk_str"
|
||||
symbol_kind: "func"
|
||||
signature: |
|
||||
struct mg_str mg_mk_str(const char *s);
|
||||
---
|
||||
|
||||
A helper function for creating mg_str struct from plain C string.
|
||||
`NULL` is allowed and becomes `{NULL, 0}`.
|
||||
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
title: "mg_vcasecmp()"
|
||||
decl_name: "mg_vcasecmp"
|
||||
symbol_kind: "func"
|
||||
signature: |
|
||||
int mg_vcasecmp(const struct mg_str *str2, const char *str1);
|
||||
---
|
||||
|
||||
Cross-platform version of `strncasecmp()` where first string is
|
||||
specified by `struct mg_str`.
|
||||
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
title: "mg_vcmp()"
|
||||
decl_name: "mg_vcmp"
|
||||
symbol_kind: "func"
|
||||
signature: |
|
||||
int mg_vcmp(const struct mg_str *str2, const char *str1);
|
||||
---
|
||||
|
||||
Cross-platform version of `strcmp()` where where first string is
|
||||
specified by `struct mg_str`.
|
||||
|
59
mongoose.c
59
mongoose.c
@ -954,6 +954,41 @@ void mbuf_remove(struct mbuf *mb, size_t n) {
|
||||
|
||||
#endif /* EXCLUDE_COMMON */
|
||||
#ifdef MG_MODULE_LINES
|
||||
#line 1 "./src/../../common/mg_str.c"
|
||||
#endif
|
||||
/*
|
||||
* Copyright (c) 2014-2016 Cesanta Software Limited
|
||||
* All rights reserved
|
||||
*/
|
||||
|
||||
/* Amalgamated: #include "common/mg_str.h" */
|
||||
|
||||
#include <string.h>
|
||||
|
||||
struct mg_str mg_mk_str(const char *s) {
|
||||
struct mg_str ret = {s, 0};
|
||||
if (s != NULL) ret.len = strlen(s);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int mg_vcmp(const struct mg_str *str1, const char *str2) {
|
||||
size_t n2 = strlen(str2), n1 = str1->len;
|
||||
int r = memcmp(str1->p, str2, (n1 < n2) ? n1 : n2);
|
||||
if (r == 0) {
|
||||
return n1 - n2;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
int mg_vcasecmp(const struct mg_str *str1, const char *str2) {
|
||||
size_t n2 = strlen(str2), n1 = str1->len;
|
||||
int r = mg_ncasecmp(str1->p, str2, (n1 < n2) ? n1 : n2);
|
||||
if (r == 0) {
|
||||
return n1 - n2;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
#ifdef MG_MODULE_LINES
|
||||
#line 1 "./src/../../common/sha1.c"
|
||||
#endif
|
||||
/* Copyright(c) By Steve Reid <steve@edmweb.com> */
|
||||
@ -7302,24 +7337,6 @@ int mg_casecmp(const char *s1, const char *s2) {
|
||||
return mg_ncasecmp(s1, s2, (size_t) ~0);
|
||||
}
|
||||
|
||||
int mg_vcasecmp(const struct mg_str *str1, const char *str2) {
|
||||
size_t n2 = strlen(str2), n1 = str1->len;
|
||||
int r = mg_ncasecmp(str1->p, str2, (n1 < n2) ? n1 : n2);
|
||||
if (r == 0) {
|
||||
return n1 - n2;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
int mg_vcmp(const struct mg_str *str1, const char *str2) {
|
||||
size_t n2 = strlen(str2), n1 = str1->len;
|
||||
int r = memcmp(str1->p, str2, (n1 < n2) ? n1 : n2);
|
||||
if (r == 0) {
|
||||
return n1 - n2;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
#ifndef MG_DISABLE_FILESYSTEM
|
||||
int mg_stat(const char *path, cs_stat_t *st) {
|
||||
#ifdef _WIN32
|
||||
@ -7641,12 +7658,6 @@ int mg_match_prefix(const char *pattern, int pattern_len, const char *str) {
|
||||
const struct mg_str pstr = {pattern, (size_t) pattern_len};
|
||||
return mg_match_prefix_n(pstr, mg_mk_str(str));
|
||||
}
|
||||
|
||||
struct mg_str mg_mk_str(const char *s) {
|
||||
struct mg_str ret = {s, 0};
|
||||
if (s != NULL) ret.len = strlen(s);
|
||||
return ret;
|
||||
}
|
||||
#ifdef MG_MODULE_LINES
|
||||
#line 1 "./src/mqtt.c"
|
||||
#endif
|
||||
|
75
mongoose.h
75
mongoose.h
@ -841,6 +841,53 @@ double cs_time();
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* CS_COMMON_CS_TIME_H_ */
|
||||
/*
|
||||
* Copyright (c) 2014-2016 Cesanta Software Limited
|
||||
* All rights reserved
|
||||
*/
|
||||
|
||||
#ifndef CS_COMMON_MG_STR_H_
|
||||
#define CS_COMMON_MG_STR_H_
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* Describes chunk of memory */
|
||||
struct mg_str {
|
||||
const char *p; /* Memory chunk pointer */
|
||||
size_t len; /* Memory chunk length */
|
||||
};
|
||||
|
||||
/*
|
||||
* A helper function for creating mg_str struct from plain C string.
|
||||
* `NULL` is allowed and becomes `{NULL, 0}`.
|
||||
*/
|
||||
struct mg_str mg_mk_str(const char *s);
|
||||
|
||||
/* Macro for initializing mg_str. */
|
||||
#define MG_MK_STR(str_literal) \
|
||||
{ str_literal, sizeof(str_literal) - 1 }
|
||||
|
||||
/*
|
||||
* Cross-platform version of `strcmp()` where where first string is
|
||||
* specified by `struct mg_str`.
|
||||
*/
|
||||
int mg_vcmp(const struct mg_str *str2, const char *str1);
|
||||
|
||||
/*
|
||||
* Cross-platform version of `strncasecmp()` where first string is
|
||||
* specified by `struct mg_str`.
|
||||
*/
|
||||
int mg_vcasecmp(const struct mg_str *str2, const char *str1);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* CS_COMMON_MG_STR_H_ */
|
||||
/*
|
||||
* Copyright (c) 2015 Cesanta Software Limited
|
||||
* All rights reserved
|
||||
@ -1140,12 +1187,6 @@ union socket_address {
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Describes chunk of memory */
|
||||
struct mg_str {
|
||||
const char *p; /* Memory chunk pointer */
|
||||
size_t len; /* Memory chunk length */
|
||||
};
|
||||
|
||||
struct mg_connection;
|
||||
|
||||
/*
|
||||
@ -1793,18 +1834,6 @@ int mg_ncasecmp(const char *s1, const char *s2, size_t len);
|
||||
*/
|
||||
int mg_casecmp(const char *s1, const char *s2);
|
||||
|
||||
/*
|
||||
* Cross-platform version of `strcmp()` where where first string is
|
||||
* specified by `struct mg_str`.
|
||||
*/
|
||||
int mg_vcmp(const struct mg_str *str2, const char *str1);
|
||||
|
||||
/*
|
||||
* Cross-platform version of `strncasecmp()` where first string is
|
||||
* specified by `struct mg_str`.
|
||||
*/
|
||||
int mg_vcasecmp(const struct mg_str *str2, const char *str1);
|
||||
|
||||
/*
|
||||
* Decode base64-encoded string `s`, `len` into the destination `dst`.
|
||||
* Destination has to have enough space to hold decoded buffer.
|
||||
@ -1963,16 +1992,6 @@ const char *mg_next_comma_list_entry(const char *list, struct mg_str *val,
|
||||
int mg_match_prefix(const char *pattern, int pattern_len, const char *str);
|
||||
int mg_match_prefix_n(const struct mg_str pattern, const struct mg_str str);
|
||||
|
||||
/*
|
||||
* A helper function for creating mg_str struct from plain C string.
|
||||
* `NULL` is allowed and becomes `{NULL, 0}`.
|
||||
*/
|
||||
struct mg_str mg_mk_str(const char *s);
|
||||
|
||||
/* Macro for initializing mg_str. */
|
||||
#define MG_MK_STR(str_literal) \
|
||||
{ str_literal, sizeof(str_literal) - 1 }
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
Loading…
Reference in New Issue
Block a user