Skip to content

Commit 8c2852a

Browse files
krasimirgghawkw
authored andcommitted
subscriber: clarify the provenance of fmt/time/datetime.rs (#1712)
Add comments to clarify the provenance of `fmt/time/datetime.rs`, addressing #1644. Fixes #1644
1 parent aa38daa commit 8c2852a

File tree

1 file changed

+201
-6
lines changed

1 file changed

+201
-6
lines changed

Diff for: tracing-subscriber/src/fmt/time/datetime.rs

+201-6
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,214 @@
1+
// musl as a whole is licensed under the following standard MIT license:
2+
//
3+
// ----------------------------------------------------------------------
4+
// Copyright © 2005-2020 Rich Felker, et al.
5+
//
6+
// Permission is hereby granted, free of charge, to any person obtaining
7+
// a copy of this software and associated documentation files (the
8+
// "Software"), to deal in the Software without restriction, including
9+
// without limitation the rights to use, copy, modify, merge, publish,
10+
// distribute, sublicense, and/or sell copies of the Software, and to
11+
// permit persons to whom the Software is furnished to do so, subject to
12+
// the following conditions:
13+
//
14+
// The above copyright notice and this permission notice shall be
15+
// included in all copies or substantial portions of the Software.
16+
//
17+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18+
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20+
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21+
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22+
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23+
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24+
// ----------------------------------------------------------------------
25+
//
26+
// Authors/contributors include:
27+
//
28+
// A. Wilcox
29+
// Ada Worcester
30+
// Alex Dowad
31+
// Alex Suykov
32+
// Alexander Monakov
33+
// Andre McCurdy
34+
// Andrew Kelley
35+
// Anthony G. Basile
36+
// Aric Belsito
37+
// Arvid Picciani
38+
// Bartosz Brachaczek
39+
// Benjamin Peterson
40+
// Bobby Bingham
41+
// Boris Brezillon
42+
// Brent Cook
43+
// Chris Spiegel
44+
// Clément Vasseur
45+
// Daniel Micay
46+
// Daniel Sabogal
47+
// Daurnimator
48+
// David Carlier
49+
// David Edelsohn
50+
// Denys Vlasenko
51+
// Dmitry Ivanov
52+
// Dmitry V. Levin
53+
// Drew DeVault
54+
// Emil Renner Berthing
55+
// Fangrui Song
56+
// Felix Fietkau
57+
// Felix Janda
58+
// Gianluca Anzolin
59+
// Hauke Mehrtens
60+
// He X
61+
// Hiltjo Posthuma
62+
// Isaac Dunham
63+
// Jaydeep Patil
64+
// Jens Gustedt
65+
// Jeremy Huntwork
66+
// Jo-Philipp Wich
67+
// Joakim Sindholt
68+
// John Spencer
69+
// Julien Ramseier
70+
// Justin Cormack
71+
// Kaarle Ritvanen
72+
// Khem Raj
73+
// Kylie McClain
74+
// Leah Neukirchen
75+
// Luca Barbato
76+
// Luka Perkov
77+
// M Farkas-Dyck (Strake)
78+
// Mahesh Bodapati
79+
// Markus Wichmann
80+
// Masanori Ogino
81+
// Michael Clark
82+
// Michael Forney
83+
// Mikhail Kremnyov
84+
// Natanael Copa
85+
// Nicholas J. Kain
86+
// orc
87+
// Pascal Cuoq
88+
// Patrick Oppenlander
89+
// Petr Hosek
90+
// Petr Skocik
91+
// Pierre Carrier
92+
// Reini Urban
93+
// Rich Felker
94+
// Richard Pennington
95+
// Ryan Fairfax
96+
// Samuel Holland
97+
// Segev Finer
98+
// Shiz
99+
// sin
100+
// Solar Designer
101+
// Stefan Kristiansson
102+
// Stefan O'Rear
103+
// Szabolcs Nagy
104+
// Timo Teräs
105+
// Trutz Behn
106+
// Valentin Ochs
107+
// Will Dietz
108+
// William Haddon
109+
// William Pitcock
110+
//
111+
// Portions of this software are derived from third-party works licensed
112+
// under terms compatible with the above MIT license:
113+
//
114+
// The TRE regular expression implementation (src/regex/reg* and
115+
// src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed
116+
// under a 2-clause BSD license (license text in the source files). The
117+
// included version has been heavily modified by Rich Felker in 2012, in
118+
// the interests of size, simplicity, and namespace cleanliness.
119+
//
120+
// Much of the math library code (src/math/* and src/complex/*) is
121+
// Copyright © 1993,2004 Sun Microsystems or
122+
// Copyright © 2003-2011 David Schultz or
123+
// Copyright © 2003-2009 Steven G. Kargl or
124+
// Copyright © 2003-2009 Bruce D. Evans or
125+
// Copyright © 2008 Stephen L. Moshier or
126+
// Copyright © 2017-2018 Arm Limited
127+
// and labelled as such in comments in the individual source files. All
128+
// have been licensed under extremely permissive terms.
129+
//
130+
// The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008
131+
// The Android Open Source Project and is licensed under a two-clause BSD
132+
// license. It was taken from Bionic libc, used on Android.
133+
//
134+
// The AArch64 memcpy and memset code (src/string/aarch64/*) are
135+
// Copyright © 1999-2019, Arm Limited.
136+
//
137+
// The implementation of DES for crypt (src/crypt/crypt_des.c) is
138+
// Copyright © 1994 David Burren. It is licensed under a BSD license.
139+
//
140+
// The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was
141+
// originally written by Solar Designer and placed into the public
142+
// domain. The code also comes with a fallback permissive license for use
143+
// in jurisdictions that may not recognize the public domain.
144+
//
145+
// The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
146+
// Valentin Ochs and is licensed under an MIT-style license.
147+
//
148+
// The x86_64 port was written by Nicholas J. Kain and is licensed under
149+
// the standard MIT terms.
150+
//
151+
// The mips and microblaze ports were originally written by Richard
152+
// Pennington for use in the ellcc project. The original code was adapted
153+
// by Rich Felker for build system and code conventions during upstream
154+
// integration. It is licensed under the standard MIT terms.
155+
//
156+
// The mips64 port was contributed by Imagination Technologies and is
157+
// licensed under the standard MIT terms.
158+
//
159+
// The powerpc port was also originally written by Richard Pennington,
160+
// and later supplemented and integrated by John Spencer. It is licensed
161+
// under the standard MIT terms.
162+
//
163+
// All other files which have no copyright comments are original works
164+
// produced specifically for use as part of this library, written either
165+
// by Rich Felker, the main author of the library, or by one or more
166+
// contibutors listed above. Details on authorship of individual files
167+
// can be found in the git version control history of the project. The
168+
// omission of copyright and license comments in each file is in the
169+
// interest of source tree size.
170+
//
171+
// In addition, permission is hereby granted for all public header files
172+
// (include/* and arch/*/bits/*) and crt files intended to be linked into
173+
// applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit
174+
// the copyright notice and permission notice otherwise required by the
175+
// license, and to use these files without any requirement of
176+
// attribution. These files include substantial contributions from:
177+
//
178+
// Bobby Bingham
179+
// John Spencer
180+
// Nicholas J. Kain
181+
// Rich Felker
182+
// Richard Pennington
183+
// Stefan Kristiansson
184+
// Szabolcs Nagy
185+
//
186+
// all of whom have explicitly granted such permission.
187+
//
188+
// This file previously contained text expressing a belief that most of
189+
// the files covered by the above exception were sufficiently trivial not
190+
// to be subject to copyright, resulting in confusion over whether it
191+
// negated the permissions granted in the license. In the spirit of
192+
// permissive licensing, and of not having licensing issues being an
193+
// obstacle to adoption, that text has been removed.
194+
195+
1196
use std::fmt;
2197

3198
/// A date/time type which exists primarily to convert `SystemTime` timestamps into an ISO 8601
4199
/// formatted string.
5200
///
6201
/// Yes, this exists. Before you have a heart attack, understand that the meat of this is musl's
7-
/// [`__secs_to_tm`][1] converted to Rust via [c2rust][2] and then cleaned up by hand. All existing
8-
/// `strftime`-like APIs I found were unable to handle the full range of timestamps representable
9-
/// by `SystemTime`, including `strftime` itself, since tm.tm_year is an int.
10-
///
11-
/// TODO: figure out how to properly attribute the MIT licensed musl project.
202+
/// [`__secs_to_tm`][1] converted to Rust via [c2rust][2] and then cleaned up by hand as part of
203+
/// the [kudu-rs project][3], [released under MIT][4].
12204
///
13205
/// [1] http://git.musl-libc.org/cgit/musl/tree/src/time/__secs_to_tm.c
14206
/// [2] https://c2rust.com/
207+
/// [3] https://github.com/danburkert/kudu-rs/blob/c9660067e5f4c1a54143f169b5eeb49446f82e54/src/timestamp.rs#L5-L18
208+
/// [4] https://github.com/tokio-rs/tracing/issues/1644#issuecomment-963888244
15209
///
16-
/// This is directly copy-pasted from https://github.com/danburkert/kudu-rs/blob/c9660067e5f4c1a54143f169b5eeb49446f82e54/src/timestamp.rs#L5-L18
210+
/// All existing `strftime`-like APIs I found were unable to handle the full range of timestamps representable
211+
/// by `SystemTime`, including `strftime` itself, since tm.tm_year is an int.
17212
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
18213
pub(crate) struct DateTime {
19214
year: i64,

0 commit comments

Comments
 (0)