io.h - blind - suckless command-line video editing utility
 (HTM) git clone git://git.suckless.org/blind
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       io.h (2028B)
       ---
            1 /* See LICENSE file for copyright and license details. */
            2 #include <fcntl.h>
            3 #include <errno.h>
            4 
            5 #if defined(POSIX_FADV_SEQUENTIAL)
            6 # define fadvise_sequential(...)  posix_fadvise(__VA_ARGS__, POSIX_FADV_SEQUENTIAL)
            7 #else
            8 # define fadvise_sequential(...)
            9 #endif
           10 
           11 #if defined(POSIX_FADV_RANDOM)
           12 # define fadvise_random(...)  posix_fadvise(__VA_ARGS__, POSIX_FADV_RANDOM)
           13 #else
           14 # define fadvise_random(...)
           15 #endif
           16 
           17 #define ewriteall(...)     enwriteall(1, __VA_ARGS__)
           18 #define ereadall(...)      enreadall(1, __VA_ARGS__)
           19 #define epwriteall(...)    enpwriteall(1, __VA_ARGS__)
           20 #define ewritezeroes(...)  enwritezeroes(1, __VA_ARGS__)
           21 #define egetfile(...)      engetfile(1, __VA_ARGS__)
           22 
           23 int writeall(int fd, const void *buf, size_t n);
           24 
           25 static inline void
           26 enwriteall(int status, int fd, const void *buf, size_t n, const char *fname)
           27 {
           28         if (writeall(fd, buf, n))
           29                 enprintf(status, "write %s:", fname);
           30 }
           31 
           32 ssize_t readall(int fd, void *buf, size_t n);
           33 
           34 static inline size_t
           35 enreadall(int status, int fd, void *buf, size_t n, const char *fname)
           36 {
           37         ssize_t r = readall(fd, buf, n);
           38         if (r < 0)
           39                 enprintf(status, "read %s:", fname);
           40         return (size_t)r;
           41 }
           42 
           43 int pwriteall(int fd, const void *buf, size_t n, off_t ptr);
           44 
           45 static inline void
           46 enpwriteall(int status, int fd, const void *buf, size_t n, off_t ptr, const char *fname)
           47 {
           48         if (pwriteall(fd, buf, n, ptr))
           49                 enprintf(status, "pwrite %s:", fname);
           50 }
           51 
           52 int writezeroes(int fd, const void *buf, size_t bufsize, size_t n);
           53 
           54 static inline void
           55 enwritezeroes(int status, int fd, const void *buf, size_t bufsize, size_t n, const char *fname)
           56 {
           57         if (writezeroes(fd, buf, bufsize, n))
           58                 enprintf(status, "write %s:", fname);
           59 }
           60 
           61 int getfile(int fd, void *bufp, size_t *restrict ptrp, size_t *restrict sizep);
           62 
           63 static inline void
           64 engetfile(int status, int fd, void *bufp, size_t *restrict ptrp,
           65           size_t *restrict sizep, const char *fname)
           66 {
           67         if (getfile(fd, bufp, ptrp, sizep)) {
           68                 if (errno == ENOMEM)
           69                         enprintf(status, "realloc:");
           70                 else
           71                         enprintf(status, "read %s:", fname);
           72         }
           73 }