{"schema":"libjg2-1",
"vpath":"/git/",
"avatar":"/git/avatar/",
"alang":"",
"gen_ut":1746420899,
"reponame":"libwebsockets",
"desc":"libwebsockets lightweight C networking library",
"owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://libwebsockets.org/repo/libwebsockets",
"f":3,
"items": [
{"schema":"libjg2-1",
"cid":"f8df258c2eb887fd10cc2d2a15ac02ec",
"commit": {"type":"commit",
"time": 1616666918,
"time_ofs": 0,
"oid_tree": { "oid": "2bdeee8dcf20cea5df7ec9e7aa62d7f4218bb94e", "alias": []},
"oid":{ "oid": "b5ed38395e2e0199ce6577d1e74e854d207e751f", "alias": []},
"msg": "use ctime_r instead of ctime if possible",
"sig_commit": { "git_time": { "time": 1616666918, "offset": 0 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },
"sig_author": { "git_time": { "time": 1616657585, "offset": 180 }, "name": "Pavel Otchertsov", "email": "pavel.otchertsov@gmail.com", "md5": "e1ac0b2881825960ee59b5922ab07ce7" }},
"body": "use ctime_r instead of ctime if possible\n"
,
"diff": "diff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 455a269..a45f92f 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -552,6 +552,7 @@ CHECK_FUNCTION_EXISTS(_atoi64 LWS_HAVE__ATOI64)\n CHECK_FUNCTION_EXISTS(_stat32i64 LWS_HAVE__STAT32I64)\n CHECK_FUNCTION_EXISTS(clock_gettime LWS_HAVE_CLOCK_GETTIME)\n CHECK_FUNCTION_EXISTS(localtime_r LWS_HAVE_LOCALTIME_R)\n+CHECK_FUNCTION_EXISTS(ctime_r LWS_HAVE_CTIME_R)\n CHECK_FUNCTION_EXISTS(getgrgid_r LWS_HAVE_GETGRGID_R)\n CHECK_FUNCTION_EXISTS(getgrnam_r LWS_HAVE_GETGRNAM_R)\n CHECK_FUNCTION_EXISTS(getpwuid_r LWS_HAVE_GETPWUID_R)\ndiff --git a/cmake/lws_config.h.in b/cmake/lws_config.h.in\nindex 04c8ceb..ff35308 100644\n--- a/cmake/lws_config.h.in\n+++ b/cmake/lws_config.h.in\n@@ -51,6 +51,7 @@\n #cmakedefine LWS_HAVE_EVP_PKEY_new_raw_private_key\n #cmakedefine LWS_HAVE_EXECVPE\n #cmakedefine LWS_HAVE_LOCALTIME_R\n+#cmakedefine LWS_HAVE_CTIME_R\n #cmakedefine LWS_HAVE_GETGRGID_R\n #cmakedefine LWS_HAVE_GETGRNAM_R\n #cmakedefine LWS_HAVE_GETPWUID_R\ndiff --git a/minimal-examples/http-client/minimal-http-client-certinfo/minimal-http-client-certinfo.c b/minimal-examples/http-client/minimal-http-client-certinfo/minimal-http-client-certinfo.c\nindex 2eb8968..ec9a9eb 100644\n--- a/minimal-examples/http-client/minimal-http-client-certinfo/minimal-http-client-certinfo.c\n+++ b/minimal-examples/http-client/minimal-http-client-certinfo/minimal-http-client-certinfo.c\n@@ -26,6 +26,9 @@ callback_http(struct lws *wsi, enum lws_callback_reasons reason,\n \tuint8_t buf[1280];\n \tunion lws_tls_cert_info_results *ci \u003d\n \t\t(union lws_tls_cert_info_results *)buf;\n+#if defined(LWS_HAVE_CTIME_R)\n+\tchar date[32];\n+#endif\n \n \tswitch (reason) {\n \n@@ -50,11 +53,22 @@ callback_http(struct lws *wsi, enum lws_callback_reasons reason,\n \n \t\tif (!lws_tls_peer_cert_info(wsi, LWS_TLS_CERT_INFO_VALIDITY_FROM,\n \t\t\t\t\t ci, 0))\n-\t\t\tlwsl_notice(\u0022 Peer Cert Valid from: %s\u0022, ctime(\u0026ci-\u003etime));\n-\n+#if defined(LWS_HAVE_CTIME_R)\n+\t\t\tlwsl_notice(\u0022 Peer Cert Valid from: %s\u0022, \n+\t\t\t\t\t\tctime_r(\u0026ci-\u003etime, date));\n+#else\n+\t\t\tlwsl_notice(\u0022 Peer Cert Valid from: %s\u0022, \n+\t\t\t\t\t\tctime(\u0026ci-\u003etime));\n+#endif\n \t\tif (!lws_tls_peer_cert_info(wsi, LWS_TLS_CERT_INFO_VALIDITY_TO,\n \t\t\t\t\t ci, 0))\n-\t\t\tlwsl_notice(\u0022 Peer Cert Valid to : %s\u0022, ctime(\u0026ci-\u003etime));\n+#if defined(LWS_HAVE_CTIME_R)\n+\t\t\tlwsl_notice(\u0022 Peer Cert Valid to : %s\u0022,\n+\t\t\t\t\t\tctime_r(\u0026ci-\u003etime, date));\n+#else\n+\t\t\tlwsl_notice(\u0022 Peer Cert Valid to : %s\u0022,\n+\t\t\t\t\t\tctime(\u0026ci-\u003etime));\n+#endif\n \t\tif (!lws_tls_peer_cert_info(wsi, LWS_TLS_CERT_INFO_USAGE,\n \t\t\t\t\t ci, 0))\n \t\t\tlwsl_notice(\u0022 Peer Cert usage bits: 0x%x\u005cn\u0022, ci-\u003eusage);\ndiff --git a/minimal-examples/http-server/minimal-http-server-dynamic/minimal-http-server-dynamic.c b/minimal-examples/http-server/minimal-http-server-dynamic/minimal-http-server-dynamic.c\nindex 9cf8ebe..2d5769e 100644\n--- a/minimal-examples/http-server/minimal-http-server-dynamic/minimal-http-server-dynamic.c\n+++ b/minimal-examples/http-server/minimal-http-server-dynamic/minimal-http-server-dynamic.c\n@@ -45,6 +45,9 @@ callback_dynamic_http(struct lws *wsi, enum lws_callback_reasons reason,\n \t\t*end \u003d \u0026buf[sizeof(buf) - LWS_PRE - 1];\n \ttime_t t;\n \tint n;\n+#if defined(LWS_HAVE_CTIME_R)\n+\tchar date[32];\n+#endif\n \n \tswitch (reason) {\n \tcase LWS_CALLBACK_HTTP:\n@@ -152,7 +155,12 @@ callback_dynamic_http(struct lws *wsi, enum lws_callback_reasons reason,\n \t\t\t\t\u0022\u003cimg src\u003d\u005c\u0022/libwebsockets.org-logo.svg\u005c\u0022\u003e\u0022\n \t\t\t\t\u0022\u003cbr\u003eDynamic content for '%s' from mountpoint.\u0022\n \t\t\t\t\u0022\u003cbr\u003eTime: %s\u003cbr\u003e\u003cbr\u003e\u0022\n-\t\t\t\t\u0022\u003c/body\u003e\u003c/html\u003e\u0022, pss-\u003epath, ctime(\u0026t));\n+\t\t\t\t\u0022\u003c/body\u003e\u003c/html\u003e\u0022, pss-\u003epath,\n+#if defined(LWS_HAVE_CTIME_R)\n+\t\t\t\tctime_r(\u0026t, date));\n+#else\n+\t\t\t\tctime(\u0026t));\n+#endif\n \t\t} else {\n \t\t\t/*\n \t\t\t * after the first time, we create bulk content.\ndiff --git a/test-apps/test-client.c b/test-apps/test-client.c\nindex 1115c88..2c3e97c 100644\n--- a/test-apps/test-client.c\n+++ b/test-apps/test-client.c\n@@ -120,6 +120,9 @@ callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason,\n {\n #if defined(LWS_WITH_TLS)\n \tunion lws_tls_cert_info_results ci;\n+#if defined(LWS_HAVE_CTIME_R) \u0026\u0026 !defined(LWS_WITH_NO_LOGS)\n+\tchar date[32];\n+#endif\n #endif\n \tconst char *which \u003d \u0022http\u0022;\n \tchar which_wsi[10], buf[50 + LWS_PRE];\n@@ -190,11 +193,22 @@ callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason,\n \n \t\tif (!lws_tls_peer_cert_info(wsi, LWS_TLS_CERT_INFO_VALIDITY_FROM,\n \t\t\t\t\t \u0026ci, 0))\n-\t\t\tlwsl_notice(\u0022 Peer Cert Valid from: %s\u0022, ctime(\u0026ci.time));\n-\n+#if defined(LWS_HAVE_CTIME_R)\n+\t\t\tlwsl_notice(\u0022 Peer Cert Valid from: %s\u0022,\n+\t\t\t\t\t\tctime_r(\u0026ci.time, date));\n+#else\n+\t\t\tlwsl_notice(\u0022 Peer Cert Valid from: %s\u0022,\n+\t\t\t\t\t\tctime(\u0026ci.time));\n+#endif\n \t\tif (!lws_tls_peer_cert_info(wsi, LWS_TLS_CERT_INFO_VALIDITY_TO,\n \t\t\t\t\t \u0026ci, 0))\n-\t\t\tlwsl_notice(\u0022 Peer Cert Valid to : %s\u0022, ctime(\u0026ci.time));\n+#if defined(LWS_HAVE_CTIME_R)\n+\t\t\tlwsl_notice(\u0022 Peer Cert Valid to : %s\u0022,\n+\t\t\t\t\t\tctime_r(\u0026ci.time, date));\n+#else\n+\t\t\tlwsl_notice(\u0022 Peer Cert Valid to : %s\u0022,\n+\t\t\t\t\t\tctime(\u0026ci.time));\n+#endif\n \t\tif (!lws_tls_peer_cert_info(wsi, LWS_TLS_CERT_INFO_USAGE,\n \t\t\t\t\t \u0026ci, 0))\n \t\t\tlwsl_notice(\u0022 Peer Cert usage bits: 0x%x\u005cn\u0022, ci.usage);\n","s":{"c":1746420899,"u": 3771}}
],"g": 4902,"chitpc": 0,"ehitpc": 0,"indexed":0
,
"ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}