all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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.






  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.