Re: [PATCH v3] send-email: recognize absolute path on Windows

2014-04-23 Thread Erik Faye-Lund
On Tue, Apr 22, 2014 at 6:50 PM, Junio C Hamano gits...@pobox.com wrote:
 Erik Faye-Lund kusmab...@gmail.com writes:

 Shouldn't the latter also be anchored at the beginning of the string
 with a leading ^?

 +}
 +
 +require File::Spec::Functions;
 +return File::Spec::Functions::file_name_is_absolute($path);

 We already use File::Spec qw(something else) at the beginning, no?
 Why not throw file_name_is_absolute into that qw() instead?

 Ahh, OK, if you did so, you won't have any place to hook the only
 on msys do this trick into.

 It somehow feels somewhat confusing that we define a sub with the
 same name as the system one, while not overriding it entirely but
 delegate back to the system one.  I am debating myself if it is more
 obvious if it is done this way:

 use File::Spec::Functions qw(file_name_is_absolute);
 if ($^O eq 'msys') {
 sub file_name_is_absolute {
 return $_[0] =~ /^\// || $_[0] =~ /^[A-Z]:/i;
 }
 }


 In this case, we end up requiring that module even when we end up
 using it, no?

 Also somebody earlier mentioned that we would be redefining, which
 has a different kind of ugliness, so I'd agree with the code structure
 of what you sent out (which has been queued on 'pu').

 My earlier question don't we want to make sure 'C:' is at the
 betginning of the string? still stands, though.  I do not think I
 futzed with your regexp in the version I queued on 'pu'.

Ah, yes of course. Thanks for spotting that. I also like the other
clean-ups you did to the regex (above).
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3] send-email: recognize absolute path on Windows

2014-04-22 Thread Erik Faye-Lund
On Wed, Apr 16, 2014 at 7:19 PM, Junio C Hamano gits...@pobox.com wrote:
 Junio C Hamano gits...@pobox.com writes:

 Erik Faye-Lund kusmab...@gmail.com writes:

 So let's manually check for these in that case, and fall back to
 the File::Spec-helper on other platforms (e.g Win32 with native
 Perl)
 ...
 +sub file_name_is_absolute {
 +my ($path) = @_;
 +
 +# msys does not grok DOS drive-prefixes
 +if ($^O eq 'msys') {
 +return ($path =~ m#^/# || $path =~ m#[a-zA-Z]\:#)

 Shouldn't the latter also be anchored at the beginning of the string
 with a leading ^?

 +}
 +
 +require File::Spec::Functions;
 +return File::Spec::Functions::file_name_is_absolute($path);

 We already use File::Spec qw(something else) at the beginning, no?
 Why not throw file_name_is_absolute into that qw() instead?

 Ahh, OK, if you did so, you won't have any place to hook the only
 on msys do this trick into.

 It somehow feels somewhat confusing that we define a sub with the
 same name as the system one, while not overriding it entirely but
 delegate back to the system one.  I am debating myself if it is more
 obvious if it is done this way:

 use File::Spec::Functions qw(file_name_is_absolute);
 if ($^O eq 'msys') {
 sub file_name_is_absolute {
 return $_[0] =~ /^\// || $_[0] =~ /^[A-Z]:/i;
 }
 }


In this case, we end up requiring that module even when we end up
using it, no? Not that I have very strong objections for doing just
that, after all, it appears to be built-in. (As you might understand
from this message, my perl-fu is really lacking :-P)
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3] send-email: recognize absolute path on Windows

2014-04-22 Thread Junio C Hamano
Erik Faye-Lund kusmab...@gmail.com writes:

 Shouldn't the latter also be anchored at the beginning of the string
 with a leading ^?

 +}
 +
 +require File::Spec::Functions;
 +return File::Spec::Functions::file_name_is_absolute($path);

 We already use File::Spec qw(something else) at the beginning, no?
 Why not throw file_name_is_absolute into that qw() instead?

 Ahh, OK, if you did so, you won't have any place to hook the only
 on msys do this trick into.

 It somehow feels somewhat confusing that we define a sub with the
 same name as the system one, while not overriding it entirely but
 delegate back to the system one.  I am debating myself if it is more
 obvious if it is done this way:

 use File::Spec::Functions qw(file_name_is_absolute);
 if ($^O eq 'msys') {
 sub file_name_is_absolute {
 return $_[0] =~ /^\// || $_[0] =~ /^[A-Z]:/i;
 }
 }


 In this case, we end up requiring that module even when we end up
 using it, no?

