]> git.proxmox.com Git - mirror_lxcfs.git/commitdiff
macro.h: add strnprintf macro
authorAlexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
Wed, 30 Nov 2022 22:57:37 +0000 (23:57 +0100)
committerAlexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
Wed, 30 Nov 2022 22:58:56 +0000 (23:58 +0100)
Stolen from LXC

Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
src/macro.h

index 36f23924ae49c1890bfa5f7ff99d035ca2b0edb7..9e2808ba096494ccbe5112ed9f6907952eb7e9e3 100644 (file)
                                    ? 20          \
                                    : sizeof(int[-2 * (sizeof(type) > 8)])))
 
+#define strnprintf(buf, buf_size, ...)                                                    \
+       ({                                                                                \
+               int __ret_strnprintf;                                                     \
+               __ret_strnprintf = snprintf(buf, buf_size, ##__VA_ARGS__);                \
+               if (__ret_strnprintf < 0 || (size_t)__ret_strnprintf >= (size_t)buf_size) \
+                       __ret_strnprintf = ret_errno(EIO);                                \
+               __ret_strnprintf;                                                         \
+       })
+
 #define move_ptr(ptr)                                 \
        ({                                            \
                __typeof__(ptr) __internal_ptr__ = (ptr); \