=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/unifdef/unifdef.c,v retrieving revision 1.21 retrieving revision 1.22 diff -c -r1.21 -r1.22 *** src/usr.bin/unifdef/unifdef.c 2015/10/03 20:12:53 1.21 --- src/usr.bin/unifdef/unifdef.c 2015/10/05 06:54:59 1.22 *************** *** 43,53 **** * it possible to handle all "dodgy" directives correctly. */ ! #include "unifdef.h" static const char copyright[] = #include "version.h" ! "@(#) $Author: tedu $\n" "@(#) $URL: http://dotat.at/prog/unifdef $\n" ; --- 43,62 ---- * it possible to handle all "dodgy" directives correctly. */ ! #include + #include + #include + #include + #include + #include + #include + #include + #include + static const char copyright[] = #include "version.h" ! "@(#) $Author: deraadt $\n" "@(#) $URL: http://dotat.at/prog/unifdef $\n" ; *************** *** 243,248 **** --- 252,258 ---- static void usage(void); static void version(void); static const char *xstrdup(const char *, const char *); + static FILE * mktempmode(char *tmp, int mode); #define endsym(c) (!isalnum((unsigned char)c) && c != '_') *************** *** 384,390 **** if (ifn == NULL || strcmp(ifn, "-") == 0) { filename = "[stdin]"; linefile = NULL; ! input = fbinmode(stdin); } else { filename = ifn; linefile = ifn; --- 394,400 ---- if (ifn == NULL || strcmp(ifn, "-") == 0) { filename = "[stdin]"; linefile = NULL; ! input = stdin; } else { filename = ifn; linefile = ifn; *************** *** 393,399 **** err(2, "can't open %s", ifn); } if (strcmp(ofn, "-") == 0) { ! output = fbinmode(stdout); process(); return; } --- 403,409 ---- err(2, "can't open %s", ifn); } if (strcmp(ofn, "-") == 0) { ! output = stdout; process(); return; } *************** *** 418,424 **** err(2, "can't rename \"%s\" to \"%s\"", ofn, backname); free(backname); } ! if (replace(tempname, ofn) < 0) err(2, "can't rename \"%s\" to \"%s\"", tempname, ofn); free(tempname); tempname = NULL; --- 428,434 ---- err(2, "can't rename \"%s\" to \"%s\"", ofn, backname); free(backname); } ! if (rename(tempname, ofn) < 0) err(2, "can't rename \"%s\" to \"%s\"", tempname, ofn); free(tempname); tempname = NULL; *************** *** 1570,1573 **** --- 1580,1593 ---- filename, linenum, msg, stifline[depth], depth); closeio(); errx(2, "output may be truncated"); + } + + static FILE * + mktempmode(char *tmp, int mode) + { + int fd = mkstemp(tmp); + if (fd < 0) + return (NULL); + fchmod(fd, mode & (S_IRWXU|S_IRWXG|S_IRWXO)); + return (fdopen(fd, "wb")); }