Re: [PATCH 17/19] Portable alloca for Git

2014-04-10 Thread Junio C Hamano
Erik Faye-Lund  writes:

>> Subject: [PATCH] mingw: activate alloca
>>
>> Both MSVC and MINGW have alloca(3) definitions in malloc.h, so by moving
>> win32-compat alloca.h from compat/vcbuild/include/ to compat/win32/ ,
>> which is included by both MSVC and MINGW CFLAGS, we can make alloca()
>> work on both those Windows environments.
>>
>> In MINGW, malloc.h has explicit check for GNUC and if it is so, defines
>> alloca to __builtin_alloca, so it looks like we don't need to add any
>> code to here-shipped alloca.h to get optimum performance.
>>
>> Compile-tested on Windows in MSysGit.
>>
>> Signed-off-by: Kirill Smelkov 
>
> Looks good to me!

Thanks; queued and pushed out on 'next'.
--
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 17/19] Portable alloca for Git

2014-04-09 Thread Erik Faye-Lund
On Wed, Apr 9, 2014 at 2:48 PM, Kirill Smelkov  wrote:
> On Thu, Mar 27, 2014 at 06:22:50PM +0400, Kirill Smelkov wrote:
>> On Mon, Mar 24, 2014 at 02:47:24PM -0700, Junio C Hamano wrote:
>> > Kirill Smelkov  writes:
>> >
>> > > On Fri, Feb 28, 2014 at 06:19:58PM +0100, Erik Faye-Lund wrote:
>> > >> On Fri, Feb 28, 2014 at 6:00 PM, Kirill Smelkov  wrote:
>> > >> ...
>> > >> > In fact that would be maybe preferred, for maintainers to enable 
>> > >> > alloca
>> > >> > with knowledge and testing, as one person can't have them all at hand.
>> > >>
>> > >> Yeah, you're probably right.
>> > >
>> > > Erik, the patch has been merged into pu today. Would you please
>> > > follow-up with tested MINGW change?
>> >
>> > Sooo I lost track but this discussion seems to have petered out
>> > around here.  I think the copy we have had for a while on 'pu' is
>> > basically sound, and can easily built on by platform folks by adding
>> > or removing the -DHAVE_ALLOCA_H from the Makefile.
>>
>> Yes, that is all correct - that version works and we can improve it in
>> the future with platform-specific follow-up patches, if needed.
>
> Junio, thanks for merging this and other diff-tree patches to next.  It
> so happened that I'm wrestling with MSysGit today, so please also find
> alloca-for-mingw patch attached below.
>
> Thanks,
> Kirill
>
>  8< 
> Subject: [PATCH] mingw: activate alloca
>
> Both MSVC and MINGW have alloca(3) definitions in malloc.h, so by moving
> win32-compat alloca.h from compat/vcbuild/include/ to compat/win32/ ,
> which is included by both MSVC and MINGW CFLAGS, we can make alloca()
> work on both those Windows environments.
>
> In MINGW, malloc.h has explicit check for GNUC and if it is so, defines
> alloca to __builtin_alloca, so it looks like we don't need to add any
> code to here-shipped alloca.h to get optimum performance.
>
> Compile-tested on Windows in MSysGit.
>
> Signed-off-by: Kirill Smelkov 

Looks good to me!
--
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 17/19] Portable alloca for Git

2014-04-09 Thread Kirill Smelkov
On Thu, Mar 27, 2014 at 06:22:50PM +0400, Kirill Smelkov wrote:
> On Mon, Mar 24, 2014 at 02:47:24PM -0700, Junio C Hamano wrote:
> > Kirill Smelkov  writes:
> > 
> > > On Fri, Feb 28, 2014 at 06:19:58PM +0100, Erik Faye-Lund wrote:
> > >> On Fri, Feb 28, 2014 at 6:00 PM, Kirill Smelkov  wrote:
> > >> ...
> > >> > In fact that would be maybe preferred, for maintainers to enable alloca
> > >> > with knowledge and testing, as one person can't have them all at hand.
> > >> 
> > >> Yeah, you're probably right.
> > >
> > > Erik, the patch has been merged into pu today. Would you please
> > > follow-up with tested MINGW change?
> > 
> > Sooo I lost track but this discussion seems to have petered out
> > around here.  I think the copy we have had for a while on 'pu' is
> > basically sound, and can easily built on by platform folks by adding
> > or removing the -DHAVE_ALLOCA_H from the Makefile.
> 
> Yes, that is all correct - that version works and we can improve it in
> the future with platform-specific follow-up patches, if needed.

