=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mg/file.c,v retrieving revision 1.92 retrieving revision 1.93 diff -u -r1.92 -r1.93 --- src/usr.bin/mg/file.c 2014/03/20 07:47:29 1.92 +++ src/usr.bin/mg/file.c 2014/03/31 21:29:59 1.93 @@ -1,4 +1,4 @@ -/* $OpenBSD: file.c,v 1.92 2014/03/20 07:47:29 lum Exp $ */ +/* $OpenBSD: file.c,v 1.93 2014/03/31 21:29:59 lum Exp $ */ /* This file is in the public domain. */ @@ -225,22 +225,20 @@ */ if (fisdir(fname) == TRUE) { ro = TRUE; - } else if (access(fname, W_OK) == -1) { - if (errno != ENOENT) + } else if ((access(fname, W_OK) == -1) && (errno != ENOENT)) { + ro = TRUE; + } else if (errno == ENOENT) { + (void)xdirname(dp, fname, sizeof(dp)); + (void)strlcat(dp, "/", sizeof(dp)); + + if (stat(dp, &statbuf) == -1 && errno == ENOENT) { + /* not read-only; like emacs */ + ewprintf("Use M-x make-directory RET RET to create the" + " directory and its parents"); + } else if (access(dp, W_OK) == -1 && errno == EACCES) { + ewprintf("File not found and directory" + " write-protected"); ro = TRUE; - else if (errno == ENOENT) { - (void)xdirname(dp, fname, sizeof(dp)); - (void)strlcat(dp, "/", sizeof(dp)); - if (stat(dp, &statbuf) == -1 && errno == ENOENT) { - /* no read-only; like emacs */ - ewprintf("Use M-x make-directory RET RET to " - "create the directory and its parents"); - } else if (access(dp, W_OK) == -1 && - errno == EACCES) { - ewprintf("File not found and directory" - " write-protected"); - ro = TRUE; - } } } if (ro == TRUE)