ObjFW  History of src/OFApplication.h of aa56dd6d2a2ad4ca957d7641e2b0415417579ae0ae6f497af2ddc2bf4939ec23

History of file src/OFApplication.h at check-in aa56dd6d2a2ad4ca957d7641e2b0415417579ae0ae6f497af2ddc2bf4939ec23

2024-11-04
00:23
Add missing nullability for __getmainargs() file: [7a64d2e109] check-in: [52d24aa522] user: js, branch: trunk, size: 10064 [annotate] [blame] [check-ins using] [diff]
00:10
Fix compiling ObjC++ on Windows file: [4a3043d514] check-in: [5e5ca921cb] user: js, branch: trunk, size: 9988 [annotate] [blame] [check-ins using] [diff]
2024-06-17
21:08
Always use <ObjFW/ObjFW.h> in documentation file: [ac4321c991] check-in: [164f2fb4bf] user: js, branch: trunk, size: 9941 [annotate] [blame] [check-ins using] [diff]
2024-05-05
12:33
Make OF_APPLICATION_DELEGATE() work with -mwindows file: [f42b12f4e5] check-in: [dcea3bad47] user: js, branch: trunk, size: 9957 [annotate] [blame] [check-ins using] [diff]
2024-04-03
02:16
Change license to LGPLv3 only file: [757b90a7e1] check-in: [7413a728a7] user: js, branch: trunk, size: 9173 [annotate] [blame] [check-ins using] [diff]
2024-01-02
17:17
Update copyright file: [b0247b31f0] check-in: [26ddd2e4e4] user: js, branch: trunk, size: 8965 [annotate] [blame] [check-ins using] [diff]
2023-01-06
09:04
Update copyright file: [e5cf81a0bb] check-in: [8939cbdb52] user: js, branch: trunk, size: 8965 [annotate] [blame] [check-ins using] [diff]
2022-12-04
11:11
Fix several Doxygen warnings file: [f6f3fd5c4f] check-in: [b76008cee0] user: js, branch: trunk, size: 8965 [annotate] [blame] [check-ins using] [diff]
2022-11-13
19:07
Add OFApplicationDidFinishLaunchingNotification file: [df94634a83] check-in: [204b27318f] user: js, branch: trunk, size: 8964 [annotate] [blame] [check-ins using] [diff]
2022-02-12
07:46
Update copyright file: [d7b817478b] check-in: [1a86b8175b] user: js, branch: trunk, size: 8484 [annotate] [blame] [check-ins using] [diff]
2021-11-05
10:49
Send OFApplicationWillTerminateNotification file: [7a93778b15] check-in: [7eadd67c57] user: js, branch: trunk, size: 8484 [annotate] [blame] [check-ins using] [diff]
2021-04-25
20:12
Merge trunk into branch "sandbox" file: [7fa4329a75] check-in: [1c5fb04713] user: js, branch: sandbox, size: 10186 [annotate] [blame] [check-ins using] [diff]
2021-04-18
22:56
Rename all symbols marked extern file: [5f5127d646] check-in: [e73c65a849] user: js, branch: new-naming-convention, size: 8088 [annotate] [blame] [check-ins using] [diff]
2021-03-30
21:23
Merge trunk into 1.0 branch file: [2ca542568c] check-in: [564d6d6b6f] user: js, branch: 1.0, size: 8103 [annotate] [blame] [check-ins using] [diff]
2021-01-02
22:04
Update copyright file: [05d5c2e935] check-in: [374e1a1bfa] user: js, branch: trunk, size: 10201 [annotate] [blame] [check-ins using] [diff]
2020-12-22
13:16
Make OFSandbox private

It is unclear whether the same API can be applied to other sandboxing
frameworks. file: [090cdb1ff6] check-in: [510628432f] user: js, branch: 1.0, size: 8192 [annotate] [blame] [check-ins using] [diff]