Junio, thanks for merging this and other diff-tree patches to next.  It
so happened that I'm wrestling with MSysGit today, so please also find
alloca-for-mingw patch attached below.

Thanks,
Kirill

 8< 
Subject: [PATCH] mingw: activate alloca

Both MSVC and MINGW have alloca(3) definitions in malloc.h, so by moving
win32-compat alloca.h from compat/vcbuild/include/ to compat/win32/ ,
which is included by both MSVC and MINGW CFLAGS, we can make alloca()
work on both those Windows environments.

In MINGW, malloc.h has explicit check for GNUC and if it is so, defines
alloca to __builtin_alloca, so it looks like we don't need to add any
code to here-shipped alloca.h to get optimum performance.

Compile-tested on Windows in MSysGit.

Signed-off-by: Kirill Smelkov 
---
 compat/{vcbuild/include => win32}/alloca.h | 0
 config.mak.uname   | 1 +
 2 files changed, 1 insertion(+)
 rename compat/{vcbuild/include => win32}/alloca.h (100%)

diff --git a/compat/vcbuild/include/alloca.h b/compat/win32/alloca.h
similarity index 100%
rename from compat/vcbuild/include/alloca.h
rename to compat/win32/alloca.h
diff --git a/config.mak.uname b/config.mak.uname
index 17ef893..67bc054 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -480,6 +480,7 @@ ifeq ($(uname_S),NONSTOP_KERNEL)
 endif
 ifneq (,$(findstring MINGW,$(uname_S)))
pathsep = ;
+   HAVE_ALLOCA_H = YesPlease
NO_PREAD = YesPlease
NEEDS_CRYPTO_WITH_SSL = YesPlease
NO_LIBGEN_H = YesPlease
-- 
1.9.0.msysgit.0.31.g74d1b9a.dirty

--
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 17/19] Portable alloca for Git

2014-03-27 Thread Kirill Smelkov
On Mon, Mar 24, 2014 at 02:47:24PM -0700, Junio C Hamano wrote:
> Kirill Smelkov  writes:
> 
> > On Fri, Feb 28, 2014 at 06:19:58PM +0100, Erik Faye-Lund wrote:
> >> On Fri, Feb 28, 2014 at 6:00 PM, Kirill Smelkov  wrote:
> >> ...
> >> > In fact that would be maybe preferred, for maintainers to enable alloca
> >> > with knowledge and testing, as one person can't have them all at hand.
> >> 
> >> Yeah, you're probably right.
> >
> > Erik, the patch has been merged into pu today. Would you please
> > follow-up with tested MINGW change?
> 
> Sooo I lost track but this discussion seems to have petered out
> around here.  I think the copy we have had for a while on 'pu' is
> basically sound, and can easily built on by platform folks by adding
> or removing the -DHAVE_ALLOCA_H from the Makefile.

Yes, that is all correct - that version works and we can improve it in
the future with platform-specific follow-up patches, if needed.

Please pick up the patch with ack from Thomas Schwinge.

Thanks,
Kirill

(please keep author email)
 8< 
From: Kirill Smelkov 
Date: Mon, 24 Feb 2014 20:21:49 +0400
Subject: [PATCH v1a] Portable alloca for Git

In the next patch we'll have to use alloca() for performance reasons,
but since alloca is non-standardized and is not portable, let's have a
trick with compatibility wrappers:

1. at configure time, determine, do we have working alloca() through
   alloca.h, and define

#define HAVE_ALLOCA_H

   if yes.

2. in code

#ifdef HAVE_ALLOCA_H
# include 
# define xalloca(size)  (alloca(size))
# define xalloca_free(p)do {} while(0)
#else
# define xalloca(size)  (xmalloc(size))
# define xalloca_free(p)(free(p))
#endif

   and use it like

   func() {
   p = xalloca(size);
   ...

   xalloca_free(p);
   }

This way, for systems, where alloca is available, we'll have optimal
on-stack allocations with fast executions. On the other hand, on
systems, where alloca is not available, this gracefully fallbacks to
xmalloc/free.

Both autoconf and config.mak.uname configurations were updated. For
autoconf, we are not bothering considering cases, when no alloca.h is
available, but alloca() works some other way - its simply alloca.h is
available and works or not, everything else is deep legacy.

For config.mak.uname, I've tried to make my almost-sure guess for where
alloca() is available, but since I only have access to Linux it is the
only change I can be sure about myself, with relevant to other changed
systems people Cc'ed.

NOTE

SunOS and Windows had explicit -DHAVE_ALLOCA_H in their configurations.
I've changed that to now-common HAVE_ALLOCA_H=YesPlease which should be
correct.

Cc: Brandon Casey 
Cc: Marius Storm-Olsen 
Cc: Johannes Sixt 
Cc: Johannes Schindelin 
Cc: Ramsay Jones 
Cc: Gerrit Pape 
Cc: Petr Salinger 
Cc: Jonathan Nieder 
Cc: Thomas Schwinge 
Acked-by: Thomas Schwinge  (GNU Hurd changes)
Signed-off-by: Kirill Smelkov 
Signed-off-by: Junio C Hamano 
---

Changes since v1:

 - added ack for GNU/Hurd.

 Makefile  |  6 ++
 config.mak.uname  | 10 --
 configure.ac  |  8 
 git-compat-util.h |  8 
 4 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index dddaf4f..0334806 100644
--- a/Makefile
+++ b/Makefile
@@ -30,6 +30,8 @@ all::
 # Define LIBPCREDIR=/foo/bar if your libpcre header and library files are in
 # /foo/bar/include and /foo/bar/lib directories.
 #
+# Define HAVE_ALLOCA_H if you have working alloca(3) defined in that header.
+#
 # Define NO_CURL if you do not have libcurl installed.  git-http-fetch and
 # git-http-push are not built, and you cannot use http:// and https://
 # transports (neither smart nor dumb).
@@ -1099,6 +1101,10 @@ ifdef USE_LIBPCRE
EXTLIBS += -lpcre
 endif
 
+ifdef HAVE_ALLOCA_H
+   BASIC_CFLAGS += -DHAVE_ALLOCA_H
+endif
+
 ifdef NO_CURL
BASIC_CFLAGS += -DNO_CURL
REMOTE_CURL_PRIMARY =
diff --git a/config.mak.uname b/config.mak.uname
index 7d31fad..71602ee 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -28,6 +28,7 @@ ifeq ($(uname_S),OSF1)
NO_NSEC = YesPlease
 endif
 ifeq ($(uname_S),Linux)
+   HAVE_ALLOCA_H = YesPlease
NO_STRLCPY = YesPlease
NO_MKSTEMPS = YesPlease
HAVE_PATHS_H = YesPlease
@@ -35,6 +36,7 @@ ifeq ($(uname_S),Linux)
HAVE_DEV_TTY = YesPlease
 endif
 ifeq ($(uname_S),GNU/kFreeBSD)