Also somebody earlier mentioned that we would be redefining, which
has a different kind of ugliness, so I'd agree with the code structure
of what you sent out (which has been queued on 'pu').

My earlier question don't we want to make sure 'C:' is at the
betginning of the string? still stands, though.  I do not think I
futzed with your regexp in the version I queued on 'pu'.

Thanks.


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3] send-email: recognize absolute path on Windows

2014-04-16 Thread Erik Faye-Lund
From: Erik Faye-Lund kusmab...@googlemail.com

On Windows, absolute paths might start with a DOS drive prefix,
which these two checks failed to recognize.

Unfortunately, we cannot simply use the file_name_is_absolute
helper in File::Spec::Functions, because Git for Windows has an
MSYS-based Perl, where this helper doesn't grok DOS
drive-prefixes.

So let's manually check for these in that case, and fall back to
the File::Spec-helper on other platforms (e.g Win32 with native
Perl)

Signed-off-by: Erik Faye-Lund kusmab...@gmail.com
---

So here's a version that does the old and long-time tested
approach without requiring breaking changes to msysGit's perl.

 git-send-email.perl | 16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/git-send-email.perl b/git-send-email.perl
index fdb0029..8f5f986 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1113,6 +1113,18 @@ sub ssl_verify_params {
}
 }
 
+sub file_name_is_absolute {
+   my ($path) = @_;
+
+   # msys does not grok DOS drive-prefixes
+   if ($^O eq 'msys') {
+   return ($path =~ m#^/# || $path =~ m#[a-zA-Z]\:#)
+   }
+
+   require File::Spec::Functions;
+   return File::Spec::Functions::file_name_is_absolute($path);
+}
+
 # Returns 1 if the message was sent, and 0 otherwise.
 # In actuality, the whole program dies when there
 # is an error sending a message.
@@ -1197,7 +1209,7 @@ X-Mailer: git-send-email $gitversion
 
if ($dry_run) {
# We don't want to send the email.
-   } elsif ($smtp_server =~ m#^/#) {
+   } elsif (file_name_is_absolute($smtp_server)) {
my $pid = open my $sm, '|-';
defined $pid or die $!;
if (!$pid) {
@@ -1271,7 +1283,7 @@ X-Mailer: git-send-email $gitversion
printf (($dry_run ? Dry- : ).Sent %s\n, $subject);
} else {
print (($dry_run ? Dry- : ).OK. Log says:\n);
-   if ($smtp_server !~ m#^/#) {
+   if (!file_name_is_absolute($smtp_server)) {
print Server: $smtp_server\n;
print MAIL FROM:$raw_from\n;
foreach my $entry (@recipients) {
-- 
1.9.0.msysgit.0

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3] send-email: recognize absolute path on Windows

2014-04-16 Thread brian m. carlson
On Wed, Apr 16, 2014 at 10:19:54AM -0700, Junio C Hamano wrote:
 Ahh, OK, if you did so, you won't have any place to hook the only
 on msys do this trick into.
 
 It somehow feels somewhat confusing that we define a sub with the
 same name as the system one, while not overriding it entirely but
 delegate back to the system one.  I am debating myself if it is more
 obvious if it is done this way:
 
 use File::Spec::Functions qw(file_name_is_absolute);
 if ($^O eq 'msys') {

You would probably want a no warnings 'redefine' here as well.

 sub file_name_is_absolute {
   return $_[0] =~ /^\// || $_[0] =~ /^[A-Z]:/i;
 }
 }

-- 
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187


signature.asc
Description: Digital signature