2020-10-03
11:35
Use /** */ instead of /*! */ for documentation file: [a2a9803d24] check-in: [163a4a5a2e] user: js, branch: trunk, size: 10290 [annotate] [blame] [check-ins using] [diff]
2020-04-19
15:24
Several documentation improvements file: [ae508719d0] check-in: [f27905c199] user: js, branch: trunk, size: 10290 [annotate] [blame] [check-ins using] [diff]
2020-01-02
01:51
Update copyright file: [d0ae1ccee1] check-in: [c7f0229795] user: js, branch: trunk, size: 9743 [annotate] [blame] [check-ins using] [diff]
2019-09-29
20:53
Reduce ivar scopes file: [1ecf36756b] check-in: [e0a330b377] user: js, branch: trunk, size: 9740 [annotate] [blame] [check-ins using] [diff]
19:48
Documentation fixes file: [93b516bfa0] check-in: [3be624ded9] user: js, branch: trunk, size: 9779 [annotate] [blame] [check-ins using] [diff]
19:35
Either restrict subclassing or reserve ivar space

This allows ABI stability with the fragile ABI. file: [537950f969] check-in: [496695d778] user: js, branch: trunk, size: 9777 [annotate] [blame] [check-ins using] [diff]

15:47
OFApplication: Rename a few sandbox methods file: [f18dce4f34] check-in: [b3f7ccb707] user: js, branch: trunk, size: 9751 [annotate] [blame] [check-ins using] [diff]
2019-06-16
04:51
OFApplication: Nullability fix file: [b018d35a5c] check-in: [ae0955585b] user: js, branch: trunk, size: 9668 [annotate] [blame] [check-ins using] [diff]
2019-02-07
21:31
More style improvements file: [1dfb4a501e] check-in: [754bf24742] user: js, branch: trunk, size: 9667 [annotate] [blame] [check-ins using] [diff]
2019-01-03
19:13
Update copyright file: [8ae28aad85] check-in: [0509d7a844] user: js, branch: trunk, size: 9659 [annotate] [blame] [check-ins using] [diff]
2018-11-11
22:30
OFApplication: Disallow using a different sandbox

While the active sandbox can be changed, a different sandbox must not be
activated. The reason for this is that allowing to activate a different
sandbox makes it impossible to track which paths have already been
unveiled. file: [2092ccca9e] check-in: [e0c2e70f7b] user: js, branch: trunk, size: 9653 [annotate] [blame] [check-ins using] [diff]

2018-11-04
16:24
OFSandbox: Add support for unveil() file: [6e9b955715] check-in: [648522a4e6] user: js, branch: trunk, size: 9041 [annotate] [blame] [check-ins using] [diff]
2018-07-07
21:47
Fix nullability of of_application_main() file: [057a1878e6] check-in: [a4a38f1aea] user: js, branch: trunk, size: 7660 [annotate] [blame] [check-ins using] [diff]
2018-06-30
00:41
OFApplication: Add property for the active sandbox file: [b60367bda7] check-in: [8eedb5a39a] user: js, branch: trunk, size: 7659 [annotate] [blame] [check-ins using] [diff]
2018-06-16
14:15
Wrap a few @public in #ifdefs file: [b452a90958] check-in: [7d86d2dd2b] user: js, branch: trunk, size: 7472 [annotate] [blame] [check-ins using] [diff]
2018-01-03
19:49
Update copyright notice file: [26f5712fa1] check-in: [7e5c81e186] user: js, branch: trunk, size: 7441 [annotate] [blame] [check-ins using] [diff]
2017-11-22
01:05
OF_APPLICATION_DELEGATE(): Improve type checking

This is done at compile time now rather than at runtime. file: [b0172a54c9] check-in: [54b38752bb] user: js, branch: trunk, size: 7418 [annotate] [blame] [check-ins using] [diff]

2017-11-18
18:50
Documentation: Use @brief for all properties file: [21318ded74] check-in: [cc3ad3ddd3] user: js, branch: trunk, size: 7371 [annotate] [blame] [check-ins using] [diff]
17:45
Fix several Doxygen warnings file: [af6e45f48f] check-in: [31e6b7ce9c] user: js, branch: trunk, size: 7343 [annotate] [blame] [check-ins using] [diff]
2017-10-30
00:23
Add class properties where appropriate

This improves Swift compatibility. file: [8d82cea2e5] check-in: [a2e849c681] user: js, branch: trunk, size: 7479 [annotate] [blame] [check-ins using] [diff]

2017-10-29
21:58
Convert methods to properties where appropriate

This improves Swift compatibility. file: [5c5c92ace5] check-in: [f3ccf14461] user: js, branch: trunk, size: 7069 [annotate] [blame] [check-ins using] [diff]

