X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfc_misc.c;fp=tfc_misc.c;h=bfb7265ff2dbf00442f26702456e7caeaf2ea864;hb=ba5ce99d77078a8629779641e8506b74e50fe6af;hp=44e1117be6342ec710d8e6848824cd55b9d6f895;hpb=9ac86c906f37b9b9dce4f018c90d420f947e05a9;p=tfcrypt.git diff --git a/tfc_misc.c b/tfc_misc.c index 44e1117..bfb7265 100644 --- a/tfc_misc.c +++ b/tfc_misc.c @@ -63,6 +63,26 @@ tfc_yesno str_empty(const char *str) return NO; } +int xxopen(tfc_yesno noerr, const char *pathname, int flags) +{ + int r; + + if ((flags & O_WRONLY || flags & O_RDWR)) { + if (read_only == YES) flags = O_RDONLY; + else flags |= write_flags; + } + + flags |= O_LARGEFILE; + r = open(pathname, flags, 0666); + if (noerr == NO && r == -1) xerror(NO, NO, YES, "%s", pathname); + return r; +} + +int xopen(const char *pathname, int flags) +{ + return xxopen(NO, pathname, flags); +} + void xclose(int fd) { if (fd < 3) return; @@ -164,7 +184,7 @@ tfc_fsize tfc_fnamesize(char *fname, tfc_yesno noexit) memset(s, 0, 2); } - fnmfd = open(fname, O_RDONLY); + fnmfd = xxopen(YES, fname, O_RDONLY); if (s) memcpy(s, T, 2); if (fnmfd == -1) { xerror(noexit, NO, YES, "%s", fname);