aboutsummaryrefslogtreecommitdiff
path: root/src/cookie.c
diff options
context:
space:
mode:
authorAleksey Veresov <aleksey@veresov.pro>2019-11-13 19:16:21 +0300
committerAleksey Veresov <aleksey@veresov.pro>2019-11-13 19:16:21 +0300
commit23f3f8592c21ee58b0ac040736b5b766d52de193 (patch)
tree43e41480fab64d68274340f8fd934bd20c5f27b2 /src/cookie.c
parentb11b1c52280f172ebfa42c3da906ea9aa3ea8799 (diff)
downloadmagi-23f3f8592c21ee58b0ac040736b5b766d52de193.tar
magi-23f3f8592c21ee58b0ac040736b5b766d52de193.tar.xz
magi-23f3f8592c21ee58b0ac040736b5b766d52de193.zip
Cosmetical changes.
Diffstat (limited to 'src/cookie.c')
-rw-r--r--src/cookie.c147
1 files changed, 78 insertions, 69 deletions
diff --git a/src/cookie.c b/src/cookie.c
index 4e757e6..8926d40 100644
--- a/src/cookie.c
+++ b/src/cookie.c
@@ -18,27 +18,21 @@ enum st {
st_post_data
};
-enum data_type {
- dt_plain = 0,
- dt_version,
- dt_path,
- dt_domain,
- dt_port
-};
+enum data_type { dt_plain = 0, dt_version, dt_path, dt_domain, dt_port };
struct automata {
- struct magi_cookie_list **list;
- struct magi_cookie cookie;
- char *buf;
- int buf_len;
- int buf_size;
- int is_first;
- int is_cookie2;
- int is_quoted;
- enum data_type data_t;
+ struct magi_cookie_list ** list;
+ struct magi_cookie cookie;
+ char * buf;
+ int buf_len;
+ int buf_size;
+ int is_first;
+ int is_cookie2;
+ int is_quoted;
+ enum data_type data_t;
};
-static void nulify_cookie(struct automata *a)
+static void nulify_cookie(struct automata * a)
{
a->cookie.name = 0;
a->cookie.data = 0;
@@ -47,24 +41,24 @@ static void nulify_cookie(struct automata *a)
a->cookie.port = 0;
}
-static void buf_new(struct automata *a)
+static void buf_new(struct automata * a)
{
a->buf = 0;
a->buf_len = 0;
a->buf_size = 1;
}
-static int buf_add(struct automata *a, char c)
+static int buf_add(struct automata * a, char c)
{
int ok = 1;
if (a->buf_len == a->buf_size - 1) {
a->buf_size *= 2;
- a->buf = realloc(a->buf, a->buf_size);
+ a->buf = realloc(a->buf, a->buf_size);
}
if (a->buf) {
a->buf_len++;
a->buf[a->buf_len - 1] = c;
- a->buf[a->buf_len] = 0;
+ a->buf[a->buf_len] = 0;
} else {
ok = 0;
magi_log("[cookie] Cannot allocate automata buffer.");
@@ -72,7 +66,7 @@ static int buf_add(struct automata *a, char c)
return ok;
}
-static enum data_type what_is_name(const struct automata *a)
+static enum data_type what_is_name(const struct automata * a)
{
enum data_type data_t = dt_plain;
if (a->is_first && !strcmp(a->buf, "$Version")) {
@@ -89,7 +83,7 @@ static enum data_type what_is_name(const struct automata *a)
return data_t;
}
-static int end_name(struct automata *a)
+static int end_name(struct automata * a)
{
int ok = 1;
a->data_t = what_is_name(a);
@@ -106,14 +100,22 @@ static int end_name(struct automata *a)
return ok;
}
-static int end_data(struct automata *a)
+static int end_data(struct automata * a)
{
int ok = 1;
switch (a->data_t) {
- case dt_plain: a->cookie.data = a->buf; break;
- case dt_path: a->cookie.path = a->buf; break;
- case dt_domain: a->cookie.domain = a->buf; break;
- case dt_port: a->cookie.port = a->buf; break;
+ case dt_plain:
+ a->cookie.data = a->buf;
+ break;
+ case dt_path:
+ a->cookie.path = a->buf;
+ break;
+ case dt_domain:
+ a->cookie.domain = a->buf;
+ break;
+ case dt_port:
+ a->cookie.port = a->buf;
+ break;
case dt_version:
if (strcmp(a->buf, "1")) {
ok = 0;
@@ -124,7 +126,7 @@ static int end_data(struct automata *a)
return ok;
}
-static enum st parse_pre_name(struct automata *a, char c)
+static enum st parse_pre_name(struct automata * a, char c)
{
enum st state;
if (c == ' ' || c == '\t') {
@@ -141,7 +143,7 @@ static enum st parse_pre_name(struct automata *a, char c)
return state;
}
-static enum st parse_name(struct automata *a, char c)
+static enum st parse_name(struct automata * a, char c)
{
enum st state;
if (c == '=') {
@@ -166,7 +168,7 @@ static enum st parse_name(struct automata *a, char c)
return state;
}
-static enum st parse_post_name(struct automata *a, char c)
+static enum st parse_post_name(struct automata * a, char c)
{
enum st state;
if (c == '=') {
@@ -175,21 +177,20 @@ static enum st parse_post_name(struct automata *a, char c)
state = st_post_name;
} else {
state = st_error;
- magi_log(
- "[cookie] Waiting for name-value separator, "
- "readed: \\%o (render: %c).", c, c
- );
+ magi_log("[cookie] Waiting for name-value separator, "
+ "readed: \\%o (render: %c).",
+ c, c);
}
return state;
}
-static enum st parse_pre_data(struct automata *a, char c)
+static enum st parse_pre_data(struct automata * a, char c)
{
enum st state;
if (c == ' ' || c == '\t') {
state = st_pre_data;
} else if (c == '"') {
- state = st_data;
+ state = st_data;
a->is_quoted = 1;
} else if (32 <= c && c <= 126 && !strchr("()<>@,;:\\\"/[]?={}", c)) {
state = st_data;
@@ -203,7 +204,7 @@ static enum st parse_pre_data(struct automata *a, char c)
return state;
}
-static enum st parse_not_quoted_data(struct automata *a, char c)
+static enum st parse_not_quoted_data(struct automata * a, char c)
{
enum st state;
if (c == ';' || (c == ',' && a->is_first)) {
@@ -218,21 +219,20 @@ static enum st parse_not_quoted_data(struct automata *a, char c)
state = st_error;
}
} else if (32 <= c && c <= 126 && !strchr("()<>@,;:\\\"/[]?={}", c)) {
- state = st_data;
+ state = st_data;
if (!buf_add(a, c)) {
state = st_error;
}
} else {
state = st_error;
- magi_log(
- "[cookie] Reading not-quoted value, "
- "readed: \\%o (render: %c).", c, c
- );
+ magi_log("[cookie] Reading not-quoted value, "
+ "readed: \\%o (render: %c).",
+ c, c);
}
return state;
}
-static enum st parse_data(struct automata *a, char c)
+static enum st parse_data(struct automata * a, char c)
{
enum st state;
if (a->is_quoted) {
@@ -251,7 +251,7 @@ static enum st parse_data(struct automata *a, char c)
return state;
}
-static enum st parse_post_data(struct automata *a, char c)
+static enum st parse_post_data(struct automata * a, char c)
{
enum st state;
if (c == ';' || (c == ',' && a->is_first)) {
@@ -260,15 +260,14 @@ static enum st parse_post_data(struct automata *a, char c)
state = st_post_data;
} else {
state = st_error;
- magi_log(
- "[cookie] Waiting for separator between name-value pairs, "
- "readed: \\%o (render: %c).", c, c
- );
+ magi_log("[cookie] Waiting for separator between name-value pairs, "
+ "readed: \\%o (render: %c).",
+ c, c);
}
return state;
}
-static int parse_end(struct automata *a, enum st s)
+static int parse_end(struct automata * a, enum st s)
{
int ok = 0;
if (s == st_post_data) {
@@ -299,21 +298,33 @@ static int parse_end(struct automata *a, enum st s)
return ok;
}
-int magi_parse_cookie(struct magi_cookie_list **list, const char *input)
+int magi_parse_cookie(struct magi_cookie_list ** list, const char * input)
{
- struct automata a = { 0, { 0, 0, 0, 0, 0}, 0, 0, 1, 1, 0, 0, 0 };
+ struct automata a = { 0, { 0, 0, 0, 0, 0 }, 0, 0, 1, 1, 0, 0, 0 };
enum st state = st_pre_name;
- a.list = list;
+ a.list = list;
while (*input && state) {
char c = *input++;
switch (state) {
- case st_pre_name: state = parse_pre_name(&a, c); break;
- case st_name: state = parse_name(&a, c); break;
- case st_post_name: state = parse_post_name(&a, c); break;
- case st_pre_data: state = parse_pre_data(&a, c); break;
- case st_data: state = parse_data(&a, c); break;
- case st_post_data: state = parse_post_data(&a, c);
- default: break;
+ case st_pre_name:
+ state = parse_pre_name(&a, c);
+ break;
+ case st_name:
+ state = parse_name(&a, c);
+ break;
+ case st_post_name:
+ state = parse_post_name(&a, c);
+ break;
+ case st_pre_data:
+ state = parse_pre_data(&a, c);
+ break;
+ case st_data:
+ state = parse_data(&a, c);
+ break;
+ case st_post_data:
+ state = parse_post_data(&a, c);
+ default:
+ break;
}
}
return parse_end(&a, state);
@@ -324,13 +335,11 @@ int magi_parse_cookie(struct magi_cookie_list **list, const char *input)
* Cookie List
*/
int magi_cookie_list_add(
- struct magi_cookie_list **list,
- struct magi_cookie *item
-)
+ struct magi_cookie_list ** list, struct magi_cookie * item)
{
- struct magi_cookie_list *old = *list;
- int ok = 1;
- *list = malloc(sizeof(**list));
+ struct magi_cookie_list * old = *list;
+ int ok = 1;
+ *list = malloc(sizeof(**list));
if (*list) {
(*list)->next = old;
(*list)->item = *item;
@@ -342,9 +351,9 @@ int magi_cookie_list_add(
return ok;
}
-char *magi_cookie_list_get(struct magi_cookie_list *list, const char *name)
+char * magi_cookie_list_get(struct magi_cookie_list * list, const char * name)
{
- char *data = 0;
+ char * data = 0;
if (list && name) {
if (!strcmp(list->item.name, name)) {
data = list->item.data;
@@ -355,7 +364,7 @@ char *magi_cookie_list_get(struct magi_cookie_list *list, const char *name)
return data;
}
-void magi_cookie_list_destroy(struct magi_cookie_list *list)
+void magi_cookie_list_destroy(struct magi_cookie_list * list)
{
if (list) {
magi_cookie_list_destroy(list->next);