From: Eli Zaretskii <eliz@gnu.org>
To: ofv@wanadoo.es, lekktu@gmail.com, Takaaki.Ota@am.sony.com
Cc: 10733-done@debbugs.gnu.org
Subject: bug#10733: 24.0.93; w32 file truncation
Date: Fri, 03 Aug 2012 13:59:45 +0300 [thread overview]
Message-ID: <83pq78b5r2.fsf@gnu.org> (raw)
In-Reply-To: <83bopabl7m.fsf@gnu.org>
> Date: Tue, 07 Feb 2012 19:35:25 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: lekktu@gmail.com, Takaaki.Ota@am.sony.com, 10733@debbugs.gnu.org
>
> > From: Óscar Fuentes <ofv@wanadoo.es>
> > Cc: lekktu@gmail.com, Takaaki.Ota@am.sony.com, 10733@debbugs.gnu.org
> > Date: Tue, 07 Feb 2012 06:22:12 +0100
> >
> > Eli Zaretskii <eliz@gnu.org> writes:
> >
> > >> Maybe it can be integrated in the
> > >>
> > >> if (!(NILP(Vw32_get_true_file_attributes) ...
> > >>
> > >> hence reusing the calls to CreateFile and GetFileInformationByHandle and
> > >> shortening the patch, but as I don't know what
> > >> Vw32_get_true_file_attributes does, preferread to follow the safe way.
> > >
> > > You did right: w32-get-true-file-attributes can be set by the user to
> > > nil, if she wants her file ops faster.
> >
> > I was thinking on something like
> >
> > diff --git a/src/w32.c b/src/w32.c
> > index 3d3d334..418be63 100644
> > --- a/src/w32.c
> > +++ b/src/w32.c
> > @@ -3447,8 +3447,12 @@ stat (const char * path, struct stat * buf)
> > }
> > }
> >
> > - if (!(NILP (Vw32_get_true_file_attributes)
> > - || (EQ (Vw32_get_true_file_attributes, Qlocal) && is_slow_fs (name)))
> > + buf->st_size = 0;
> > +
> > + if ((!(NILP (Vw32_get_true_file_attributes)
> > + || (EQ (Vw32_get_true_file_attributes, Qlocal) && is_slow_fs (name)))
> > + || ((wfd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) &&
> > + (wfd.dwReserved0 == IO_REPARSE_TAG_SYMLINK)))
>
> Then what made you hesitate? This approach looks fine to me.
>
> > >> if is-symlink?
> > >> use fstat
> > >> fi
> > >
> > > Since fstat is also reimplemented, I'd rather do what it does inline.
> > >
> > > For that, we need to know which other attributes are reported
> > > different. Or maybe just test for the reparse point up front and do
> > > all the work for the target instead.
> >
> > Since Emacs' fstat reimplementation is based on
> > GetFileInformationByHandle, and that the handle points to the linked
> > file (CreateFile follows the link unless told otherwise), we should be
> > safe delegating all work to `fstat' when a symlink is detected on `stat'
> > (the executable bit must be setted on `stat', but that's no problem.)
>
> Please compare w32.c's `fstat' with `stat', and you will see that the
> former does much less than the latter, even with information that can
> be gotten by the handle. To go the way you suggest, we need first to
> make `fstat' a proper subset of `stat'. (I never had time to do it,
> and since `fstat' is used much less that `stat' in Emacs, more
> important jobs came first.)
Since trunk revision 109416 adds full support for symlinks on
MS-Windows platforms, and fixes this bug as a side effect, I'm closing
this bug.
next prev parent reply other threads:[~2012-08-03 10:59 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-05 22:34 bug#10733: 24.0.93; w32 file truncation Ota, Takaaki
2012-02-05 23:51 ` Juanma Barranquero
2012-02-06 0:16 ` Ota, Takaaki
2012-02-06 4:05 ` Eli Zaretskii
2012-02-06 5:25 ` Óscar Fuentes
2012-02-06 16:16 ` Óscar Fuentes
2012-02-06 17:21 ` Eli Zaretskii
2012-02-06 17:58 ` Óscar Fuentes
2012-02-06 18:37 ` Eli Zaretskii
2012-02-06 20:19 ` Ota, Takaaki
2012-02-06 20:23 ` Lennart Borgman
2012-02-06 21:11 ` Eli Zaretskii
2012-02-06 21:20 ` Lennart Borgman
2012-02-06 21:31 ` Eli Zaretskii
2012-02-06 21:35 ` Lennart Borgman
2012-02-06 20:24 ` Lars Ingebrigtsen
2012-02-06 21:09 ` Eli Zaretskii
2012-02-06 21:08 ` Eli Zaretskii
2012-02-06 23:27 ` Óscar Fuentes
2012-02-06 23:43 ` Ota, Takaaki
2012-02-07 0:07 ` Óscar Fuentes
2012-02-07 4:02 ` Eli Zaretskii
2012-02-07 5:22 ` Óscar Fuentes
2012-02-07 17:35 ` Eli Zaretskii
2012-08-03 10:59 ` Eli Zaretskii [this message]
2012-02-06 16:55 ` Eli Zaretskii
2012-02-06 0:20 ` Óscar Fuentes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83pq78b5r2.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=10733-done@debbugs.gnu.org \
--cc=Takaaki.Ota@am.sony.com \
--cc=lekktu@gmail.com \
--cc=ofv@wanadoo.es \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.