2017-10-17
00:33
Do not use implicit method return types

Instead, explicitly declare them, as OF_ASSUME_NONNULL_{BEGIN,END} does
not apply to implicit return types. This means that after this commit,
all init methods have a nonnull return type, as they should have. file: [45023093c6] check-in: [2f4e0df8be] user: js, branch: trunk, size: 7267 [annotate] [blame] [check-ins using] [diff]

2017-10-01
13:43
More nullability and style fixes file: [e7e5df2d5d] check-in: [66c29a31f2] user: js, branch: trunk, size: 7253 [annotate] [blame] [check-ins using] [diff]
2017-09-26
21:53
Many nullability fixes file: [2d5bcb9dc9] check-in: [52011fbfd6] user: js, branch: trunk, size: 7217 [annotate] [blame] [check-ins using] [diff]
2017-06-05
18:56
Doxyfile: Add missing defines file: [627b4181f1] check-in: [4b6dfe02f2] user: js, branch: trunk, size: 7167 [annotate] [blame] [check-ins using] [diff]
2017-06-03
15:57
-[OFApplication environment] for MorphOS + libnix file: [0f7086557c] check-in: [6d0a185364] user: js, branch: trunk, size: 7190 [annotate] [blame] [check-ins using] [diff]
2017-05-08
21:37
Add OF_DESIGNATED_INITIALIZER & OF_METHOD_FAMILY file: [d80a91974e] check-in: [469a496cd2] user: js, branch: trunk, size: 7183 [annotate] [blame] [check-ins using] [diff]
2017-05-07
20:10
Small code style change

Casts are now written like types in variable declarations. file: [2fba27a966] check-in: [4af49a13c3] user: js, branch: trunk, size: 7159 [annotate] [blame] [check-ins using] [diff]

2017-05-06
21:31
OFApplication: Only handle defined signals file: [7c21208134] check-in: [e3e464fc6e] user: js, branch: trunk, size: 7144 [annotate] [blame] [check-ins using] [diff]
2017-04-30
13:35
Use nonatomic for properties and clean up

This changes retaining behavior, meaning properties are not returned
retained and autoreleased anymore, so a property returned from a getter
now needs to be manually retained and autoreleased before calling the
setter. However, this is rarely the case and not using atomic improves
performance. file: [ce51a82a57] check-in: [0a73af49f0] user: js, branch: trunk, size: 7084 [annotate] [blame] [check-ins using] [diff]

2017-04-09
18:22
Add OFSandbox

Only OpenBSD's pledge() is supported so far. file: [2f26626383] check-in: [40cf53506a] user: js, branch: trunk, size: 7075 [annotate] [blame] [check-ins using] [diff]

2017-02-04
17:45
Fix typos in comments and strings found by aspell file: [cf9f1c7ea1] check-in: [5a31a537a1] user: js, branch: trunk, size: 6492 [annotate] [blame] [check-ins using] [diff]
2017-01-09
17:36
Update copyright

Forgot to add 2017, even though I already did quite some changes in
2017. file: [8c63e1a670] check-in: [44f45c2e35] user: js, branch: trunk, size: 6492 [annotate] [blame] [check-ins using] [diff]

2017-01-06
23:59
Add more _Nonnull to make Clang 4.0 happy file: [1f75d12ec4] check-in: [b56ef2c415] user: js, branch: trunk, size: 6486 [annotate] [blame] [check-ins using] [diff]
2016-01-03
00:43
Update copyright

While at it, also update the mail address. file: [b86a7582e1] check-in: [cec0f072f8] user: js, branch: 0.8, size: 7061 [annotate] [blame] [check-ins using] [diff]

00:41
Update copyright

While at it, also update the mail address. file: [1366008f73] check-in: [2a27cf3000] user: js, branch: trunk, size: 6470 [annotate] [blame] [check-ins using] [diff]

2015-11-29
14:20
Clean up optional protocols

Now that we can require GCC >= 4.6, we no longer need to have a category
on OFObject that adds the optional protocol to it. file: [3d009b0fda] check-in: [ba62f00fac] user: js, branch: trunk, size: 6466 [annotate] [blame] [check-ins using] [diff]

11:43
Make properties a requirement and clean up code

