Re: c-ctype, inttostr, intprops module license

From:

Paul Eggert

Subject:

Re: c-ctype, inttostr, intprops module license

Date:

Fri, 17 Nov 2006 00:03:55 -0800

User-agent:

Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux)

Bruno Haible <address@hidden> writes:
> - argp: Either decide that argp should be GPL, or rework the 2006-01-21
> patch to lib/argp-namefrob.h so that it doesn't use dirname any more,
argp-namefrob.h doesn't use dirname if you define
GNULIB_ARGP_DISABLE_DIRNAME or GNULIB_ARGP_EXTERN_BASENAME. Perhaps
the LGPL users can do one or the other? We could then remove dirname
from the Depends-on. It's a bit of a hack, but it'd work. Or if they
need a third possibility we could add that.
> - euidaccess: change group-member.c so that it doesn't use xmalloc. If the
> memory allocation fails, let group_member() return -1 with errno = ENOMEM.
This sounds like trouble. The only client of group_member is
euidaccess, and euidaccess is supposed to return a binary value
(access OK, or access denied), not a trinary one (access OK, or access
denied, or memory exhausted). I expect that changing that would break
a lot of code unless we rewrote it.
How about following your suggestion, except that the code calls
abort() if memory allocation fails?
A simpler possibility would be to declare euidaccess to be GPL, at
least for now. Would anyone mind?
> - inline: Likewise, should be changed to LGPL.
Yes. I did that just now.
> - obstack: If someone was to use/assign the obstack_exit_failure variable
> declared in obstack.h, he will get a link error. So I propose to move
> the "#define obstack_exit_failure exit_failure" from obstack.c to
> obstack.h. Then we can remove the dependency to exitfail.
That would be fine, license wise. I don't quite follow the technical
details but I imagine you have done that, so it sounds good.
> - getaddrinfo, inttostr: Paul, can you agree to put intprops under LGPL?
I'd rather not. How about if we use something like the following
patch instead?
2006-11-16 Paul Eggert <address@hidden>
* modules/getaddinfo (Depends-on): Remove inttostr; add snprintf.
* lib/getaddrinfo.c: Include snprintf.h rather than intprops.h
and inttostr.h. Use snprintf rather than uinttostr, so that
LGPLed code doesn't depend on GPLed.
--- modules/getaddrinfo.~1.13.~ 2006-10-22 23:03:01.000000000 -0700
+++ modules/getaddrinfo 2006-11-17 00:00:01.000000000 -0800
@@ -10,7 +10,7 @@ m4/getaddrinfo.m4
Depends-on:
gettext-h
inet_ntop
-inttostr
+snprintf
socklen
stdbool
strdup
--- lib/getaddrinfo.c.~1.19.~ 2006-10-29 13:52:55.000000000 -0800
+++ lib/getaddrinfo.c 2006-11-16 23:57:21.000000000 -0800
@@ -38,8 +38,7 @@
#define N_(String) String
#include "inet_ntop.h"
-#include "intprops.h"
-#include "inttostr.h"
+#include "snprintf.h"
#include "strdup.h"
/* BeOS has AF_INET, but not PF_INET. */
@@ -408,11 +407,8 @@ int getnameinfo(const struct sockaddr *r
{
unsigned short int port
= ntohs (((const struct sockaddr_in *) sa)->sin_port);
- char buf[INT_BUFSIZE_BOUND (port)];
- char const *s = uinttostr (port, buf);
- if (strlen (s) + 1 > servicelen)
+ if (servicelen <= snprintf (service, servicelen, "%u", port))
return EAI_OVERFLOW;
- memcpy (service, s, strlen (s) + 1);
}
break;
}