The printf(3) manual says that DOU are deprecated but are supposed to
behave the same way as ld, lo and lu.
However:
$ jot -w '%ld' 5 -2
-2
-1
0
1
2
$ jot -w '%D' 5 -2
4294967294
4294967295
0
1
2
$ jot -w '%ld' 4 4294967294
4294967294
4294967295
4294967296
4294967297
$ jot -w '%D' 4 4294967294
jot: range error in conversion: 4294967294.000000
Similarly for %O and %U.
This makes %{D,O,U} synonymous with %l{d,o,u}:
Index: usr.bin/jot/jot.c
===================================================================
RCS file: /var/cvs/src/usr.bin/jot/jot.c,v
retrieving revision 1.36
diff -u -p -r1.36 jot.c
--- usr.bin/jot/jot.c 2 Sep 2016 14:23:09 -0000 1.36
+++ usr.bin/jot/jot.c 10 Dec 2017 14:26:47 -0000
@@ -420,12 +420,16 @@ getformat(void)
intdata = true;
break;
case 'D':
+ /* %lD is undefined */
if (!longdata) {
+ longdata = true; /* %D behaves as %ld */
intdata = true;
break;
}
case 'O': case 'U':
+ /* %lO and %lU are undefined */
if (!longdata) {
+ longdata = true; /* %O, %U behave as %ld, %lu */
intdata = nosign = true;
break;
}