From 3f064f651c7148f40fb1a0b7348e807d404d595a Mon Sep 17 00:00:00 2001 From: Jeffrey Hsu Date: Mon, 9 Sep 2024 14:03:15 +0800 Subject: [PATCH] bind timestamp with enc --- main.c | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/main.c b/main.c index 61927b5..6549ae9 100644 --- a/main.c +++ b/main.c @@ -32,10 +32,16 @@ struct memory size_t size; }; +struct enc +{ + char *enc; + long long timestamp; +}; + CURLcode curl_get(const char *, struct memory *); long long current_timestamp(); size_t cb(char *, size_t, size_t, void *); -char *get_enc(); +struct enc get_enc(); void parise(void *); void exit_handler(); @@ -135,26 +141,29 @@ size_t cb(char *data, size_t size, size_t nmemb, void *clientp) return realsize; } -char *get_enc() +struct enc get_enc() { char url[200]; - char *ret = NULL; + struct enc ret = {0}; struct memory data = {0}; - const cJSON *enc = NULL; + const cJSON *json = NULL; + cJSON *data_json = NULL; - REGEN_ENC_URL_F(url, current_timestamp()); + ret.timestamp = current_timestamp(); + + REGEN_ENC_URL_F(url, ret.timestamp); if (curl_get(url, &data) != CURLE_OK) - return NULL; + return ret; DPRINT("%s\n", data.response); - cJSON *data_json = cJSON_Parse(data.response); - enc = cJSON_GetObjectItemCaseSensitive(data_json, "enc"); + data_json = cJSON_Parse(data.response); + json = cJSON_GetObjectItemCaseSensitive(data_json, "enc"); - const size_t s = strlen(enc->valuestring); - ret = malloc(s + 1); - memcpy(ret, enc->valuestring, s + 1); + const size_t s = strlen(json->valuestring); + ret.enc = malloc(s + 1); + memcpy(ret.enc, json->valuestring, s + 1); free(data.response); cJSON_Delete(data_json); @@ -170,17 +179,17 @@ void parise(void *arg) { char url[200]; struct memory json_c = {0}; - const char *enc = NULL; + struct enc enc; const cJSON *result = NULL; const cJSON *msg = NULL; const cJSON *data = NULL; const cJSON *errorMsg = NULL; cJSON *json = NULL; - if ((enc = get_enc()) == NULL) + if ((enc = get_enc()).enc == NULL) continue; - REGEN_URL_F(url, enc, current_timestamp()); + REGEN_URL_F(url, enc.enc, enc.timestamp); curl_get(url, &json_c); json = cJSON_Parse(json_c.response); @@ -192,15 +201,15 @@ void parise(void *arg) if (result->valueint == 1) printf("\rT%d\t%s\t%d", idx, msg->valuestring, data->valueint); else - printf("\rT%d\t%s", idx, errorMsg->valuestring); + fprintf(stderr, "\rT%d\t%s", idx, errorMsg->valuestring); fflush(stdout); - free((void *)enc); + free(enc.enc); free(json_c.response); - cJSON_Delete(json); } - fprintf(stderr, "\rSignal Received: exit. T%d exiting\n", idx); + + printf("\rSignal Received: exit. T%d exiting\n", idx); } void exit_handler()