From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic302-3.consmr.mail.bf2.yahoo.com (sonic302-3.consmr.mail.bf2.yahoo.com [74.6.135.42]) by sourceware.org (Postfix) with ESMTPS id 342B53857814 for ; Sat, 14 Nov 2020 23:04:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 342B53857814 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1605395051; bh=EqyY96DGh6sevFlBRMjWvavSQRBWwC3hc+O/flQuc7Q=; h=From:To:Subject:Date:From:Subject; b=B/ynCBbHLToRMKk7pfiVQ9i0nncow2qsVpYEVV1eyjfBKTOgXyKdSHfoZImIkLx2nbV/wLFlOXMo++yu5HJH9rix2R1t+tqGUIf7HK1u/qY8fz26WNNpnDbt7IJq/uSmZgi7Qml9pDUndn0p3bErYTYclF1PqB61PWrnOMHgaMLbCxSDMe7SsfRRVvFqbB8cKV3a/qw8j6piPpwB+jLj8+ERT55xR9riSuRYnvoOij8FVtN3d7cRApb9h+UYOLkbw6O0iJUIkhYNzBSy8H6Yn1ESCu90FNN5htc//m/Il3T/SdAjedzyupGEyZxNNfqfIUsxjzddcLG/FNnXUBj+nQ== X-YMail-OSG: 2nIjZl0VM1lQEZamuHHPEc97GETSiCkLfFGuZyF5yiGfJS6hoONuB3qJCn6kEuf 7SQY0VEmmElyTWy9uNbgAZaLXQgTpAPVCANSv89ZRQuiGk3JyuFcp7OQJkE.O6ksN5GfIuMcxXPF zbzeaqLmWZQHcgpC8tFlXTosUhr.StV_wJpd_9Tv8GR5usAT8Ul1ZhQj_638E7Z09NEvzdNf_ONf szn2wyigTxa6fQ61P_H9SY.6_U6P2d2hpJ3kefmoeKNksEi_ncGziDOY_IwN65aIyk1pqkvrn2Vj wVKqlsyZGalJafmQHdVuYYlodQ5Rr9FW2AygSvvvwdZSsZ0E4J0vZh9My3at4xGzQWNUHecUrkPa cl6VqNxK5siGfEEegmjGDTzHl.35FvaT5UCAk43rzUEwoB1EJM_6z9scAAdb_w2L_8icR.jjMKZE 7dlVg5WjmdSmSYYbuvTCrUvWovjgXpophs3OCwY2xEW2VVDB559wI7kqXUV2kUB_ioFZ1H3UoV69 AdcBb.byra0YuqNulzfutSb9lwI06iV1Yvy_p650xdCqKWzGqhfBSOmaio94QhYkiTIM6Z_1gMm9 R5cMYIIKuTcvc0bWmGm6hq3KHH9UcZiF0aj7t6gOq.8aVOEFKL6ZEqf5T3TYDN3Jq4xoUxbyFNiv soqdjL9atsZGzqd7niT5.xs1FEuNFUK8R4i98UhAiuP2.qgERjBQC7coND70rGn.SaHr1Qh3mcF. XmG53FSyA7IoeRXq6ndMdjsQFWqAJ3sBj3K5VsKxqWxEoCy2p1VxdJZr1YLNrofTYi8V2.65J2nD nj5ADoY9hiknbwBZfy0VyTQU5eGixqpfjbH_FC6KIIpv9O..yIa9OUhOELZ2u.SqJELkr9PsafcP ZJ0CWdsqxckbboPoQcskeXnWa60d_LIwtaZ2siUchtD1YLX747c7iNhF97zHsKz80OpEDEaDqdOC Um4dxl7R8S5FPowrsvVYCAkVpPEBVpcD3.g8gJnMcqmdWfzE0SJ3hypgnv_F5C3dE5BJNwKhS4FE QsSw9NNoskF9QQB9EeE9yqb9WAUEGmshLfcwhGAOBLp.9XJ.aNg7CaJWifObL7ArR4N1iizRtAGt a00zSxYNlOvFJiKz.yT2DRI2IeB29nih0egvcSIsH0y0qH5VXWBtJqQVrZ4Xp6qV1bB.PIUsm4Ir CTfqgB6H5BEdtowf5AmjtSlR3dqRTNG3MnIFm3CLlFNDfxxHYMtXPmtWVJrXdKbh6e9aDwHYGCVf GoI5eqzP2bxVXlcCz7zD.av5rla3vlUXh6YSNO9FZ3oBhBlGpJ9VM3ZQ8KlOKhF6OJVmYnY7Acoc hYhGV5nlBAZrnTG_Mw.Mrbp8ofwPCSn_n_JuY2hQoqcJgXiCrvS0Efgsqup6yrychiiCnw0D772e f68fMsl.WBdZGkMJOA5UIcn6rEmNKfy_2obIJFTkoJYQ7gpsgiE6P4WfgpB65ZlIlZW1ASum2OMZ 8mYw50D8GIZObeFXFphlL0E7nmynVQ7enH5CbF9xf1vKMon0zBrGit0jyxpm2V.1gIWe7pLCspC. DqAjoItiz0nXR1LCFkYByVXXFfSXYHb9MR6Bf158Sa0B_W7lFUX219_2oHeiXyOyX9e5rlVWtyt2 6M4LlWnRRtXJJmBuYGsIGnGzLnkBzvk8WpPPiMwsq1KKUcPXcqSMeS.svtgvMmjSRAk8Q0ONt5xj xtr2sMPRpBIZrWA0Bj3Ss8MxzdI7GsRvkjrxrSr3XFd4o_s0_qoF9TMkl3qim1cxV.0kZ4NTdKX7 vEOLX26WyZi6ukNRRWE3RwE2kvPGp6s1QbZymvyat4m7ZrxfJzaeq9w5.Rp1ZFedVrwHHt1tZQA5 gy_mCwzTlwR9Y0O3ROYEcTysWIu41ZXkQ7QvaNbS2WlcVR1HUU_CIqL82ewP8wVBQAEIgXoPK5BV _4SZqS3Tz2cTo1jPWZRU5zvODKeDkJST_iVP6uOR7_cVzuitrFdBOaI4KMh9ZzweBFl2OB_p4R97 XLYzMzPID3J68HKiGyRpN0YgsomaQh3K20K46BsaADu3anp2KLq1cPM0EB6EXrqf090aWBHyyu_5 KjQw3b6neM.rqDWV.lsHch0IjT.WB1ZxhZ_XYTrUdX_zG6m0n9BFuiGQ2jZ9EdSjhnSvM0FHq3cq 8nUJ5Hjskbb0KPiCrZF4BqYNHCUCXqrA5WS51nSDtaFV0KHO8ihe8yWmfsp4Jx_NC3OqzmZ.2.vx L8toiQS8B9Glg5y5r7_NU661_6iZD4kSArVTm1fDfp8CNwaCRzp0Ji.iSw7V2iVCHW0n703n03MS TZHaIFtKGQHp7Rj.UETdwVY1CQ9zAJTyIEpw_4EU1qidh5Bc.e8PIe.pqvfrQQg-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.bf2.yahoo.com with HTTP; Sat, 14 Nov 2020 23:04:11 +0000 Received: by smtp409.mail.ne1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID f236dbd3c20af9b456d4a668394ada58; Sat, 14 Nov 2020 23:04:07 +0000 (UTC) From: To: Subject: [PATCH] Add support for TZ names with <> in tzset Date: Sat, 14 Nov 2020 15:03:52 -0800 Message-ID: <080401d6bada$6c52f060$44f8d120$@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 16.0 Thread-Index: Ada62e+UcPX98q45RsGQEouotLibmQ== Content-Language: en-us References: <080401d6bada$6c52f060$44f8d120$.ref@yahoo.com> X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Nov 2020 23:04:13 -0000 Howdy all, Attached is a patch which extends the tzset() function to support a format for "unnamed" TZ environment timezones which use "<+/-nn>" as the timezone name instead of an alphabetic name. These are supported in glibc and are present in several major TZ databases that we use on the ESP8266 Arduino core. For example, > #define TZ_Africa_Casablanca "<+01>-1" The existing tzset sscanf format string breaks at the first "+", assuming it's the beginning of the offset. This patch special-cases names beginning with "<" to circumvent the issue. Signed-off-by: Earle F. Philhower, III --- newlib/libc/time/tzset_r.c | 46 ++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/newlib/libc/time/tzset_r.c b/newlib/libc/time/tzset_r.c index 9e0cf834b..5b8b692ee 100644 --- a/newlib/libc/time/tzset_r.c +++ b/newlib/libc/time/tzset_r.c @@ -45,8 +45,19 @@ _tzset_unlocked_r (struct _reent *reent_ptr) if (*tzenv == ':') ++tzenv; - if (sscanf (tzenv, "%10[^0-9,+-]%n", __tzname_std, &n) <= 0) - return; + if (tzenv[0] == '<') + { + /* This is of the form "<[+-]nn>" so needs a different parsing */ + if (sscanf (tzenv, "%9[^>]>%n", __tzname_std, &n) <= 0) + return; + /* Include the final > */ + strcat (__tzname_std, ">"); + } + else + { + if (sscanf (tzenv, "%10[^0-9,+-]%n", __tzname_std, &n) <= 0) + return; + } tzenv += n; @@ -69,15 +80,32 @@ _tzset_unlocked_r (struct _reent *reent_ptr) _tzname[0] = __tzname_std; tzenv += n; - if (sscanf (tzenv, "%10[^0-9,+-]%n", __tzname_dst, &n) <= 0) - { /* No dst */ - _tzname[1] = _tzname[0]; - _timezone = tz->__tzrule[0].offset; - _daylight = 0; - return; + if (tzenv[0] == '<') + { + /* This is of the form "<[+-]nn>" so needs a different parsing */ + if (sscanf (tzenv, "%9[^>]>%n", __tzname_dst, &n) <= 0) + { /* No dst */ + _tzname[1] = _tzname[0]; + _timezone = tz->__tzrule[0].offset; + _daylight = 0; + return; + } + /* Include the final > */ + strcat (__tzname_dst, ">"); + _tzname[1] = __tzname_dst; } else - _tzname[1] = __tzname_dst; + { + if (sscanf (tzenv, "%10[^0-9,+-]%n", __tzname_dst, &n) <= 0) + { /* No dst */ + _tzname[1] = _tzname[0]; + _timezone = tz->__tzrule[0].offset; + _daylight = 0; + return; + } + else + _tzname[1] = __tzname_dst; + } tzenv += n; -- 2.17.1