+   HAVE_ALLOCA_H = YesPlease
NO_STRLCPY = YesPlease
NO_MKSTEMPS = YesPlease
HAVE_PATHS_H = YesPlease
@@ -103,6 +105,7 @@ ifeq ($(uname_S),SunOS)
NEEDS_NSL = YesPlease
SHELL_PATH = /bin/bash
SANE_TOOL_PATH = /usr/xpg6/bin:/usr/xpg4/bin
+   HAVE_ALLOCA_H = YesPlease
NO_STRCASESTR = YesPlease
NO_MEMMEM = YesPlease
NO_MKDTEMP = YesPlease
@@ -146,7 +149,7 @@ ifeq ($(uname_S),SunOS)
endif
INSTALL = /usr/ucb/install
TAR = gtar
-   BASIC_CFLA

Re: [PATCH 17/19] Portable alloca for Git

2014-03-24 Thread Junio C Hamano
Kirill Smelkov  writes:

> On Fri, Feb 28, 2014 at 06:19:58PM +0100, Erik Faye-Lund wrote:
>> On Fri, Feb 28, 2014 at 6:00 PM, Kirill Smelkov  wrote:
>> ...
>> > In fact that would be maybe preferred, for maintainers to enable alloca
>> > with knowledge and testing, as one person can't have them all at hand.
>> 
>> Yeah, you're probably right.
>
> Erik, the patch has been merged into pu today. Would you please
> follow-up with tested MINGW change?

Sooo I lost track but this discussion seems to have petered out
around here.  I think the copy we have had for a while on 'pu' is
basically sound, and can easily built on by platform folks by adding
or removing the -DHAVE_ALLOCA_H from the Makefile.

--
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 17/19] Portable alloca for Git

2014-03-05 Thread Kirill Smelkov
On Fri, Feb 28, 2014 at 06:19:58PM +0100, Erik Faye-Lund wrote:
> On Fri, Feb 28, 2014 at 6:00 PM, Kirill Smelkov  wrote:
> > On Fri, Feb 28, 2014 at 02:50:04PM +0100, Erik Faye-Lund wrote:
> >> On Fri, Feb 28, 2014 at 2:44 PM, Erik Faye-Lund  
> >> wrote:
> >> > On Mon, Feb 24, 2014 at 5:21 PM, Kirill Smelkov  wrote:
> >> >> diff --git a/Makefile b/Makefile
> >> >> index dddaf4f..0334806 100644
> >> >> --- a/Makefile
> >> >> +++ b/Makefile
> >> >> @@ -316,6 +321,7 @@ endif
> >> >>  ifeq ($(uname_S),Windows)
> >> >> GIT_VERSION := $(GIT_VERSION).MSVC
> >> >> pathsep = ;
> >> >> +   HAVE_ALLOCA_H = YesPlease
> >> >> NO_PREAD = YesPlease
> >> >> NEEDS_CRYPTO_WITH_SSL = YesPlease
> >> >> NO_LIBGEN_H = YesPlease
> >> >
> >> > In MSVC, alloca is defined in in malloc.h, not alloca.h:
> >> >
> >> > http://msdn.microsoft.com/en-us/library/wb1s57t5.aspx
> >> >
> >> > In fact, it has no alloca.h at all. But we don't have malloca.h in
> >> > mingw either, so creating a compat/win32/alloca.h that includes
> >> > malloc.h is probably sufficient.
> >>
> >> "But we don't have alloca.h in mingw either", sorry.
> >
> > Don't we have that for MSVC already in
> >
> > compat/vcbuild/include/alloca.h
> >
> > and
> >
> > ifeq ($(uname_S),Windows)
> > ...
> > BASIC_CFLAGS = ... -Icompat/vcbuild/include ...
> >
> >
> > in config.mak.uname ?
> 
> Ah, of course. Thanks for setting me straight!
> 
> > And as I've not touched MINGW part in config.mak.uname the patch stays
> > valid as it is :) and we can incrementally update what platforms have
> > working alloca with follow-up patches.
> >
> > In fact that would be maybe preferred, for maintainers to enable alloca
> > with knowledge and testing, as one person can't have them all at hand.
> 
> Yeah, you're probably right.

Erik, the patch has been merged into pu today. Would you please
follow-up with tested MINGW change?

