blind

suckless command-line video editing utility
git clone git://git.suckless.org/blind
Log | Files | Refs | README | LICENSE

fshut.h (798B)


      1 /* See LICENSE file for copyright and license details. */
      2 #include <stdio.h>
      3 
      4 #define efshut(...) enfshut(1, __VA_ARGS__)
      5 
      6 static inline int
      7 fshut(FILE *fp, const char *fname)
      8 {
      9 	int ret = 0;
     10 
     11         /* fflush() is undefined for input streams by ISO C,
     12          * but not POSIX 2008 if you ignore ISO C overrides.
     13          * Leave it unchecked and rely on the following
     14          * functions to detect errors.
     15          */
     16         fflush(fp);
     17 
     18         if (ferror(fp) && !ret) {
     19         	weprintf("ferror %s:", fname);
     20                 ret = 1;
     21         }
     22 
     23         if (fclose(fp) && !ret) {
     24                 weprintf("fclose %s:", fname);
     25 		ret = 1;
     26 	}
     27 
     28         return ret;
     29 }
     30 
     31 static inline void
     32 enfshut(int status, FILE *fp, const char *fname)
     33 {
     34  	if (fshut(fp, fname))
     35                 exit(status);
     36 }