This increases the required GCC version from 4.0 to 4.6 (exception:
Apple GCC, which already supports this with >= 4.0 starting with OS X
10.5). Since even GCC 4.6 is really old by now, there is no point in
still supporting something even older and making the code ugly because
of that. While some hardware and OS support was dropped from GCC 4.6
compared to GCC 4.0, there is nothing in there that would be an
interesting target with the exception of BeOS maybe - but a port to BeOS
can also be achieved using the Haiku support. The other dropped OSes are
mostly old versions of OSes while newer ones are still being supported
(and those newer versions of those OSes still support the same
hardware). file: [91ca5aaec7] check-in: [48980f2297] user: js, branch: trunk, size: 6581 [annotate] [blame] [check-ins using] [diff]

2015-11-21
18:35
Remove OF_NULLABLE / OF_NONNULL

Now that Clang switched to use _Nullable and _Nonnull instead of
__nullable / __nonnull, there is no longer a conflict with glibc, which
means we can just define _Nullable / _Nonnull to nothing if they are not
understood by the compiler (which did not work with __nullable /
__nonnull due to this conflict).

This also defines _Null_unspecified to nothing if unavailable. file: [5756d4c723] check-in: [d526d938d7] user: js, branch: trunk, size: 7049 [annotate] [blame] [check-ins using] [diff]

2015-10-19
22:15
Add platform.h & make platform defines consistent file: [9035033dca] check-in: [1ba08eebc5] user: js, branch: trunk, size: 7065 [annotate] [blame] [check-ins using] [diff]
2015-06-17
22:11
Add OF_NULLABLE_PROPERTY

This is necessary to make GCC (>= 4.6 and Apple GCC) happy as they don't
like the list of property attributes ending in a comma. file: [ed8ed6f607] check-in: [80e1a9655b] user: js, branch: trunk, size: 7057 [annotate] [blame] [check-ins using] [diff]

2015-06-14
10:45
Add OF_NONNULL / OF_NULLABLE and use that instead

Using __nonnull directly doesn't work on systems using glibc, as glibc
defines __nonnull as a parameterized define. While this does not fix the
problem of Clang introducing __nonnull even though it conflicts with
glibc, this at least means it's possible again to compile things with
versions of Clang that don't support __nonnull on systems with glibc. file: [e950676ac5] check-in: [b7097a67b6] user: js, branch: trunk, size: 7046 [annotate] [blame] [check-ins using] [diff]

2015-06-13
22:26
Add support for and use the new nullability file: [efd0ac2883] check-in: [9e76144ef8] user: js, branch: trunk, size: 7038 [annotate] [blame] [check-ins using] [diff]
2015-06-12
23:59
Add support for and use the new ObjC generics file: [b8b3df6515] check-in: [5329fe7c1a] user: js, branch: trunk, size: 6878 [annotate] [blame] [check-ins using] [diff]
2015-01-03
20:57
Update copyright file: [879ac4c6e1] check-in: [cfd374b906] user: js, branch: trunk, size: 6521 [annotate] [blame] [check-ins using] [diff]
2014-10-24
19:12
OFApplication: Use EXIT_SUCCESS as default status file: [293fafa26f] check-in: [46cf9f33a8] user: js, branch: trunk, size: 6515 [annotate] [blame] [check-ins using] [diff]
2014-07-19
09:55
Don't use C11's noreturn

It causes just too much trouble: It breaks with some old versions of
Clang, where noreturn does not work correctly, and OS X headers break if
noreturn is defined, requiring an ugly and fragile workaround. It's just
not worth the trouble it causes, as the same functionality is available
through __attribute__((__noreturn__)). file: [ce851e8072] check-in: [716b1fc2b3] user: js, branch: trunk, size: 6486 [annotate] [blame] [check-ins using] [diff]

2014-05-14
20:45
Add C11 noreturn

If it's unavailable, it's defined to __attribute__((noreturn)).

Unfortunately, it cannot be used for ObjC methods, as noreturn is part
of the return type while __attribute__((noreturn)) needs to be at the
end for an ObjC method. To make matters worse, even GCC versions that
accept noreturn don't allow it for an ObjC method. Thus, the only thing
that can be done is to always use __attribute__((noreturn)) for ObjC
methods using the OF_METHOD_NORETURN define. file: [4b9b47fc09] check-in: [bac91ccede] user: js, branch: trunk, size: 6510 [annotate] [blame] [check-ins using] [diff]

