From: Dmitry Potapov <dpotapov@gmail.com>
To: Johannes Sixt <johannes.sixt@telecom.at>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Steffen Prohaska <prohaska@zib.de>
Subject: Re: [PATCH] add GIT_FAST_STAT mode for Cygwin
Date: Wed, 24 Sep 2008 01:11:24 +0400 [thread overview]
Message-ID: <20080923211124.GT21650@dpotapov.dyndns.org> (raw)
In-Reply-To: <200809232241.42649.johannes.sixt@telecom.at>
On Tue, Sep 23, 2008 at 10:41:42PM +0200, Johannes Sixt wrote:
>
> You copied the function from compat/mingw.c. There it has the meaning "Fill in
> struct stat using Win32 API" and nothing else. Here it has the meaning "Fill
> in struct stat using Win32 API if you can, and using cygstat() in certain
> exceptional cases". If you stayed with the original meaning, it would be
> slightly easier to factor out common code.
do_stat() always fills in the structure, but it can do that fast using
Win32 API or fallback on cygstat() in exceptional cases. So, I don't
think I change its meaning much, its implementation certainly differs.
> > > You do duplicate a lot of code here. Any chances to factor out the
> > > common parts?
> >
> > I don't see much common code here. Initialization of 5 variables where
> > four of them are just constants? Perhaps, the biggest common part here
> > is conversion of dwFileAttributes to st_mode, but it is still 5 lines of
> > trivial code.
>
> Sigh. I gave a pointer how to unify the two functions (although I missed the
> fact that the member variables are named differently). I'd appreciate if you
> did not make it more difficult than necessary to factor out common code.
Because the stat structure is different and handling exceptional
situation is different, I don't think we can have a single do_stat
function for Cygwin and MinGW. Yet, perhaps, it is possible to
move some code in common functions even if it is just a few lines.
The first candidate is win_attr_to_st_mode(), which converts
dwFileAttributes returned by GetFileAttributesExA to st_mode.
Another possible function is that obtains and converts Win32 error
code to errno value. These function can be placed into some common
header (for example, win32.h), which will included by both
implementations. Does it make sense?
Dmitry
next prev parent reply other threads:[~2008-09-23 21:12 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-23 14:06 [PATCH] add GIT_FAST_STAT mode for Cygwin Dmitry Potapov
2008-09-23 14:37 ` Alex Riesen
2008-09-23 16:52 ` Dmitry Potapov
2008-09-23 17:51 ` Jakub Narebski
2008-09-24 11:25 ` Alex Riesen
2008-09-24 14:03 ` Dmitry Potapov
2008-09-24 14:42 ` Alex Riesen
2008-09-24 15:02 ` Shawn O. Pearce
2008-09-24 15:09 ` Alex Riesen
2008-09-24 15:16 ` Shawn O. Pearce
2008-09-24 15:32 ` Alex Riesen
2008-09-23 15:31 ` Shawn O. Pearce
2008-09-23 17:12 ` Dmitry Potapov
2008-09-23 19:06 ` Shawn O. Pearce
2008-09-23 20:04 ` Dmitry Potapov
2008-09-23 20:17 ` Shawn O. Pearce
2008-09-23 21:28 ` Dmitry Potapov
2008-09-23 21:58 ` Shawn O. Pearce
2008-09-23 19:03 ` Johannes Sixt
2008-09-23 19:48 ` Dmitry Potapov
2008-09-23 20:41 ` Johannes Sixt
2008-09-23 21:11 ` Dmitry Potapov [this message]
2008-09-27 7:02 ` [PATCH v2] Add a "fast stat" " Marcus Griep
2008-09-27 8:35 ` Alex Riesen
2008-09-27 10:39 ` Dmitry Potapov
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=20080923211124.GT21650@dpotapov.dyndns.org \
--to=dpotapov@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.sixt@telecom.at \
--cc=prohaska@zib.de \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).