01_iwyu.patch raw

   1  Prefer angled brackets over quotes for include directives.
   2  See: https://en.cppreference.com/w/cpp/preprocessor/include.html.
   3  
   4  --- a/iwyu_path_util.cc
   5  +++ b/iwyu_path_util.cc
   6  @@ -222,7 +222,7 @@ bool IsQuotedInclude(StringRef s) {
   7   }
   8   
   9   string AddQuotes(string include_name, bool angled) {
  10  -  if (angled) {
  11  +  if (true) {
  12         return "<" + include_name + ">";
  13     }
  14     return "\"" + include_name + "\"";
  15  
  16  
  17  Prefer C++ headers over C counterparts.
  18  See: https://github.com/include-what-you-use/include-what-you-use/blob/clang_22/iwyu_include_picker.cc#L645-L687.
  19  
  20  --- a/iwyu_include_picker.cc
  21  +++ b/iwyu_include_picker.cc
  22  @@ -104,20 +104,20 @@ const IncludeMapEntry libc_symbol_map[] = {
  23     // equal.  The visibility on the symbol-name is ignored; by convention
  24     // we always set it to kPrivate.
  25     { "_POSIX_VDISABLE", kPrivate, "<unistd.h>", kPublic },
  26  -  { "abort", kPrivate, "<stdlib.h>", kPublic },
  27  +  { "abort", kPrivate, "<stdlib.h>", kPrivate },
  28     { "aiocb", kPrivate, "<aio.h>", kPublic },
  29     { "blkcnt_t", kPrivate, "<sys/types.h>", kPublic },
  30     { "blksize_t", kPrivate, "<sys/types.h>", kPublic },
  31     { "cc_t", kPrivate, "<termios.h>", kPublic },
  32  -  { "clock_t", kPrivate, "<time.h>", kPublic },
  33  +  { "clock_t", kPrivate, "<time.h>", kPrivate },
  34     { "clock_t", kPrivate, "<sys/types.h>", kPublic },
  35     { "clockid_t", kPrivate, "<sys/types.h>", kPublic },
  36  -  { "ctermid", kPrivate, "<stdio.h>", kPublic },
  37  +  { "ctermid", kPrivate, "<stdio.h>", kPrivate },
  38     { "daddr_t", kPrivate, "<sys/types.h>", kPublic },
  39     { "dev_t", kPrivate, "<sys/types.h>", kPublic },
  40  -  { "div_t", kPrivate, "<stdlib.h>", kPublic },
  41  -  { "double_t", kPrivate, "<math.h>", kPublic },
  42  -  { "error_t", kPrivate, "<errno.h>", kPublic },
  43  +  { "div_t", kPrivate, "<stdlib.h>", kPrivate },
  44  +  { "double_t", kPrivate, "<math.h>", kPrivate },
  45  +  { "error_t", kPrivate, "<errno.h>", kPrivate },
  46     { "error_t", kPrivate, "<argp.h>", kPublic },
  47     { "error_t", kPrivate, "<argz.h>", kPublic },
  48     { "FD_CLR", kPrivate, "<sys/select.h>", kPublic },
  49  @@ -126,10 +126,10 @@ const IncludeMapEntry libc_symbol_map[] = {
  50     { "fd_set", kPrivate, "<sys/select.h>", kPublic },
  51     { "FD_SETSIZE", kPrivate, "<sys/select.h>", kPublic },
  52     { "FD_ZERO", kPrivate, "<sys/select.h>", kPublic },
  53  -  { "fenv_t", kPrivate, "<fenv.h>", kPublic },
  54  -  { "fexcept_t", kPrivate, "<fenv.h>", kPublic },
  55  -  { "FILE", kPrivate, "<stdio.h>", kPublic },
  56  -  { "float_t", kPrivate, "<math.h>", kPublic },
  57  +  { "fenv_t", kPrivate, "<fenv.h>", kPrivate },
  58  +  { "fexcept_t", kPrivate, "<fenv.h>", kPrivate },
  59  +  { "FILE", kPrivate, "<stdio.h>", kPrivate },
  60  +  { "float_t", kPrivate, "<math.h>", kPrivate },
  61     { "fsblkcnt_t", kPrivate, "<sys/types.h>", kPublic },
  62     { "fsfilcnt_t", kPrivate, "<sys/types.h>", kPublic },
  63     { "getopt", kPrivate, "<unistd.h>", kPublic },
  64  @@ -139,47 +139,47 @@ const IncludeMapEntry libc_symbol_map[] = {
  65     { "in_addr_t", kPrivate, "<netinet/in.h>", kPublic },
  66     { "in_port_t", kPrivate, "<netinet/in.h>", kPublic },
  67     { "id_t", kPrivate, "<sys/types.h>", kPublic },
  68  -  { "imaxdiv_t", kPrivate, "<inttypes.h>", kPublic },
  69  -  { "intmax_t", kPrivate, "<stdint.h>", kPublic },
  70  -  { "uintmax_t", kPrivate, "<stdint.h>", kPublic },
  71  +  { "imaxdiv_t", kPrivate, "<inttypes.h>", kPrivate },
  72  +  { "intmax_t", kPrivate, "<stdint.h>", kPrivate },
  73  +  { "uintmax_t", kPrivate, "<stdint.h>", kPrivate },
  74     { "ino64_t", kPrivate, "<sys/types.h>", kPublic },
  75     { "ino_t", kPrivate, "<sys/types.h>", kPublic },
  76  -  { "int8_t", kPrivate, "<stdint.h>", kPublic },
  77  -  { "int16_t", kPrivate, "<stdint.h>", kPublic },
  78  -  { "int32_t", kPrivate, "<stdint.h>", kPublic },
  79  -  { "int64_t", kPrivate, "<stdint.h>", kPublic },
  80  -  { "int_fast8_t", kPrivate, "<stdint.h>", kPublic },
  81  -  { "int_fast16_t", kPrivate, "<stdint.h>", kPublic },
  82  -  { "int_fast32_t", kPrivate, "<stdint.h>", kPublic },
  83  -  { "int_fast64_t", kPrivate, "<stdint.h>", kPublic },
  84  -  { "int_least8_t", kPrivate, "<stdint.h>", kPublic },
  85  -  { "int_least16_t", kPrivate, "<stdint.h>", kPublic },
  86  -  { "int_least32_t", kPrivate, "<stdint.h>", kPublic },
  87  -  { "int_least64_t", kPrivate, "<stdint.h>", kPublic },
  88  -  { "uint8_t", kPrivate, "<stdint.h>", kPublic },
  89  -  { "uint16_t", kPrivate, "<stdint.h>", kPublic },
  90  -  { "uint32_t", kPrivate, "<stdint.h>", kPublic },
  91  -  { "uint64_t", kPrivate, "<stdint.h>", kPublic },
  92  -  { "uint_fast8_t", kPrivate, "<stdint.h>", kPublic },
  93  -  { "uint_fast16_t", kPrivate, "<stdint.h>", kPublic },
  94  -  { "uint_fast32_t", kPrivate, "<stdint.h>", kPublic },
  95  -  { "uint_fast64_t", kPrivate, "<stdint.h>", kPublic },
  96  -  { "uint_least8_t", kPrivate, "<stdint.h>", kPublic },
  97  -  { "uint_least16_t", kPrivate, "<stdint.h>", kPublic },
  98  -  { "uint_least32_t", kPrivate, "<stdint.h>", kPublic },
  99  -  { "uint_least64_t", kPrivate, "<stdint.h>", kPublic },
 100  -  { "intptr_t", kPrivate, "<stdint.h>", kPublic },
 101  -  { "uintptr_t", kPrivate, "<stdint.h>", kPublic },
 102  +  { "int8_t", kPrivate, "<stdint.h>", kPrivate },
 103  +  { "int16_t", kPrivate, "<stdint.h>", kPrivate },
 104  +  { "int32_t", kPrivate, "<stdint.h>", kPrivate },
 105  +  { "int64_t", kPrivate, "<stdint.h>", kPrivate },
 106  +  { "int_fast8_t", kPrivate, "<stdint.h>", kPrivate },
 107  +  { "int_fast16_t", kPrivate, "<stdint.h>", kPrivate },
 108  +  { "int_fast32_t", kPrivate, "<stdint.h>", kPrivate },
 109  +  { "int_fast64_t", kPrivate, "<stdint.h>", kPrivate },
 110  +  { "int_least8_t", kPrivate, "<stdint.h>", kPrivate },
 111  +  { "int_least16_t", kPrivate, "<stdint.h>", kPrivate },
 112  +  { "int_least32_t", kPrivate, "<stdint.h>", kPrivate },
 113  +  { "int_least64_t", kPrivate, "<stdint.h>", kPrivate },
 114  +  { "uint8_t", kPrivate, "<stdint.h>", kPrivate },
 115  +  { "uint16_t", kPrivate, "<stdint.h>", kPrivate },
 116  +  { "uint32_t", kPrivate, "<stdint.h>", kPrivate },
 117  +  { "uint64_t", kPrivate, "<stdint.h>", kPrivate },
 118  +  { "uint_fast8_t", kPrivate, "<stdint.h>", kPrivate },
 119  +  { "uint_fast16_t", kPrivate, "<stdint.h>", kPrivate },
 120  +  { "uint_fast32_t", kPrivate, "<stdint.h>", kPrivate },
 121  +  { "uint_fast64_t", kPrivate, "<stdint.h>", kPrivate },
 122  +  { "uint_least8_t", kPrivate, "<stdint.h>", kPrivate },
 123  +  { "uint_least16_t", kPrivate, "<stdint.h>", kPrivate },
 124  +  { "uint_least32_t", kPrivate, "<stdint.h>", kPrivate },
 125  +  { "uint_least64_t", kPrivate, "<stdint.h>", kPrivate },
 126  +  { "intptr_t", kPrivate, "<stdint.h>", kPrivate },
 127  +  { "uintptr_t", kPrivate, "<stdint.h>", kPrivate },
 128     { "iovec", kPrivate, "<sys/uio.h>", kPublic },
 129  -  { "itimerspec", kPrivate, "<time.h>", kPublic },
 130  +  { "itimerspec", kPrivate, "<time.h>", kPrivate },
 131     { "key_t", kPrivate, "<sys/types.h>", kPublic },
 132  -  { "L_ctermid", kPrivate, "<stdio.h>", kPublic },
 133  -  { "lconv", kPrivate, "<locale.h>", kPublic },
 134  -  { "ldiv_t", kPrivate, "<stdlib.h>", kPublic },
 135  -  { "lldiv_t", kPrivate, "<stdlib.h>", kPublic },
 136  -  { "locale_t", kPrivate, "<locale.h>", kPublic },
 137  -  { "max_align_t", kPrivate, "<stddef.h>", kPublic },
 138  -  { "mbstate_t", kPrivate, "<wchar.h>", kPublic },
 139  +  { "L_ctermid", kPrivate, "<stdio.h>", kPrivate },
 140  +  { "lconv", kPrivate, "<locale.h>", kPrivate },
 141  +  { "ldiv_t", kPrivate, "<stdlib.h>", kPrivate },
 142  +  { "lldiv_t", kPrivate, "<stdlib.h>", kPrivate },
 143  +  { "locale_t", kPrivate, "<locale.h>", kPrivate },
 144  +  { "max_align_t", kPrivate, "<stddef.h>", kPrivate },
 145  +  { "mbstate_t", kPrivate, "<wchar.h>", kPrivate },
 146     { "mcontext_t", kPrivate, "<ucontext.h>", kPublic },
 147     { "mode_t", kPrivate, "<sys/types.h>", kPublic },
 148     { "nl_item", kPrivate, "<nl_types.h>", kPublic },
 149  @@ -195,8 +195,8 @@ const IncludeMapEntry libc_symbol_map[] = {
 150     { "optind", kPrivate, "<unistd.h>", kPublic },
 151     { "optopt", kPrivate, "<unistd.h>", kPublic },
 152     { "pid_t", kPrivate, "<sys/types.h>", kPublic },
 153  -  { "posix_memalign", kPrivate, "<stdlib.h>", kPublic },
 154  -  { "printf", kPrivate, "<stdio.h>", kPublic },
 155  +  { "posix_memalign", kPrivate, "<stdlib.h>", kPrivate },
 156  +  { "printf", kPrivate, "<stdio.h>", kPrivate },
 157     { "pthread_attr_t", kPrivate, "<pthread.h>", kPublic },
 158     { "pthread_cond_t", kPrivate, "<pthread.h>", kPublic },
 159     { "pthread_condattr_t", kPrivate, "<pthread.h>", kPublic },
 160  @@ -207,7 +207,7 @@ const IncludeMapEntry libc_symbol_map[] = {
 161     { "pthread_rwlock_t", kPrivate, "<pthread.h>", kPublic },
 162     { "pthread_rwlockattr_t", kPrivate, "<pthread.h>", kPublic },
 163     { "pthread_t", kPrivate, "<pthread.h>", kPublic },
 164  -  { "ptrdiff_t", kPrivate, "<stddef.h>", kPublic },
 165  +  { "ptrdiff_t", kPrivate, "<stddef.h>", kPrivate },
 166     { "regex_t", kPrivate, "<regex.h>", kPublic },
 167     { "regmatch_t", kPrivate, "<regex.h>", kPublic },
 168     { "regoff_t", kPrivate, "<regex.h>", kPublic },
 169  @@ -238,54 +238,54 @@ const IncludeMapEntry libc_symbol_map[] = {
 170     { "SCHED_FIFO", kPrivate, "<sched.h>", kPublic },
 171     { "SCHED_OTHER", kPrivate, "<sched.h>", kPublic },
 172     { "SCHED_RR", kPrivate, "<sched.h>", kPublic },
 173  -  { "SEEK_CUR", kPrivate, "<stdio.h>", kPublic },
 174  -  { "SEEK_END", kPrivate, "<stdio.h>", kPublic },
 175  -  { "SEEK_SET", kPrivate, "<stdio.h>", kPublic },
 176  -  { "sig_atomic_t", kPrivate, "<signal.h>", kPublic },
 177  -  { "sigevent", kPrivate, "<signal.h>", kPublic },
 178  -  { "siginfo_t", kPrivate, "<signal.h>", kPublic },
 179  -  { "sigset_t", kPrivate, "<signal.h>", kPublic },
 180  -  { "sigval", kPrivate, "<signal.h>", kPublic },
 181  +  { "SEEK_CUR", kPrivate, "<stdio.h>", kPrivate },
 182  +  { "SEEK_END", kPrivate, "<stdio.h>", kPrivate },
 183  +  { "SEEK_SET", kPrivate, "<stdio.h>", kPrivate },
 184  +  { "sig_atomic_t", kPrivate, "<signal.h>", kPrivate },
 185  +  { "sigevent", kPrivate, "<signal.h>", kPrivate },
 186  +  { "siginfo_t", kPrivate, "<signal.h>", kPrivate },
 187  +  { "sigset_t", kPrivate, "<signal.h>", kPrivate },
 188  +  { "sigval", kPrivate, "<signal.h>", kPrivate },
 189     { "sockaddr", kPrivate, "<sys/socket.h>", kPublic },
 190     { "socklen_t", kPrivate, "<sys/socket.h>", kPublic },
 191     { "ssize_t", kPrivate, "<sys/types.h>", kPublic },
 192  -  { "stack_t", kPrivate, "<signal.h>", kPublic },
 193  +  { "stack_t", kPrivate, "<signal.h>", kPrivate },
 194     { "stat", kPrivate, "<sys/stat.h>", kPublic },
 195     { "suseconds_t", kPrivate, "<sys/types.h>", kPublic },
 196  -  { "time_t", kPrivate, "<time.h>", kPublic },
 197  +  { "time_t", kPrivate, "<time.h>", kPrivate },
 198     { "time_t", kPrivate, "<sys/types.h>", kPublic },
 199     { "timer_t", kPrivate, "<sys/types.h>", kPublic },
 200  -  { "timespec", kPrivate, "<time.h>", kPublic },
 201  +  { "timespec", kPrivate, "<time.h>", kPrivate },
 202     { "timeval", kPrivate, "<sys/time.h>", kPublic },  // 'canonical' location for timeval
 203     { "timeval", kPrivate, "<sys/resource.h>", kPublic },
 204     { "timeval", kPrivate, "<sys/select.h>", kPublic },
 205     { "timeval", kPrivate, "<utmpx.h>", kPublic },
 206  -  { "tm", kPrivate, "<time.h>", kPublic },
 207  +  { "tm", kPrivate, "<time.h>", kPrivate },
 208     { "u_char", kPrivate, "<sys/types.h>", kPublic },
 209     { "ucontext_t", kPrivate, "<ucontext.h>", kPublic },
 210     { "uid_t", kPrivate, "<sys/types.h>", kPublic },
 211     { "useconds_t", kPrivate, "<sys/types.h>", kPublic },
 212  -  { "wchar_t", kPrivate, "<stddef.h>", kPublic },
 213  -  { "wctrans_t", kPrivate, "<wctype.h>", kPublic },
 214  -  { "wctype_t", kPrivate, "<wctype.h>", kPublic },
 215  +  { "wchar_t", kPrivate, "<stddef.h>", kPrivate },
 216  +  { "wctrans_t", kPrivate, "<wctype.h>", kPrivate },
 217  +  { "wctype_t", kPrivate, "<wctype.h>", kPrivate },
 218     { "winsize", kPrivate, "<termios.h>", kPublic },
 219  -  { "wint_t", kPrivate, "<wchar.h>", kPublic },
 220  +  { "wint_t", kPrivate, "<wchar.h>", kPrivate },
 221     // It is unspecified if the cname headers provide ::size_t.
 222     // <locale.h> is the one header which defines NULL but not size_t.
 223  -  { "size_t", kPrivate, "<stddef.h>", kPublic },  // 'canonical' location for size_t
 224  -  { "size_t", kPrivate, "<signal.h>", kPublic },
 225  -  { "size_t", kPrivate, "<stdio.h>", kPublic },
 226  -  { "size_t", kPrivate, "<stdlib.h>", kPublic },
 227  -  { "size_t", kPrivate, "<string.h>", kPublic },
 228  -  { "size_t", kPrivate, "<time.h>", kPublic },
 229  -  { "size_t", kPrivate, "<uchar.h>", kPublic },
 230  -  { "size_t", kPrivate, "<wchar.h>", kPublic },
 231  +  { "size_t", kPrivate, "<stddef.h>", kPrivate },  // 'canonical' location for size_t
 232  +  { "size_t", kPrivate, "<signal.h>", kPrivate },
 233  +  { "size_t", kPrivate, "<stdio.h>", kPrivate },
 234  +  { "size_t", kPrivate, "<stdlib.h>", kPrivate },
 235  +  { "size_t", kPrivate, "<string.h>", kPrivate },
 236  +  { "size_t", kPrivate, "<time.h>", kPrivate },
 237  +  { "size_t", kPrivate, "<uchar.h>", kPrivate },
 238  +  { "size_t", kPrivate, "<wchar.h>", kPrivate },
 239     // Macros that can be defined in more than one file, don't have the
 240     // same __foo_defined guard that other types do, so the grep above
 241     // doesn't discover them.  Until I figure out a better way, I just
 242     // add them in by hand as I discover them.
 243  -  { "EOF", kPrivate, "<stdio.h>", kPublic },
 244  -  { "FILE", kPrivate, "<stdio.h>", kPublic },
 245  +  { "EOF", kPrivate, "<stdio.h>", kPrivate },
 246  +  { "FILE", kPrivate, "<stdio.h>", kPrivate },
 247     { "IBSHIFT", kPrivate, "<asm/termbits.h>", kPublic },
 248     { "MAP_POPULATE", kPrivate, "<sys/mman.h>", kPublic },
 249     { "MAP_POPULATE", kPrivate, "<linux/mman.h>", kPublic },
 250  @@ -293,22 +293,22 @@ const IncludeMapEntry libc_symbol_map[] = {
 251     { "MAP_STACK", kPrivate, "<linux/mman.h>", kPublic },
 252     { "MAXHOSTNAMELEN", kPrivate, "<sys/param.h>", kPublic },
 253     { "MAXHOSTNAMELEN", kPrivate, "<protocols/timed.h>", kPublic },
 254  -  { "SIGABRT", kPrivate, "<signal.h>", kPublic },
 255  -  { "SIGCHLD", kPrivate, "<signal.h>", kPublic },
 256  -  { "va_arg", kPrivate, "<stdarg.h>", kPublic },
 257  -  { "va_copy", kPrivate, "<stdarg.h>", kPublic },
 258  -  { "va_end", kPrivate, "<stdarg.h>", kPublic },
 259  -  { "va_list", kPrivate, "<stdarg.h>", kPublic },
 260  -  { "va_start", kPrivate, "<stdarg.h>", kPublic },
 261  -  { "WEOF", kPrivate, "<wchar.h>", kPublic },
 262  +  { "SIGABRT", kPrivate, "<signal.h>", kPrivate },
 263  +  { "SIGCHLD", kPrivate, "<signal.h>", kPrivate },
 264  +  { "va_arg", kPrivate, "<stdarg.h>", kPrivate },
 265  +  { "va_copy", kPrivate, "<stdarg.h>", kPrivate },
 266  +  { "va_end", kPrivate, "<stdarg.h>", kPrivate },
 267  +  { "va_list", kPrivate, "<stdarg.h>", kPrivate },
 268  +  { "va_start", kPrivate, "<stdarg.h>", kPrivate },
 269  +  { "WEOF", kPrivate, "<wchar.h>", kPrivate },
 270     // These are symbols that could be defined in either stdlib.h or
 271     // malloc.h, but we always want the stdlib location.
 272  -  { "malloc", kPrivate, "<stdlib.h>", kPublic },
 273  -  { "calloc", kPrivate, "<stdlib.h>", kPublic },
 274  -  { "realloc", kPrivate, "<stdlib.h>", kPublic },
 275  -  { "free", kPrivate, "<stdlib.h>", kPublic },
 276  +  { "malloc", kPrivate, "<stdlib.h>", kPrivate },
 277  +  { "calloc", kPrivate, "<stdlib.h>", kPrivate },
 278  +  { "realloc", kPrivate, "<stdlib.h>", kPrivate },
 279  +  { "free", kPrivate, "<stdlib.h>", kPrivate },
 280     // Entries for NULL
 281  -  { "NULL", kPrivate, "<stddef.h>", kPublic },  // 'canonical' location for NULL
 282  +  { "NULL", kPrivate, "<stddef.h>", kPrivate },  // 'canonical' location for NULL
 283     { "NULL", kPrivate, "<clocale>", kPublic },
 284     { "NULL", kPrivate, "<cstddef>", kPublic },
 285     { "NULL", kPrivate, "<cstdio>", kPublic },
 286  @@ -316,13 +316,13 @@ const IncludeMapEntry libc_symbol_map[] = {
 287     { "NULL", kPrivate, "<cstring>", kPublic },
 288     { "NULL", kPrivate, "<ctime>", kPublic },
 289     { "NULL", kPrivate, "<cwchar>", kPublic },
 290  -  { "NULL", kPrivate, "<locale.h>", kPublic },
 291  -  { "NULL", kPrivate, "<stdio.h>", kPublic },
 292  -  { "NULL", kPrivate, "<stdlib.h>", kPublic },
 293  -  { "NULL", kPrivate, "<string.h>", kPublic },
 294  -  { "NULL", kPrivate, "<time.h>", kPublic },
 295  -  { "NULL", kPrivate, "<wchar.h>", kPublic },
 296  -  { "offsetof", kPrivate, "<stddef.h>", kPublic },
 297  +  { "NULL", kPrivate, "<locale.h>", kPrivate },
 298  +  { "NULL", kPrivate, "<stdio.h>", kPrivate },
 299  +  { "NULL", kPrivate, "<stdlib.h>", kPrivate },
 300  +  { "NULL", kPrivate, "<string.h>", kPrivate },
 301  +  { "NULL", kPrivate, "<time.h>", kPrivate },
 302  +  { "NULL", kPrivate, "<wchar.h>", kPrivate },
 303  +  { "offsetof", kPrivate, "<stddef.h>", kPrivate },
 304     // Auxiliary vector entry types.
 305     { "AT_BASE", kPrivate, "<sys/auxv.h>", kPublic },
 306     { "AT_BASE_PLATFORM", kPrivate, "<sys/auxv.h>", kPublic },
 307  @@ -409,7 +409,7 @@ const IncludeMapEntry libc_include_map[] = {
 308     { "<bits/a.out.h>", kPrivate, "<a.out.h>", kPublic },
 309     { "<bits/auxv.h>", kPrivate, "<sys/auxv.h>", kPublic },
 310     { "<bits/byteswap.h>", kPrivate, "<byteswap.h>", kPublic },
 311  -  { "<bits/cmathcalls.h>", kPrivate, "<complex.h>", kPublic },
 312  +  { "<bits/cmathcalls.h>", kPrivate, "<complex.h>", kPrivate },
 313     { "<bits/confname.h>", kPrivate, "<unistd.h>", kPublic },
 314     { "<bits/dirent.h>", kPrivate, "<dirent.h>", kPublic },
 315     { "<bits/dlfcn.h>", kPrivate, "<dlfcn.h>", kPublic },
 316  @@ -417,18 +417,18 @@ const IncludeMapEntry libc_include_map[] = {
 317     { "<bits/endian.h>", kPrivate, "<endian.h>", kPublic },
 318     { "<bits/environments.h>", kPrivate, "<unistd.h>", kPublic },
 319     { "<bits/epoll.h>", kPrivate, "<sys/epoll.h>", kPublic },
 320  -  { "<bits/errno.h>", kPrivate, "<errno.h>", kPublic },
 321  +  { "<bits/errno.h>", kPrivate, "<errno.h>", kPrivate },
 322     { "<bits/error.h>", kPrivate, "<error.h>", kPublic },
 323     { "<bits/eventfd.h>", kPrivate, "<sys/eventfd.h>", kPublic },
 324     { "<bits/fcntl.h>", kPrivate, "<fcntl.h>", kPublic },
 325     { "<bits/fcntl2.h>", kPrivate, "<fcntl.h>", kPublic },
 326  -  { "<bits/fenv.h>", kPrivate, "<fenv.h>", kPublic },
 327  -  { "<bits/fenvinline.h>", kPrivate, "<fenv.h>", kPublic },
 328  -  { "<bits/huge_val.h>", kPrivate, "<math.h>", kPublic },
 329  -  { "<bits/huge_valf.h>", kPrivate, "<math.h>", kPublic },
 330  -  { "<bits/huge_vall.h>", kPrivate, "<math.h>", kPublic },
 331  +  { "<bits/fenv.h>", kPrivate, "<fenv.h>", kPrivate },
 332  +  { "<bits/fenvinline.h>", kPrivate, "<fenv.h>", kPrivate },
 333  +  { "<bits/huge_val.h>", kPrivate, "<math.h>", kPrivate },
 334  +  { "<bits/huge_valf.h>", kPrivate, "<math.h>", kPrivate },
 335  +  { "<bits/huge_vall.h>", kPrivate, "<math.h>", kPrivate },
 336     { "<bits/hwcap.h>", kPrivate, "<sys/auxv.h>", kPublic },
 337  -  { "<bits/inf.h>", kPrivate, "<math.h>", kPublic },
 338  +  { "<bits/inf.h>", kPrivate, "<math.h>", kPrivate },
 339     { "<bits/inotify.h>", kPrivate, "<sys/inotify.h>", kPublic },
 340     { "<bits/ioctl-types.h>", kPrivate, "<sys/ioctl.h>", kPublic },
 341     { "<bits/ioctls.h>", kPrivate, "<sys/ioctl.h>", kPublic },
 342  @@ -436,24 +436,24 @@ const IncludeMapEntry libc_include_map[] = {
 343     { "<bits/ipctypes.h>", kPrivate, "<sys/ipc.h>", kPublic },
 344     { "<bits/libio-ldbl.h>", kPrivate, "<libio.h>", kPublic },
 345     { "<bits/link.h>", kPrivate, "<link.h>", kPublic },
 346  -  { "<bits/locale.h>", kPrivate, "<locale.h>", kPublic },
 347  -  { "<bits/math-finite.h>", kPrivate, "<math.h>", kPublic },
 348  -  { "<bits/mathcalls.h>", kPrivate, "<math.h>", kPublic },
 349  -  { "<bits/mathdef.h>", kPrivate, "<math.h>", kPublic },
 350  -  { "<bits/mathinline.h>", kPrivate, "<math.h>", kPublic },
 351  +  { "<bits/locale.h>", kPrivate, "<locale.h>", kPrivate },
 352  +  { "<bits/math-finite.h>", kPrivate, "<math.h>", kPrivate },
 353  +  { "<bits/mathcalls.h>", kPrivate, "<math.h>", kPrivate },
 354  +  { "<bits/mathdef.h>", kPrivate, "<math.h>", kPrivate },
 355  +  { "<bits/mathinline.h>", kPrivate, "<math.h>", kPrivate },
 356     { "<bits/mman.h>", kPrivate, "<sys/mman.h>", kPublic },
 357     { "<bits/mman-shared.h>", kPrivate, "<sys/mman.h>", kPublic },
 358     { "<bits/monetary-ldbl.h>", kPrivate, "<monetary.h>", kPublic },
 359     { "<bits/mqueue.h>", kPrivate, "<mqueue.h>", kPublic },
 360     { "<bits/mqueue2.h>", kPrivate, "<mqueue.h>", kPublic },
 361     { "<bits/msq.h>", kPrivate, "<sys/msg.h>", kPublic },
 362  -  { "<bits/nan.h>", kPrivate, "<math.h>", kPublic },
 363  +  { "<bits/nan.h>", kPrivate, "<math.h>", kPrivate },
 364     { "<bits/netdb.h>", kPrivate, "<netdb.h>", kPublic },
 365     { "<bits/param.h>", kPrivate, "<sys/param.h>", kPublic },
 366     { "<bits/poll.h>", kPrivate, "<sys/poll.h>", kPrivate },
 367     { "<bits/poll2.h>", kPrivate, "<sys/poll.h>", kPrivate },
 368  -  { "<bits/posix1_lim.h>", kPrivate, "<limits.h>", kPublic },
 369  -  { "<bits/posix2_lim.h>", kPrivate, "<limits.h>", kPublic },
 370  +  { "<bits/posix1_lim.h>", kPrivate, "<limits.h>", kPrivate },
 371  +  { "<bits/posix2_lim.h>", kPrivate, "<limits.h>", kPrivate },
 372     { "<bits/posix_opt.h>", kPrivate, "<unistd.h>", kPublic },
 373     { "<bits/printf-ldbl.h>", kPrivate, "<printf.h>", kPublic },
 374     { "<bits/pthreadtypes.h>", kPrivate, "<pthread.h>", kPublic },
 375  @@ -463,17 +463,17 @@ const IncludeMapEntry libc_include_map[] = {
 376     { "<bits/select2.h>", kPrivate, "<sys/select.h>", kPublic },
 377     { "<bits/sem.h>", kPrivate, "<sys/sem.h>", kPublic },
 378     { "<bits/semaphore.h>", kPrivate, "<semaphore.h>", kPublic },
 379  -  { "<bits/setjmp.h>", kPrivate, "<setjmp.h>", kPublic },
 380  -  { "<bits/setjmp2.h>", kPrivate, "<setjmp.h>", kPublic },
 381  +  { "<bits/setjmp.h>", kPrivate, "<setjmp.h>", kPrivate },
 382  +  { "<bits/setjmp2.h>", kPrivate, "<setjmp.h>", kPrivate },
 383     { "<bits/shm.h>", kPrivate, "<sys/shm.h>", kPublic },
 384  -  { "<bits/sigaction.h>", kPrivate, "<signal.h>", kPublic },
 385  -  { "<bits/sigcontext.h>", kPrivate, "<signal.h>", kPublic },
 386  -  { "<bits/siginfo.h>", kPrivate, "<signal.h>", kPublic },
 387  -  { "<bits/signum.h>", kPrivate, "<signal.h>", kPublic },
 388  -  { "<bits/signum-arch.h>", kPrivate, "<signal.h>", kPublic },
 389  -  { "<bits/sigset.h>", kPrivate, "<signal.h>", kPublic },
 390  -  { "<bits/sigstack.h>", kPrivate, "<signal.h>", kPublic },
 391  -  { "<bits/sigthread.h>", kPrivate, "<signal.h>", kPublic },
 392  +  { "<bits/sigaction.h>", kPrivate, "<signal.h>", kPrivate },
 393  +  { "<bits/sigcontext.h>", kPrivate, "<signal.h>", kPrivate },
 394  +  { "<bits/siginfo.h>", kPrivate, "<signal.h>", kPrivate },
 395  +  { "<bits/signum.h>", kPrivate, "<signal.h>", kPrivate },
 396  +  { "<bits/signum-arch.h>", kPrivate, "<signal.h>", kPrivate },
 397  +  { "<bits/sigset.h>", kPrivate, "<signal.h>", kPrivate },
 398  +  { "<bits/sigstack.h>", kPrivate, "<signal.h>", kPrivate },
 399  +  { "<bits/sigthread.h>", kPrivate, "<signal.h>", kPrivate },
 400     { "<bits/sockaddr.h>", kPrivate, "<sys/un.h>", kPublic },
 401     { "<bits/socket.h>", kPrivate, "<sys/socket.h>", kPublic },
 402     { "<bits/socket2.h>", kPrivate, "<sys/socket.h>", kPublic },
 403  @@ -483,22 +483,22 @@ const IncludeMapEntry libc_include_map[] = {
 404     { "<bits/statfs.h>", kPrivate, "<sys/statfs.h>", kPublic },
 405     { "<bits/statvfs.h>", kPrivate, "<sys/statvfs.h>", kPublic },
 406     { "<bits/statx-generic.h>", kPrivate, "<sys/stat.h>", kPublic },
 407  -  { "<bits/stdio-ldbl.h>", kPrivate, "<stdio.h>", kPublic },
 408  +  { "<bits/stdio-ldbl.h>", kPrivate, "<stdio.h>", kPrivate },
 409     { "<bits/stdio-lock.h>", kPrivate, "<libio.h>", kPublic },
 410  -  { "<bits/stdio.h>", kPrivate, "<stdio.h>", kPublic },
 411  -  { "<bits/stdio2.h>", kPrivate, "<stdio.h>", kPublic },
 412  -  { "<bits/stdio_lim.h>", kPrivate, "<stdio.h>", kPublic },
 413  -  { "<bits/stdlib-bsearch.h>", kPrivate, "<stdlib.h>", kPublic },
 414  -  { "<bits/stdlib-float.h>", kPrivate, "<stdlib.h>", kPublic },
 415  -  { "<bits/stdlib-ldbl.h>", kPrivate, "<stdlib.h>", kPublic },
 416  -  { "<bits/stdlib.h>", kPrivate, "<stdlib.h>", kPublic },
 417  -  { "<bits/string.h>", kPrivate, "<string.h>", kPublic },
 418  -  { "<bits/string2.h>", kPrivate, "<string.h>", kPublic },
 419  -  { "<bits/string3.h>", kPrivate, "<string.h>", kPublic },
 420  +  { "<bits/stdio.h>", kPrivate, "<stdio.h>", kPrivate },
 421  +  { "<bits/stdio2.h>", kPrivate, "<stdio.h>", kPrivate },
 422  +  { "<bits/stdio_lim.h>", kPrivate, "<stdio.h>", kPrivate },
 423  +  { "<bits/stdlib-bsearch.h>", kPrivate, "<stdlib.h>", kPrivate },
 424  +  { "<bits/stdlib-float.h>", kPrivate, "<stdlib.h>", kPrivate },
 425  +  { "<bits/stdlib-ldbl.h>", kPrivate, "<stdlib.h>", kPrivate },
 426  +  { "<bits/stdlib.h>", kPrivate, "<stdlib.h>", kPrivate },
 427  +  { "<bits/string.h>", kPrivate, "<string.h>", kPrivate },
 428  +  { "<bits/string2.h>", kPrivate, "<string.h>", kPrivate },
 429  +  { "<bits/string3.h>", kPrivate, "<string.h>", kPrivate },
 430     { "<bits/stropts.h>", kPrivate, "<stropts.h>", kPublic },
 431     { "<bits/struct_stat.h>", kPrivate, "<sys/stat.h>", kPublic },
 432     { "<bits/struct_stat.h>", kPrivate, "<ftw.h>", kPublic },
 433  -  { "<bits/sys_errlist.h>", kPrivate, "<stdio.h>", kPublic },
 434  +  { "<bits/sys_errlist.h>", kPrivate, "<stdio.h>", kPrivate },
 435     { "<bits/syscall.h>", kPrivate, "<sys/syscall.h>", kPublic },
 436     { "<bits/sysctl.h>", kPrivate, "<sys/sysctl.h>", kPublic },
 437     { "<bits/syslog-ldbl.h>", kPrivate, "<sys/syslog.h>", kPrivate },
 438  @@ -515,12 +515,12 @@ const IncludeMapEntry libc_include_map[] = {
 439     { "<bits/termios-struct.h>", kPrivate, "<termios.h>", kPublic },
 440     { "<bits/termios-tcflow.h>", kPrivate, "<termios.h>", kPublic },
 441     { "<bits/termios.h>", kPrivate, "<termios.h>", kPublic },
 442  -  { "<bits/time.h>", kPrivate, "<time.h>", kPublic },
 443  +  { "<bits/time.h>", kPrivate, "<time.h>", kPrivate },
 444     { "<bits/time.h>", kPrivate, "<sys/time.h>", kPublic },
 445     { "<bits/timerfd.h>", kPrivate, "<sys/timerfd.h>", kPublic },
 446     { "<bits/timex.h>", kPrivate, "<sys/timex.h>", kPublic },
 447     { "<bits/types.h>", kPrivate, "<sys/types.h>", kPublic },
 448  -  { "<bits/types/siginfo_t.h>", kPrivate, "<signal.h>", kPublic },
 449  +  { "<bits/types/siginfo_t.h>", kPrivate, "<signal.h>", kPrivate },
 450     { "<bits/types/siginfo_t.h>", kPrivate, "<sys/wait.h>", kPublic },
 451     { "<bits/types/struct_rusage.h>", kPrivate, "<sys/resource.h>", kPublic },
 452     { "<bits/types/struct_sched_param.h>", kPrivate, "<sched.h>", kPublic },
 453  @@ -532,11 +532,11 @@ const IncludeMapEntry libc_include_map[] = {
 454     { "<bits/utsname.h>", kPrivate, "<sys/utsname.h>", kPublic },
 455     { "<bits/waitflags.h>", kPrivate, "<sys/wait.h>", kPublic },
 456     { "<bits/waitstatus.h>", kPrivate, "<sys/wait.h>", kPublic },
 457  -  { "<bits/wchar-ldbl.h>", kPrivate, "<wchar.h>", kPublic },
 458  -  { "<bits/wchar.h>", kPrivate, "<wchar.h>", kPublic },
 459  -  { "<bits/wchar2.h>", kPrivate, "<wchar.h>", kPublic },
 460  -  { "<bits/wordsize.h>", kPrivate, "<limits.h>", kPublic },
 461  -  { "<bits/xopen_lim.h>", kPrivate, "<limits.h>", kPublic },
 462  +  { "<bits/wchar-ldbl.h>", kPrivate, "<wchar.h>", kPrivate },
 463  +  { "<bits/wchar.h>", kPrivate, "<wchar.h>", kPrivate },
 464  +  { "<bits/wchar2.h>", kPrivate, "<wchar.h>", kPrivate },
 465  +  { "<bits/wordsize.h>", kPrivate, "<limits.h>", kPrivate },
 466  +  { "<bits/xopen_lim.h>", kPrivate, "<limits.h>", kPrivate },
 467     { "<bits/xtitypes.h>", kPrivate, "<stropts.h>", kPublic },
 468     // Sometimes libc tells you what mapping to do via an '#error':
 469     // # error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
 470  @@ -546,7 +546,7 @@ const IncludeMapEntry libc_include_map[] = {
 471     { "<bits/a.out.h>", kPrivate, "<a.out.h>", kPublic },
 472     { "<bits/byteswap-16.h>", kPrivate, "<byteswap.h>", kPublic },
 473     { "<bits/byteswap.h>", kPrivate, "<byteswap.h>", kPublic },
 474  -  { "<bits/cmathcalls.h>", kPrivate, "<complex.h>", kPublic },
 475  +  { "<bits/cmathcalls.h>", kPrivate, "<complex.h>", kPrivate },
 476     { "<bits/confname.h>", kPrivate, "<unistd.h>", kPublic },
 477     { "<bits/dirent.h>", kPrivate, "<dirent.h>", kPublic },
 478     { "<bits/dlfcn.h>", kPrivate, "<dlfcn.h>", kPublic },
 479  @@ -556,38 +556,38 @@ const IncludeMapEntry libc_include_map[] = {
 480     { "<bits/eventfd.h>", kPrivate, "<sys/eventfd.h>", kPublic },
 481     { "<bits/fcntl-linux.h>", kPrivate, "<fcntl.h>", kPublic },
 482     { "<bits/fcntl.h>", kPrivate, "<fcntl.h>", kPublic },
 483  -  { "<bits/fenv.h>", kPrivate, "<fenv.h>", kPublic },
 484  -  { "<bits/huge_val.h>", kPrivate, "<math.h>", kPublic },
 485  -  { "<bits/huge_valf.h>", kPrivate, "<math.h>", kPublic },
 486  -  { "<bits/huge_vall.h>", kPrivate, "<math.h>", kPublic },
 487  +  { "<bits/fenv.h>", kPrivate, "<fenv.h>", kPrivate },
 488  +  { "<bits/huge_val.h>", kPrivate, "<math.h>", kPrivate },
 489  +  { "<bits/huge_valf.h>", kPrivate, "<math.h>", kPrivate },
 490  +  { "<bits/huge_vall.h>", kPrivate, "<math.h>", kPrivate },
 491     { "<bits/in.h>", kPrivate, "<netinet/in.h>", kPublic },
 492  -  { "<bits/inf.h>", kPrivate, "<math.h>", kPublic },
 493  +  { "<bits/inf.h>", kPrivate, "<math.h>", kPrivate },
 494     { "<bits/inotify.h>", kPrivate, "<sys/inotify.h>", kPublic },
 495     { "<bits/ioctl-types.h>", kPrivate, "<sys/ioctl.h>", kPublic },
 496     { "<bits/ioctls.h>", kPrivate, "<sys/ioctl.h>", kPublic },
 497     { "<bits/ipc.h>", kPrivate, "<sys/ipc.h>", kPublic },
 498     { "<bits/ipctypes.h>", kPrivate, "<sys/ipc.h>", kPublic },
 499  -  { "<bits/locale.h>", kPrivate, "<locale.h>", kPublic },
 500  -  { "<bits/math-finite.h>", kPrivate, "<math.h>", kPublic },
 501  -  { "<bits/mathdef.h>", kPrivate, "<math.h>", kPublic },
 502  -  { "<bits/mathinline.h>", kPrivate, "<math.h>", kPublic },
 503  +  { "<bits/locale.h>", kPrivate, "<locale.h>", kPrivate },
 504  +  { "<bits/math-finite.h>", kPrivate, "<math.h>", kPrivate },
 505  +  { "<bits/mathdef.h>", kPrivate, "<math.h>", kPrivate },
 506  +  { "<bits/mathinline.h>", kPrivate, "<math.h>", kPrivate },
 507     { "<bits/mman-linux.h>", kPrivate, "<sys/mman.h>", kPublic },
 508     { "<bits/mman.h>", kPrivate, "<sys/mman.h>", kPublic },
 509     { "<bits/mqueue.h>", kPrivate, "<mqueue.h>", kPublic },
 510     { "<bits/msq.h>", kPrivate, "<sys/msg.h>", kPublic },
 511  -  { "<bits/nan.h>", kPrivate, "<math.h>", kPublic },
 512  +  { "<bits/nan.h>", kPrivate, "<math.h>", kPrivate },
 513     { "<bits/param.h>", kPrivate, "<sys/param.h>", kPublic },
 514     { "<bits/poll.h>", kPrivate, "<sys/poll.h>", kPrivate },
 515     { "<bits/predefs.h>", kPrivate, "<features.h>", kPublic },
 516     { "<bits/resource.h>", kPrivate, "<sys/resource.h>", kPublic },
 517     { "<bits/select.h>", kPrivate, "<sys/select.h>", kPublic },
 518     { "<bits/semaphore.h>", kPrivate, "<semaphore.h>", kPublic },
 519  -  { "<bits/sigcontext.h>", kPrivate, "<signal.h>", kPublic },
 520  +  { "<bits/sigcontext.h>", kPrivate, "<signal.h>", kPrivate },
 521     { "<bits/signalfd.h>", kPrivate, "<sys/signalfd.h>", kPublic },
 522  -  { "<bits/stdlib-float.h>", kPrivate, "<stdlib.h>", kPublic },
 523  -  { "<bits/string.h>", kPrivate, "<string.h>", kPublic },
 524  -  { "<bits/string2.h>", kPrivate, "<string.h>", kPublic },
 525  -  { "<bits/string3.h>", kPrivate, "<string.h>", kPublic },
 526  +  { "<bits/stdlib-float.h>", kPrivate, "<stdlib.h>", kPrivate },
 527  +  { "<bits/string.h>", kPrivate, "<string.h>", kPrivate },
 528  +  { "<bits/string2.h>", kPrivate, "<string.h>", kPrivate },
 529  +  { "<bits/string3.h>", kPrivate, "<string.h>", kPrivate },
 530     { "<bits/timerfd.h>", kPrivate, "<sys/timerfd.h>", kPublic },
 531     { "<bits/typesizes.h>", kPrivate, "<sys/types.h>", kPublic },
 532     // Top-level #includes that just forward to another file:
 533  @@ -599,13 +599,13 @@ const IncludeMapEntry libc_include_map[] = {
 534     // on the POSIX.1-2024 list, I just choose the top-level one.
 535     { "<sys/aio.h>", kPrivate, "<aio.h>", kPublic },
 536     { "<sys/dirent.h>", kPrivate, "<dirent.h>", kPublic },
 537  -  { "<sys/errno.h>", kPrivate, "<errno.h>", kPublic },
 538  +  { "<sys/errno.h>", kPrivate, "<errno.h>", kPrivate },
 539     { "<sys/fcntl.h>", kPrivate, "<fcntl.h>", kPublic },
 540     { "<sys/poll.h>", kPrivate, "<poll.h>", kPublic },
 541     { "<sys/semaphore.h>", kPrivate, "<semaphore.h>", kPublic },
 542  -  { "<sys/signal.h>", kPrivate, "<signal.h>", kPublic },
 543  +  { "<sys/signal.h>", kPrivate, "<signal.h>", kPrivate },
 544     { "<sys/spawn.h>", kPrivate, "<spawn.h>", kPublic },
 545  -  { "<sys/stdio.h>", kPrivate, "<stdio.h>", kPublic },
 546  +  { "<sys/stdio.h>", kPrivate, "<stdio.h>", kPrivate },
 547     { "<sys/syslog.h>", kPrivate, "<syslog.h>", kPublic },
 548     { "<sys/termios.h>", kPrivate, "<termios.h>", kPublic },
 549     { "<sys/unistd.h>", kPrivate, "<unistd.h>", kPublic },
 550  @@ -625,21 +625,21 @@ const IncludeMapEntry libc_include_map[] = {
 551     { "<asm/unistd_64.h>", kPrivate, "<asm/unistd.h>", kPrivate },
 552     // I don't know what grep would have found these.  I found them
 553     // via user report.
 554  -  { "<asm/errno.h>", kPrivate, "<errno.h>", kPublic },
 555  -  { "<asm/errno-base.h>", kPrivate, "<errno.h>", kPublic },
 556  +  { "<asm/errno.h>", kPrivate, "<errno.h>", kPrivate },
 557  +  { "<asm/errno-base.h>", kPrivate, "<errno.h>", kPrivate },
 558     { "<asm/ptrace-abi.h>", kPrivate, "<asm/ptrace.h>", kPublic },
 559     { "<asm/unistd.h>", kPrivate, "<sys/syscall.h>", kPublic },
 560  -  { "<linux/limits.h>", kPrivate, "<limits.h>", kPublic },   // PATH_MAX
 561  +  { "<linux/limits.h>", kPrivate, "<limits.h>", kPrivate },   // PATH_MAX
 562     { "<linux/prctl.h>", kPrivate, "<sys/prctl.h>", kPublic },
 563     { "<sys/ucontext.h>", kPrivate, "<ucontext.h>", kPublic },
 564     // System headers available on AIX, BSD, Solaris and other Unix systems
 565     { "<sys/dtrace.h>", kPrivate, "<dtrace.h>", kPublic },
 566     { "<sys/paths.h>", kPrivate, "<paths.h>", kPublic },
 567  -  { "<sys/syslimits.h>", kPrivate, "<limits.h>", kPublic },
 568  +  { "<sys/syslimits.h>", kPrivate, "<limits.h>", kPrivate },
 569     { "<sys/ttycom.h>", kPrivate, "<sys/ioctl.h>", kPublic },
 570     { "<sys/ustat.h>", kPrivate, "<ustat.h>", kPublic },
 571     // Exports guaranteed by the C standard
 572  -  { "<stdint.h>", kPublic, "<inttypes.h>", kPublic },
 573  +  { "<cstdint>", kPublic, "<cinttypes>", kPublic },
 574   };
 575   
 576   const IncludeMapEntry stdlib_c_include_map[] = {
 577  @@ -658,32 +658,32 @@ const IncludeMapEntry stdlib_c_include_map[] = {
 578     // https://github.com/cplusplus/draft/blob/c+%2B20/source/lib-intro.tex
 579     //
 580     // $ curl -s -N https://raw.githubusercontent.com/cplusplus/draft/c%2B%2B20/source/lib-intro.tex | sed -n '/begin{multicolfloattable}.*{headers.cpp.c}/,/end{multicolfloattable}/p' | grep tcode | perl -nle 'm/tcode{<c(.*)>}/ && print qq@  { "<$1.h>", kPublic, "<c$1>", kPublic },@' | sort
 581  -  { "<assert.h>", kPublic, "<cassert>", kPublic },
 582  -  { "<complex.h>", kPublic, "<ccomplex>", kPublic },
 583  -  { "<ctype.h>", kPublic, "<cctype>", kPublic },
 584  -  { "<errno.h>", kPublic, "<cerrno>", kPublic },
 585  -  { "<fenv.h>", kPublic, "<cfenv>", kPublic },
 586  +  { "<assert.h>", kPrivate, "<cassert>", kPublic },
 587  +  { "<complex.h>", kPrivate, "<ccomplex>", kPublic },
 588  +  { "<ctype.h>", kPrivate, "<cctype>", kPublic },
 589  +  { "<errno.h>", kPrivate, "<cerrno>", kPublic },
 590  +  { "<fenv.h>", kPrivate, "<cfenv>", kPublic },
 591     { "<float.h>", kPublic, "<cfloat>", kPublic },
 592  -  { "<inttypes.h>", kPublic, "<cinttypes>", kPublic },
 593  -  { "<iso646.h>", kPublic, "<ciso646>", kPublic },
 594  -  { "<limits.h>", kPublic, "<climits>", kPublic },
 595  -  { "<locale.h>", kPublic, "<clocale>", kPublic },
 596  -  { "<math.h>", kPublic, "<cmath>", kPublic },
 597  -  { "<setjmp.h>", kPublic, "<csetjmp>", kPublic },
 598  -  { "<signal.h>", kPublic, "<csignal>", kPublic },
 599  -  { "<stdalign.h>", kPublic, "<cstdalign>", kPublic },
 600  -  { "<stdarg.h>", kPublic, "<cstdarg>", kPublic },
 601  -  { "<stdbool.h>", kPublic, "<cstdbool>", kPublic },
 602  -  { "<stddef.h>", kPublic, "<cstddef>", kPublic },
 603  -  { "<stdint.h>", kPublic, "<cstdint>", kPublic },
 604  -  { "<stdio.h>", kPublic, "<cstdio>", kPublic },
 605  -  { "<stdlib.h>", kPublic, "<cstdlib>", kPublic },
 606  -  { "<string.h>", kPublic, "<cstring>", kPublic },
 607  -  { "<tgmath.h>", kPublic, "<ctgmath>", kPublic },
 608  -  { "<time.h>", kPublic, "<ctime>", kPublic },
 609  -  { "<uchar.h>", kPublic, "<cuchar>", kPublic },
 610  -  { "<wchar.h>", kPublic, "<cwchar>", kPublic },
 611  -  { "<wctype.h>", kPublic, "<cwctype>", kPublic },
 612  +  { "<inttypes.h>", kPrivate, "<cinttypes>", kPublic },
 613  +  { "<iso646.h>", kPrivate, "<ciso646>", kPublic },
 614  +  { "<limits.h>", kPrivate, "<climits>", kPublic },
 615  +  { "<locale.h>", kPrivate, "<clocale>", kPublic },
 616  +  { "<math.h>", kPrivate, "<cmath>", kPublic },
 617  +  { "<setjmp.h>", kPrivate, "<csetjmp>", kPublic },
 618  +  { "<signal.h>", kPrivate, "<csignal>", kPublic },
 619  +  { "<stdalign.h>", kPrivate, "<cstdalign>", kPublic },
 620  +  { "<stdarg.h>", kPrivate, "<cstdarg>", kPublic },
 621  +  { "<stdbool.h>", kPrivate, "<cstdbool>", kPublic },
 622  +  { "<stddef.h>", kPrivate, "<cstddef>", kPublic },
 623  +  { "<stdint.h>", kPrivate, "<cstdint>", kPublic },
 624  +  { "<stdio.h>", kPrivate, "<cstdio>", kPublic },
 625  +  { "<stdlib.h>", kPrivate, "<cstdlib>", kPublic },
 626  +  { "<string.h>", kPrivate, "<cstring>", kPublic },
 627  +  { "<tgmath.h>", kPrivate, "<ctgmath>", kPublic },
 628  +  { "<time.h>", kPrivate, "<ctime>", kPublic },
 629  +  { "<uchar.h>", kPrivate, "<cuchar>", kPublic },
 630  +  { "<wchar.h>", kPrivate, "<cwchar>", kPublic },
 631  +  { "<wctype.h>", kPrivate, "<cwctype>", kPublic },
 632   };
 633   
 634   const char* stdlib_cpp_public_headers[] = {
 635