2014-05-05
02:43
Add OF_NO_RETURN and OF_UNREACHABLE file: [f01ba7a135] check-in: [b885b6fdfa] user: js, branch: trunk, size: 6460 [annotate] [blame] [check-ins using] [diff]
2014-02-18
18:50
Documentation: Show correct imports file: [6ad0d38bc0] check-in: [246cfe0807] user: js, branch: trunk, size: 6434 [annotate] [blame] [check-ins using] [diff]
2014-01-04
00:24
Update copyright. file: [6c9dd5902f] check-in: [3b97fc3cd9] user: js, branch: trunk, size: 6293 [annotate] [blame] [check-ins using] [diff]
2013-08-15
19:00
Move private methods into private headers. file: [bf2d96e316] check-in: [1d7a1cbca0] user: js, branch: trunk, size: 6287 [annotate] [blame] [check-ins using] [diff]
2013-03-13
11:59
Make -[OFApplication run] private. file: [ab2b8913d3] check-in: [f641274833] user: js, branch: trunk, size: 6490 [annotate] [blame] [check-ins using] [diff]
2013-03-12
20:10
Document OFApplication a little more. file: [40724319b8] check-in: [0d80255cc3] user: js, branch: trunk, size: 6649 [annotate] [blame] [check-ins using] [diff]
2013-02-12
18:22
Prefix all ivars with an underscore. file: [4a2c8eebf0] check-in: [e40729d406] user: js, branch: trunk, size: 6277 [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
Update copyright. file: [8e58702259] check-in: [813c00ccf0] user: js, branch: trunk, size: 6281 [annotate] [blame] [check-ins using] [diff]
2013-01-08
03:13
OFApplication: Get Unicode arguments on Win32.

It still stores the normal argc/argv for compatibility, however, the
argument array is created from the Unicode arguments instead.

This also makes -[OFApplication setArgumentCount:andArgumentValues:]
private. file: [24a84dfbfd] check-in: [fb1f29bd30] user: js, branch: trunk, size: 6275 [annotate] [blame] [check-ins using] [diff]

2012-12-20
16:42
Remove dummy implementations for formal protocols. file: [e7a89febd1] check-in: [89177dcd09] user: js, branch: trunk, size: 6366 [annotate] [blame] [check-ins using] [diff]
2012-10-28
12:38
Switch to a headerdoc-compatible doc format. file: [f44a22ec3a] check-in: [1ad9565253] user: js, branch: trunk, size: 6436 [annotate] [blame] [check-ins using] [diff]
2012-10-09
15:07
Make use of instancetype. file: [ec565e513e] check-in: [fb515e8e24] user: js, branch: trunk, size: 6436 [annotate] [blame] [check-ins using] [diff]
2012-10-02
11:20
More property cleanup. file: [8da8c6a3f6] check-in: [7261ba5bd1] user: js, branch: trunk, size: 6420 [annotate] [blame] [check-ins using] [diff]
2012-02-21
19:59
Don't try to use SIG{HUP,USR1,USR2} on Windows. file: [1aa58a5990] check-in: [cf4be9e865] user: js, branch: 0.6, size: 6393 [annotate] [blame] [check-ins using] [diff]
2012-02-17
17:13
Make it possible to handle common signals in OFApplicationDelegate. file: [1bcf3be869] check-in: [83ad0894c0] user: js, branch: trunk, size: 6208 [annotate] [blame] [check-ins using] [diff]
2012-01-05
00:56
Update copyright. file: [3eec16fb74] check-in: [ce70e17b38] user: js, branch: trunk, size: 4582 [annotate] [blame] [check-ins using] [diff]
2011-11-30
23:55
Don't copy properties of OFApplication.

There is no need to reference count them, they will always be retained
by the application for the lifetime of the application. file: [26fb77f30b] check-in: [9ec315d070] user: js, branch: trunk, size: 4576 [annotate] [blame] [check-ins using] [diff]

2011-10-24
18:28
Don't retain delegates to prevent reference cycles. file: [a8719ab12b] check-in: [87cd99ff88] user: js, branch: trunk, size: 4570 [annotate] [blame] [check-ins using] [diff]
2011-05-05
21:17
More documentation improvements. file: [530227dea1] check-in: [8490c927d2] user: js, branch: trunk, size: 4570 [annotate] [blame] [check-ins using] [diff]
2011-03-23
01:06
Make more use of the OFObject protocol. file: [abd0f46934] check-in: [23acf38456] user: js, branch: trunk, size: 3926 [annotate] [blame] [check-ins using] [diff]
2011-03-21
13:26
Make use of optional protocols, if available. file: [2c20aa4c5b] check-in: [0c9206532f] user: js, branch: trunk, size: 3845 [annotate] [blame] [check-ins using] [diff]
2011-02-26
19:40
Use class swizzling as an optimization. file: [b0da128322] check-in: [06f539766f] user: js, branch: trunk, size: 3794 [annotate] [blame] [check-ins using] [diff]
2011-02-01
22:11
Use extern "C" where useful.
Improves ObjC++ compatibility.
file: [f1e2ce1411] check-in: [03d1b71d10] user: js, branch: trunk, size: 3800 [annotate] [blame] [check-ins using] [diff]
2011-01-01
20:19
Change license. file: [d154d81fb9] check-in: [da6b3d26cb] user: js, branch: trunk, size: 3733 [annotate] [blame] [check-ins using] [diff]
2010-10-10
21:09
Better storing of argc and argv for real now. file: [20532cb77f] check-in: [cd677a3484] user: js, branch: trunk, size: 3477 [annotate] [blame] [check-ins using] [diff]
12:01
Better storing of argc and argv.

This makes it possible to pass argc and argv to third party libs
requiring those. file: [53d78093d3] check-in: [f282aaa672] user: js, branch: trunk, size: 3471 [annotate] [blame] [check-ins using] [diff]

2010-09-05
23:19
Replace OFObject* with id in many places.

We assume now that every object understands retain, release, etc. so
that we can weaken the type from OFObject* to id. This makes it
possible to use different root object classes. file: [c960316ed3] check-in: [e2b06423e0] user: js, branch: trunk, size: 3194 [annotate] [blame] [check-ins using] [diff]

2010-06-13
00:16
Add protocol to type of delegate of OFApplication. file: [8f191a6ed6] check-in: [1009e97dcd] user: js, branch: trunk, size: 3222 [annotate] [blame] [check-ins using] [diff]
2010-05-27
15:39
Add environment to OFApplication. file: [20ade0a7d8] check-in: [62bef06751] user: js, branch: trunk, size: 3098 [annotate] [blame] [check-ins using] [diff]
2010-04-17
23:04
Add properties to interfaces. Only used if supported by the compiler. file: [f1232ecffb] check-in: [f3e7291fad] user: js, branch: trunk, size: 2788 [annotate] [blame] [check-ins using] [diff]
22:27
New ivar naming convention.

ivars are now named like this: thisIsAnIVar. If an accessor exists for
the ivar, the ivar is named like the accessor. This is required for
@property to work. file: [ad7af612fb] check-in: [37db8f0fb3] user: js, branch: trunk, size: 2621 [annotate] [blame] [check-ins using] [diff]

15:46
Don't return self where not necessary, return void or something useful. file: [9f252190f8] check-in: [062a052b50] user: js, branch: trunk, size: 2618 [annotate] [blame] [check-ins using] [diff]
2010-04-09
00:17
Add -[terminateWithStatus:] to OFApplication. file: [4689449381] check-in: [3edacb0511] user: js, branch: trunk, size: 2596 [annotate] [blame] [check-ins using] [diff]
2010-04-08
02:00
Add -[programName] to OFApplication and remove it from -[arguments]. file: [24c74a3550] check-in: [b23b8c11bc] user: js, branch: trunk, size: 2234 [annotate] [blame] [check-ins using] [diff]
2010-04-07
23:24
Add OF_APPLICATION_DELEGATE macro. file: [6b59f8bebe] check-in: [8e594ea87a] user: js, branch: trunk, size: 2036 [annotate] [blame] [check-ins using] [diff]
21:14
Minor documentation fixes. file: [b34d8ea808] check-in: [d2796e2a91] user: js, branch: trunk, size: 1870 [annotate] [blame] [check-ins using] [diff]
19:55
Added: Add OFApplication. file: [7806bade69] check-in: [f034850a98] user: js, branch: trunk, size: 1882 [annotate] [blame] [check-ins using]