Thanks beforehand,
Kirill
--
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 17/19] Portable alloca for Git

2014-02-28 Thread Erik Faye-Lund
On Fri, Feb 28, 2014 at 6:00 PM, Kirill Smelkov  wrote:
> On Fri, Feb 28, 2014 at 02:50:04PM +0100, Erik Faye-Lund wrote:
>> On Fri, Feb 28, 2014 at 2:44 PM, Erik Faye-Lund  wrote:
>> > On Mon, Feb 24, 2014 at 5:21 PM, Kirill Smelkov  wrote:
>> >> diff --git a/Makefile b/Makefile
>> >> index dddaf4f..0334806 100644
>> >> --- a/Makefile
>> >> +++ b/Makefile
>> >> @@ -316,6 +321,7 @@ endif
>> >>  ifeq ($(uname_S),Windows)
>> >> GIT_VERSION := $(GIT_VERSION).MSVC
>> >> pathsep = ;
>> >> +   HAVE_ALLOCA_H = YesPlease
>> >> NO_PREAD = YesPlease
>> >> NEEDS_CRYPTO_WITH_SSL = YesPlease
>> >> NO_LIBGEN_H = YesPlease
>> >
>> > In MSVC, alloca is defined in in malloc.h, not alloca.h:
>> >
>> > http://msdn.microsoft.com/en-us/library/wb1s57t5.aspx
>> >
>> > In fact, it has no alloca.h at all. But we don't have malloca.h in
>> > mingw either, so creating a compat/win32/alloca.h that includes
>> > malloc.h is probably sufficient.
>>
>> "But we don't have alloca.h in mingw either", sorry.
>
> Don't we have that for MSVC already in
>
> compat/vcbuild/include/alloca.h
>
> and
>
> ifeq ($(uname_S),Windows)
> ...
> BASIC_CFLAGS = ... -Icompat/vcbuild/include ...
>
>
> in config.mak.uname ?

Ah, of course. Thanks for setting me straight!

> And as I've not touched MINGW part in config.mak.uname the patch stays
> valid as it is :) and we can incrementally update what platforms have
> working alloca with follow-up patches.
>
> In fact that would be maybe preferred, for maintainers to enable alloca
> with knowledge and testing, as one person can't have them all at hand.

Yeah, you're probably right.
--
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 17/19] Portable alloca for Git

2014-02-28 Thread Kirill Smelkov
On Fri, Feb 28, 2014 at 02:50:04PM +0100, Erik Faye-Lund wrote:
> On Fri, Feb 28, 2014 at 2:44 PM, Erik Faye-Lund  wrote:
> > On Mon, Feb 24, 2014 at 5:21 PM, Kirill Smelkov  wrote:
> >> diff --git a/Makefile b/Makefile
> >> index dddaf4f..0334806 100644
> >> --- a/Makefile
> >> +++ b/Makefile
> >> @@ -316,6 +321,7 @@ endif
> >>  ifeq ($(uname_S),Windows)
> >> GIT_VERSION := $(GIT_VERSION).MSVC
> >> pathsep = ;
> >> +   HAVE_ALLOCA_H = YesPlease
> >> NO_PREAD = YesPlease
> >> NEEDS_CRYPTO_WITH_SSL = YesPlease
> >> NO_LIBGEN_H = YesPlease
> >
> > In MSVC, alloca is defined in in malloc.h, not alloca.h:
> >
> > http://msdn.microsoft.com/en-us/library/wb1s57t5.aspx
> >
> > In fact, it has no alloca.h at all. But we don't have malloca.h in
> > mingw either, so creating a compat/win32/alloca.h that includes
> > malloc.h is probably sufficient.
> 
> "But we don't have alloca.h in mingw either", sorry.

Don't we have that for MSVC already in

compat/vcbuild/include/alloca.h

and

ifeq ($(uname_S),Windows)
...
BASIC_CFLAGS = ... -Icompat/vcbuild/include ...


