From 698c4f58483249f3c4b01e8cf3170110f56910f2 Mon Sep 17 00:00:00 2001 From: JinmingHu Date: Thu, 13 Aug 2020 08:17:27 +0800 Subject: [PATCH] Replace old RFC1123 impl which cannot be built until GCC 5 (#440) --- .../src/common/common_headers_request_policy.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sdk/storage/src/common/common_headers_request_policy.cpp b/sdk/storage/src/common/common_headers_request_policy.cpp index 45a923717..876affeb1 100644 --- a/sdk/storage/src/common/common_headers_request_policy.cpp +++ b/sdk/storage/src/common/common_headers_request_policy.cpp @@ -4,8 +4,6 @@ #include "common/common_headers_request_policy.hpp" #include -#include -#include namespace Azure { namespace Storage { @@ -29,10 +27,16 @@ namespace Azure { namespace Storage { #else gmtime_r(&t, &ct); #endif - std::stringstream dateString; - dateString.imbue(std::locale("C")); - dateString << std::put_time(&ct, "%a, %d %b %Y %H:%M:%S GMT"); - request.AddHeader(c_HttpHeaderXMsDate, dateString.str()); + static const char* weekdays[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; + static const char* months[] + = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; + std::string rfc1123Format = "%a, %d %b %Y %H:%M:%S GMT"; + rfc1123Format.replace(rfc1123Format.find("%a"), 2, weekdays[ct.tm_wday]); + rfc1123Format.replace(rfc1123Format.find("%b"), 2, months[ct.tm_mon]); + char datetimeStr[32]; + std::strftime(datetimeStr, sizeof(datetimeStr), rfc1123Format.data(), &ct); + + request.AddHeader(c_HttpHeaderXMsDate, datetimeStr); } return nextHttpPolicy.Send(ctx, request);