Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) #include <linux/build_bug.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #include <linux/errno.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) #include <linux/errname.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #include <linux/kernel.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * Ensure these tables do not accidentally become gigantic if some
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  * huge errno makes it in. On most architectures, the first table will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  * only have about 140 entries, but mips and parisc have more sparsely
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  * allocated errnos (with EHWPOISON = 257 on parisc, and EDQUOT = 1133
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * on mips), so this wastes a bit of space on those - though we
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  * special case the EDQUOT case.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #define E(err) [err + BUILD_BUG_ON_ZERO(err <= 0 || err > 300)] = "-" #err
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) static const char *names_0[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	E(E2BIG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	E(EACCES),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	E(EADDRINUSE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	E(EADDRNOTAVAIL),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	E(EADV),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	E(EAFNOSUPPORT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	E(EALREADY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	E(EBADE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	E(EBADF),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	E(EBADFD),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	E(EBADMSG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	E(EBADR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	E(EBADRQC),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	E(EBADSLT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	E(EBFONT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	E(EBUSY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #ifdef ECANCELLED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	E(ECANCELLED),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	E(ECHILD),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	E(ECHRNG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	E(ECOMM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	E(ECONNABORTED),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	E(ECONNRESET),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	E(EDEADLOCK),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	E(EDESTADDRREQ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	E(EDOM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	E(EDOTDOT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #ifndef CONFIG_MIPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	E(EDQUOT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	E(EEXIST),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	E(EFAULT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	E(EFBIG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	E(EHOSTDOWN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	E(EHOSTUNREACH),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	E(EHWPOISON),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	E(EIDRM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	E(EILSEQ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #ifdef EINIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	E(EINIT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	E(EINPROGRESS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	E(EINTR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	E(EINVAL),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	E(EIO),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	E(EISCONN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	E(EISDIR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	E(EISNAM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	E(EKEYEXPIRED),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	E(EKEYREJECTED),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	E(EKEYREVOKED),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	E(EL2HLT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	E(EL2NSYNC),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	E(EL3HLT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	E(EL3RST),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	E(ELIBACC),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	E(ELIBBAD),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	E(ELIBEXEC),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	E(ELIBMAX),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	E(ELIBSCN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	E(ELNRNG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	E(ELOOP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	E(EMEDIUMTYPE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	E(EMFILE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	E(EMLINK),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	E(EMSGSIZE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	E(EMULTIHOP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	E(ENAMETOOLONG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	E(ENAVAIL),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	E(ENETDOWN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	E(ENETRESET),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	E(ENETUNREACH),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	E(ENFILE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	E(ENOANO),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	E(ENOBUFS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	E(ENOCSI),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	E(ENODATA),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	E(ENODEV),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	E(ENOENT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	E(ENOEXEC),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	E(ENOKEY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	E(ENOLCK),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	E(ENOLINK),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	E(ENOMEDIUM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	E(ENOMEM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	E(ENOMSG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	E(ENONET),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	E(ENOPKG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	E(ENOPROTOOPT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	E(ENOSPC),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	E(ENOSR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	E(ENOSTR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #ifdef ENOSYM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	E(ENOSYM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	E(ENOSYS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	E(ENOTBLK),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	E(ENOTCONN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	E(ENOTDIR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	E(ENOTEMPTY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	E(ENOTNAM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	E(ENOTRECOVERABLE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	E(ENOTSOCK),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	E(ENOTTY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	E(ENOTUNIQ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	E(ENXIO),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	E(EOPNOTSUPP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	E(EOVERFLOW),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	E(EOWNERDEAD),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	E(EPERM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	E(EPFNOSUPPORT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	E(EPIPE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #ifdef EPROCLIM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	E(EPROCLIM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	E(EPROTO),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	E(EPROTONOSUPPORT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	E(EPROTOTYPE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 	E(ERANGE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	E(EREMCHG),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #ifdef EREMDEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	E(EREMDEV),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	E(EREMOTE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	E(EREMOTEIO),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #ifdef EREMOTERELEASE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	E(EREMOTERELEASE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	E(ERESTART),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	E(ERFKILL),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	E(EROFS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #ifdef ERREMOTE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 	E(ERREMOTE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	E(ESHUTDOWN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	E(ESOCKTNOSUPPORT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	E(ESPIPE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	E(ESRCH),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	E(ESRMNT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	E(ESTALE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	E(ESTRPIPE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	E(ETIME),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	E(ETIMEDOUT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	E(ETOOMANYREFS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	E(ETXTBSY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	E(EUCLEAN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	E(EUNATCH),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	E(EUSERS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	E(EXDEV),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 	E(EXFULL),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	E(ECANCELED), /* ECANCELLED */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 	E(EAGAIN), /* EWOULDBLOCK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	E(ECONNREFUSED), /* EREFUSED */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	E(EDEADLK), /* EDEADLOCK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) #undef E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) #define E(err) [err - 512 + BUILD_BUG_ON_ZERO(err < 512 || err > 550)] = "-" #err
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) static const char *names_512[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	E(ERESTARTSYS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	E(ERESTARTNOINTR),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	E(ERESTARTNOHAND),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	E(ENOIOCTLCMD),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	E(ERESTART_RESTARTBLOCK),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	E(EPROBE_DEFER),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	E(EOPENSTALE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	E(ENOPARAM),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	E(EBADHANDLE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	E(ENOTSYNC),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 	E(EBADCOOKIE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 	E(ENOTSUPP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 	E(ETOOSMALL),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	E(ESERVERFAULT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	E(EBADTYPE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	E(EJUKEBOX),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	E(EIOCBQUEUED),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	E(ERECALLCONFLICT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) #undef E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) static const char *__errname(unsigned err)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 	if (err < ARRAY_SIZE(names_0))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 		return names_0[err];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 	if (err >= 512 && err - 512 < ARRAY_SIZE(names_512))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 		return names_512[err - 512];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 	/* But why? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 	if (IS_ENABLED(CONFIG_MIPS) && err == EDQUOT) /* 1133 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 		return "-EDQUOT";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	return NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)  * errname(EIO) -> "EIO"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)  * errname(-EIO) -> "-EIO"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) const char *errname(int err)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	const char *name = __errname(abs(err));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 	if (!name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 		return NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	return err > 0 ? name + 1 : name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) }