From: Kyle J. McKay Date: Thu, 18 Jul 2013 19:15:28 GMT Subject: [PATCH v4 1/2] Git.pm: add new temp_is_locked function Message-ID: <59bf58623f9a0e344af1d2055673b54@f74d39fa044aa309eaea14b9f57fe79> In-Reply-To: <8a6adfae744011599e410da7a46808b@f74d39fa044aa309eaea14b9f57fe79> The temp_is_locked function can be used to determine whether or not a given name previously passed to temp_acquire is currently locked. Signed-off-by: Kyle J. McKay --- perl/Git.pm | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/perl/Git.pm b/perl/Git.pm index 7a252ef..204fdc6 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -61,7 +61,7 @@ require Exporter; remote_refs prompt get_tz_offset credential credential_read credential_write - temp_acquire temp_release temp_reset temp_path); + temp_acquire temp_is_locked temp_release temp_reset temp_path); =head1 DESCRIPTION @@ -1206,6 +1206,35 @@ sub temp_acquire { $temp_fd; } +=item temp_is_locked ( NAME ) + +Returns true if the internal lock created by a previous C +call with C is still in effect. + +When temp_acquire is called on a C, it internally locks the temporary +file mapped to C. That lock will not be released until C +is called with either the original C or the L that was +returned from the original call to temp_acquire. + +Subsequent attempts to call C with the same C will fail +unless there has been an intervening C call for that C +(or its corresponding L that was returned by the original +C call). + +If true is returned by C for a C, an attempt to +C the same C will cause an error unless +C is first called on that C (or its corresponding +L that was returned by the original C call). + +=cut + +sub temp_is_locked { + my ($self, $name) = _maybe_self(@_); + my $temp_fd = \$TEMP_FILEMAP{$name}; + + defined $$temp_fd && $$temp_fd->opened && $TEMP_FILES{$$temp_fd}{locked}; +} + =item temp_release ( NAME ) =item temp_release ( FILEHANDLE ) -- 1.8.3