From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from second.openwall.net (second.openwall.net [193.110.157.125]) by inbox.vuxu.org (Postfix) with SMTP id EB46022045 for ; Sun, 24 Mar 2024 01:36:16 +0100 (CET) Received: (qmail 1620 invoked by uid 550); 24 Mar 2024 00:31:34 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 1579 invoked from network); 24 Mar 2024 00:31:34 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711240562; x=1711845362; darn=lists.openwall.com; h=pgp-key:in-reply-to:content-disposition:mime-version:references :message-id:subject:to:from:date:from:to:cc:subject:date:message-id :reply-to; bh=YzT6cUJArW2dnsPp1BrzeL8vLjhvZ5aEC+3ml9LGbbI=; b=DiuTkHrlGdY3GztZgG528dk7AIWmVk9YUsFhAyCdvdqTBMCU5WLdM19/qisU9+ZKyO aMZHhmzZqWQBCl1p4JXOoltkumtBl7PSt6Yaxfy7YZQrwt/Jzm5JbCsZ7FKvULNisD2n ziJw+z/eKDBNmHtiV3R3Gf9voI9LB3kIM77sAOx07ONWNycYT2nUU5DFfz2d7ja1V04K QfL1z032CaLinw0edVJ29n3mFUkZPOwUpxt4q3SSc/7VUCbJlgGZ5ZBQDGn+qfXfu51+ ws3KYGSQ0EjdOpbEbEgFqwinDMZkoLW66WuoI7j62qKWDYGgvs5pxwbGQl990rChaJpj MPTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711240562; x=1711845362; h=pgp-key:in-reply-to:content-disposition:mime-version:references :message-id:subject:to:from:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YzT6cUJArW2dnsPp1BrzeL8vLjhvZ5aEC+3ml9LGbbI=; b=cryjuo9JdAePsNR/EUcMAggBK9kk57nkzULXFe9OpSnqeUwgpoN/F6RypAqHqZn5Y+ NbZQ+IH3zJbVNwJ/d23BGwfOGinzOFvL/Jzm0qhOwyg8LHRC4VsCKDFcfFCEcDgRqtEc J5tUA87R83bI67fHoA8FrK49SddDOJc0sc5RjJ+eyYr7nZKnfxUK55GGKS4SG3BJOlNs 8Bmi9+1Qmbct/W5SgjhaayiM6QKETGvT5RFdw2ejIqUGBpeh/1V8KT52wmxL0nhzN4rE wDKUylp6nFxLpDX3166Oof4cwkG5aR3wcL/fjcWcNpgwxiSE4zfioqNbMNa1TzcXn0Ep I0fA== X-Gm-Message-State: AOJu0YxoKzWaGWjsIEIPDKm4foj/b+FFGv8IET4jv24s+MsxxBZ3dda1 UjVweA+g5pE73Bm16RzW6PWkSOjN7sNPult4mU3SMd+Dfu1lIkX0gV2zaxAHl5hbLQ== X-Google-Smtp-Source: AGHT+IGIQD/4cCY1+eMggFcMikdx+ksP+ynNlPsFMv8mBpVG7mWtVSH1Q07/uKWhbAHch8k5leJ2fg== X-Received: by 2002:a17:902:e5cd:b0:1e0:b12:a1d with SMTP id u13-20020a170902e5cd00b001e00b120a1dmr4370020plf.42.1711240561569; Sat, 23 Mar 2024 17:36:01 -0700 (PDT) Date: Sat, 23 Mar 2024 17:36:00 -0700 From: Eric Pruitt To: musl@lists.openwall.com Message-ID: References: <20240323123148.GR4163@brightrain.aerifal.cx> <5zS95V9QjlCRMv6JvbMFzFIOvxQTigAsEvu0YNSYzcu1ZHdki6sue6yqDXeWlRcSe_jhCQxHdHc0fvKu-3H7lCvyAeYgQTsK7KWMepbly3Y=@pm.me> <20240323153146.GS4163@brightrain.aerifal.cx> <-44SZR0LbVoyD5lp_9VrAFnIjGNbDvibCVUYEprqMToPidjopTHM4aLZuhjomrGJtvpGrc_gjrgK6roKWwunjEkk1y-BKRhtlGpWjnslQNA=@pm.me> <20240323201804.GT4163@brightrain.aerifal.cx> <6rPmS4jev9oFFibDdpKZ0mVRWLV3rhRcfqaUKu-5lPP7lc8zz8UH_kgPFA4r8wh1-qrYKfzVBpB0Ss6z4VMANASybmKZMeB9i3W3auYfhMI=@pm.me> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6rPmS4jev9oFFibDdpKZ0mVRWLV3rhRcfqaUKu-5lPP7lc8zz8UH_kgPFA4r8wh1-qrYKfzVBpB0Ss6z4VMANASybmKZMeB9i3W3auYfhMI=@pm.me> PGP-Key: https://www.codevat.com/pgp.asc#F8601B5D2511B4C3535232488DDDE2E6053692AB Subject: Re: [musl] Broken mktime calculations when crossing DST boundary On Sat, Mar 23, 2024 at 08:40:50PM +0000, Alexander Weps wrote: > Is there a way, how to reliable get beginning of day etc. without tm_isdst = -1. I needed to do something similar in a program that involved sunset and sunrise calculations. Depending on what you're doing and the information you have, maybe the approach I used could work: static time_t round_down_to_midnight(time_t when) { char buf[20]; struct tm *in; struct tm out; when -= when % 60; in = localtime(&when); if (in->tm_hour == 0 && in->tm_min == 0) { return when; } sprintf(buf, "%d-%02d-%02d 00:00:00", in->tm_year + 1900, in->tm_mon + 1, in->tm_mday); strptime(buf, "%Y-%m-%d %H:%M:%S", &out); return mktime(&out); } The performance of this is not great, though. Eric