in config.mak.uname ?

And as I've not touched MINGW part in config.mak.uname the patch stays
valid as it is :) and we can incrementally update what platforms have
working alloca with follow-up patches.

In fact that would be maybe preferred, for maintainers to enable alloca
with knowledge and testing, as one person can't have them all at hand.

Thanks,
Kirill
--
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 17/19] Portable alloca for Git

2014-02-28 Thread Erik Faye-Lund
On Fri, Feb 28, 2014 at 2:44 PM, Erik Faye-Lund  wrote:
> On Mon, Feb 24, 2014 at 5:21 PM, Kirill Smelkov  wrote:
>> diff --git a/Makefile b/Makefile
>> index dddaf4f..0334806 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -316,6 +321,7 @@ endif
>>  ifeq ($(uname_S),Windows)
>> GIT_VERSION := $(GIT_VERSION).MSVC
>> pathsep = ;
>> +   HAVE_ALLOCA_H = YesPlease
>> NO_PREAD = YesPlease
>> NEEDS_CRYPTO_WITH_SSL = YesPlease
>> NO_LIBGEN_H = YesPlease
>
> In MSVC, alloca is defined in in malloc.h, not alloca.h:
>
> http://msdn.microsoft.com/en-us/library/wb1s57t5.aspx
>
> In fact, it has no alloca.h at all. But we don't have malloca.h in
> mingw either, so creating a compat/win32/alloca.h that includes
> malloc.h is probably sufficient.

"But we don't have alloca.h in mingw either", sorry.
--
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 17/19] Portable alloca for Git

2014-02-28 Thread Erik Faye-Lund
On Mon, Feb 24, 2014 at 5:21 PM, Kirill Smelkov  wrote:
> diff --git a/Makefile b/Makefile
> index dddaf4f..0334806 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -316,6 +321,7 @@ endif
>  ifeq ($(uname_S),Windows)
> GIT_VERSION := $(GIT_VERSION).MSVC
> pathsep = ;
> +   HAVE_ALLOCA_H = YesPlease
> NO_PREAD = YesPlease
> NEEDS_CRYPTO_WITH_SSL = YesPlease
> NO_LIBGEN_H = YesPlease

In MSVC, alloca is defined in in malloc.h, not alloca.h:

http://msdn.microsoft.com/en-us/library/wb1s57t5.aspx

In fact, it has no alloca.h at all. But we don't have malloca.h in
mingw either, so creating a compat/win32/alloca.h that includes
malloc.h is probably sufficient.
--
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 17/19] Portable alloca for Git

2014-02-28 Thread Thomas Schwinge
Hi!

On Mon, 24 Feb 2014 20:21:49 +0400, Kirill Smelkov  wrote:
> Both autoconf and config.mak.uname configurations were updated. For
> autoconf, we are not bothering considering cases, when no alloca.h is
> available, but alloca() works some other way - its simply alloca.h is
> available and works or not, everything else is deep legacy.

Sounds good for GNU Hurd, or any system using glibc (but have not
explicitly tested your patch).

> For config.mak.uname, I've tried to make my almost-sure guess for where
> alloca() is available, but since I only have access to Linux it is the
> only change I can be sure about myself, with relevant to other changed
> systems people Cc'ed.

> diff --git a/config.mak.uname b/config.mak.uname
> index 7d31fad..71602ee 100644
> --- a/config.mak.uname
> +++ b/config.mak.uname
> @@ -239,6 +243,7 @@ ifeq ($(uname_S),AIX)
>  endif
>  ifeq ($(uname_S),GNU)
>   # GNU/Hurd
> + HAVE_ALLOCA_H = YesPlease
>   NO_STRLCPY = YesPlease
>   NO_MKSTEMPS = YesPlease
>   HAVE_PATHS_H = YesPlease

Acked-by: Thomas Schwinge  (GNU Hurd changes)


Grüße,
 Thomas


pgphu749DPUFO.pgp
Description: PGP signature