Subject: [Nel] GNU/Linux fixes

From: Loic Dachary <[email-masked]>
Date: Sun, 17 Feb 2002 15:38:17 +0100

Hi,

	I'd be grateful if you could apply the patch below. It was
generated with today's CVS. Nel + snowballs compile + run with
this patch. Here is a short description:

	- AM_GL_VERIFY autoconf macro (not used but necessary to turn
	  the current hackish workaround into a proper fix)

	- virtual destructors with throw() (gcc-3)

	- friend declaration 

	- Makefile inconsistency 

	- Missing newline at end of file

	- dynamic_cast workaround for gcc

	- Spurious dots in Makefile.am SUBDIRS

	- noop inlines that prevent proper compilation when in
	  --with-debug mode

	- uncommented string after endif

	- proper stl lib inclusion when --with-debug=full

	- missing parenthesis at end of 'if' expr

	Thanks in advance,

Index: nel/acinclude.m4
===================================================================
RCS file: /home/cvsroot/code/nel/acinclude.m4,v
retrieving revision 1.7
diff -u -r1.7 acinclude.m4
--- nel/acinclude.m4	29 Jan 2002 13:21:42 -0000	1.7
+++ nel/acinclude.m4	17 Feb 2002 13:02:19 -0000
@@ -45,6 +45,14 @@
 dnl    Description: check the instalation of the OpenGL library and set the
 dnl                 OPENGL_CFLAGS and OPENGL_LIBS variables to use it.
 dnl
+dnl AM_GL_VERIFY
+dnl
+dnl    Description: checks OpenGL headers and libraries consistency.
+dnl                 Define NEL_ARB_MULTITEXTURE_NO_TYPEDEFS
+dnl		      if GL_ARB_multitexture is defined in gl.h but is missing
+dnl		      functions typedefs. This happens, for instance, with 
+dnl                   Mesa-3.4.2 & Mesa-4.0.1.
+dnl
 dnl
 dnl AM_PATH_FREETYPE
 dnl
@@ -605,6 +613,32 @@
 AC_SUBST(OPENGL_CFLAGS)
 AC_SUBST(OPENGL_LIBS)
 
+])
+
+AC_DEFUN(AM_GL_VERIFY,
+[ 
+_CPPFLAGS="$CPPFLAGS"
+
+CPPFLAGS="$CXXFLAGS $OPENGL_CFLAGS"
+
+AC_MSG_CHECKING([for GL_ARB_multitexture in gl.h])
+AC_EGREP_CPP(glActiveTextureARB,
+[#define GL_GLEXT_PROTOTYPES
+#include <GL/gl.h>],
+[
+  AC_EGREP_CPP(PFNGLACTIVETEXTUREARBPROC,
+  [#include <GL/gl.h>],
+  [AC_MSG_RESULT([found and typedefs defined])],
+  [
+    AC_MSG_RESULT([found and missing typdefs, define NEL_ARB_MULTITEXTURE_NO_TYPEDEFS])
+    AC_DEFINE(NEL_ARB_MULTITEXTURE_NO_TYPEDEFS)
+  ])
+],
+[
+  AC_MSG_RESULT([not found, this is ok])
+])
+
+CPPFLAGS="$_CPPFLAGS"
 ])

Index: nel/configure.in
===================================================================
RCS file: /home/cvsroot/code/nel/configure.in,v
retrieving revision 1.59
diff -u -r1.59 configure.in
--- nel/configure.in	28 Jan 2002 15:22:19 -0000	1.59
+++ nel/configure.in	17 Feb 2002 13:02:19 -0000
@@ -247,7 +247,7 @@
 dnl OpenGL
 
 AM_PATH_OPENGL($enable_3d)
-
+AM_GL_VERIFY
 
 dnl ====================================================================
 dnl Check for XF86VidMode extension (-lXxf86vm)
Index: nel/include/nel/misc/common.h
===================================================================
RCS file: /home/cvsroot/code/nel/include/nel/misc/common.h,v
retrieving revision 1.34
diff -u -r1.34 common.h
--- nel/include/nel/misc/common.h	12 Feb 2002 13:56:16 -0000	1.34
+++ nel/include/nel/misc/common.h	17 Feb 2002 13:02:22 -0000
@@ -240,6 +240,7 @@
 	Exception();
 	Exception(const std::string &reason);
 	Exception(const char *format, ...);
+	virtual ~Exception() throw() {};
 	virtual const char	*what() const throw();
 };
 
Index: nel/include/nel/misc/stream.h
===================================================================
RCS file: /home/cvsroot/code/nel/include/nel/misc/stream.h,v
retrieving revision 1.50
diff -u -r1.50 stream.h
--- nel/include/nel/misc/stream.h	27 Nov 2001 15:59:55 -0000	1.50
+++ nel/include/nel/misc/stream.h	17 Feb 2002 13:02:22 -0000
@@ -77,6 +77,8 @@
 
 	EStream( const IStream &f, const std::string& str );
 
+	virtual ~EStream() throw() {}
+
 	// May Not be Filled...
 	std::string	StreamName;
 };
Index: nel/include/nel/net/buf_net_base.h
===================================================================
RCS file: /home/cvsroot/code/nel/include/nel/net/buf_net_base.h,v
retrieving revision 1.5
diff -u -r1.5 buf_net_base.h
--- nel/include/nel/net/buf_net_base.h	21 Jun 2001 12:35:16 -0000	1.5
+++ nel/include/nel/net/buf_net_base.h	17 Feb 2002 13:02:22 -0000
@@ -135,7 +135,7 @@
 
 protected:
 
-	friend CBufSock;
+	friend class NLNET::CBufSock;
 	
 	/// Constructor
 	CBufNetBase();
Index: nel/src/3d/Makefile.am
===================================================================
RCS file: /home/cvsroot/code/nel/src/3d/Makefile.am,v
retrieving revision 1.67
diff -u -r1.67 Makefile.am
--- nel/src/3d/Makefile.am	15 Feb 2002 17:37:54 -0000	1.67
+++ nel/src/3d/Makefile.am	17 Feb 2002 13:02:25 -0000
@@ -460,10 +460,7 @@
                        visual_collision_manager_user.h                 \
                        water_height_map.cpp                            \
                        water_height_map.h                              \
-                       water_imp.cpp                                   \
                        water_model.cpp                                 \
-                       water_model.cpp (essai)                         \
-                       water_model.cpp(old)                            \
                        water_model.h                                   \
                        water_pool_manager.cpp                          \
                        water_pool_manager.h                            \
Index: nel/src/3d/cube_map_builder.h
===================================================================
RCS file: /home/cvsroot/code/nel/src/3d/cube_map_builder.h,v
retrieving revision 1.1
diff -u -r1.1 cube_map_builder.h
--- nel/src/3d/cube_map_builder.h	4 Feb 2002 10:42:31 -0000	1.1
+++ nel/src/3d/cube_map_builder.h	17 Feb 2002 13:02:25 -0000
@@ -57,4 +57,4 @@
 }

-#endif
\ No newline at end of file
+#endif
Index: nel/src/3d/landscape.h
===================================================================
RCS file: /home/cvsroot/code/nel/src/3d/landscape.h,v
retrieving revision 1.31
diff -u -r1.31 landscape.h
--- nel/src/3d/landscape.h	6 Feb 2002 16:54:56 -0000	1.31
+++ nel/src/3d/landscape.h	17 Feb 2002 13:02:25 -0000
@@ -104,6 +104,7 @@
 
 public:
 	EBadBind() {}
+	~EBadBind() throw () {}
 	virtual const char	*what() const throw();
 
 };
Index: nel/src/3d/ps_misc.h
===================================================================
RCS file: /home/cvsroot/code/nel/src/3d/ps_misc.h,v
retrieving revision 1.1
diff -u -r1.1 ps_misc.h
--- nel/src/3d/ps_misc.h	2 Oct 2001 16:35:39 -0000	1.1
+++ nel/src/3d/ps_misc.h	17 Feb 2002 13:02:25 -0000
@@ -82,4 +82,4 @@
 
 } // NL3D
 
-#endif
\ No newline at end of file
+#endif
Index: nel/src/3d/scene.cpp
===================================================================
RCS file: /home/cvsroot/code/nel/src/3d/scene.cpp,v
retrieving revision 1.62
diff -u -r1.62 scene.cpp
--- nel/src/3d/scene.cpp	6 Feb 2002 16:54:56 -0000	1.62
+++ nel/src/3d/scene.cpp	17 Feb 2002 13:02:25 -0000
@@ -463,7 +463,11 @@
 #endif
 
 	// Look if this instance get lightmap information
-	CMeshBase *pMB = dynamic_cast<CMeshBase*>( (IShape*)(pTShp->Shape) );
+#if defined(__GNUC__) && __GNUC__ < 3
+	CMeshBase *pMB = (CMeshBase*)((IShape*)(pTShp->Shape));
+#else // not GNUC
+	CMeshBase *pMB = dynamic_cast<CMeshBase*>((IShape*)(pTShp->Shape));
+#endif // not GNUC
 	CMeshBaseInstance *pMBI = dynamic_cast<CMeshBaseInstance*>( pTShp );
 	if( ( pMB != NULL ) && ( pMBI != NULL ) )
 	{ // Try to bind to automatic animation
Index: nel/src/3d/driver/Makefile.am
===================================================================
RCS file: /home/cvsroot/code/nel/src/3d/driver/Makefile.am,v
retrieving revision 1.1
diff -u -r1.1 Makefile.am
--- nel/src/3d/driver/Makefile.am	18 Dec 2000 15:30:11 -0000	1.1
+++ nel/src/3d/driver/Makefile.am	17 Feb 2002 13:02:25 -0000
@@ -4,7 +4,7 @@
 
 MAINTAINERCLEANFILES = Makefile.in
 
-SUBDIRS              = opengl .
+SUBDIRS              = opengl

 # End of Makefile.am
Index: nel/src/3d/driver/opengl/driver_opengl.h
===================================================================
RCS file: /home/cvsroot/code/nel/src/3d/driver/opengl/driver_opengl.h,v
retrieving revision 1.110
diff -u -r1.110 driver_opengl.h
--- nel/src/3d/driver/opengl/driver_opengl.h	15 Feb 2002 17:43:03 -0000	1.110
+++ nel/src/3d/driver/opengl/driver_opengl.h	17 Feb 2002 13:02:26 -0000
@@ -381,10 +381,10 @@
 	virtual void			forceTextureResize(uint divisor);
 
 	/// Setup texture env functions. Used by setupMaterial
-	inline void				setTextureEnvFunction(uint stage, CMaterial& mat);
+	void				setTextureEnvFunction(uint stage, CMaterial& mat);
 
 	/// setup the texture matrix for a given number of stages (starting from 0)
-	inline void      setupUserTextureMatrix(uint numStages, CMaterial& mat);
+	void      setupUserTextureMatrix(uint numStages, CMaterial& mat);
 
 	/// For objects with caustics, setup the first texture (which actually is the one from the material)
 	/*static inline void		setupCausticsFirstTex(const CMaterial &mat);
Index: nel/src/3d/driver/opengl/driver_opengl_material.cpp
===================================================================
RCS file: /home/cvsroot/code/nel/src/3d/driver/opengl/driver_opengl_material.cpp,v
retrieving revision 1.57
diff -u -r1.57 driver_opengl_material.cpp
--- nel/src/3d/driver/opengl/driver_opengl_material.cpp	15 Feb 2002 17:43:41 -0000	1.57
+++ nel/src/3d/driver/opengl/driver_opengl_material.cpp	17 Feb 2002 13:02:27 -0000
@@ -104,7 +104,7 @@

 // --------------------------------------------------
-inline void CDriverGL::setTextureEnvFunction(uint stage, CMaterial& mat)
+void CDriverGL::setTextureEnvFunction(uint stage, CMaterial& mat)
 {
 	ITexture	*text= mat.getTexture(stage);
 	if(text)
@@ -138,7 +138,7 @@

 //--------------------------------
-inline void CDriverGL::setupUserTextureMatrix(uint numStages, CMaterial& mat)
+void CDriverGL::setupUserTextureMatrix(uint numStages, CMaterial& mat)
 { 
 	if (
 		(_UserTexMatEnabled != 0 && (mat.getFlags() & IDRV_MAT_USER_TEX_MAT_ALL) == 0)		
Index: nel/src/misc/Makefile.am
===================================================================
RCS file: /home/cvsroot/code/nel/src/misc/Makefile.am,v
retrieving revision 1.39
diff -u -r1.39 Makefile.am
--- nel/src/misc/Makefile.am	12 Dec 2001 15:40:10 -0000	1.39
+++ nel/src/misc/Makefile.am	17 Feb 2002 13:02:28 -0000
@@ -4,7 +4,7 @@
 
 MAINTAINERCLEANFILES  = Makefile.in
 
-SUBDIRS               = config_file .
+SUBDIRS               = config_file
 
 lib_LTLIBRARIES       = libnelmisc.la
 
Index: nel/src/misc/mutex.cpp
===================================================================
RCS file: /home/cvsroot/code/nel/src/misc/mutex.cpp,v
retrieving revision 1.26
diff -u -r1.26 mutex.cpp
--- nel/src/misc/mutex.cpp	8 Jan 2002 15:56:36 -0000	1.26
+++ nel/src/misc/mutex.cpp	17 Feb 2002 13:02:28 -0000
@@ -25,7 +25,9 @@
 
 #include "stdmisc.h"
 
+#ifndef _GNU_SOURCE
 #define _GNU_SOURCE
+#endif // _GNU_SOURCE
 
 #include "nel/misc/mutex.h"
 #include "nel/misc/time_nl.h"
Index: nel/src/misc/path.cpp
===================================================================
RCS file: /home/cvsroot/code/nel/src/misc/path.cpp,v
retrieving revision 1.19
diff -u -r1.19 path.cpp
--- nel/src/misc/path.cpp	12 Feb 2002 13:55:59 -0000	1.19
+++ nel/src/misc/path.cpp	17 Feb 2002 13:02:28 -0000
@@ -723,7 +723,7 @@
 #else // NL_OS_WINDOWS
 	struct stat buf;
 	return stat (filename.c_str (), &buf) == 0;
-#endif NL_OS_WINDOWS
+#endif // NL_OS_WINDOWS
 }
 
 bool CFile::fileExists (const string& filename)
Index: nel/src/sound/driver/Makefile.am
===================================================================
RCS file: /home/cvsroot/code/nel/src/sound/driver/Makefile.am,v
retrieving revision 1.2
diff -u -r1.2 Makefile.am
--- nel/src/sound/driver/Makefile.am	3 Aug 2001 10:16:59 -0000	1.2
+++ nel/src/sound/driver/Makefile.am	17 Feb 2002 13:02:29 -0000
@@ -4,7 +4,7 @@
 
 MAINTAINERCLEANFILES          = Makefile.in
 
-SUBDIRS                       = openal .
+SUBDIRS                       = openal
 
 noinst_LTLIBRARIES            = libnelsnd_lowlevel.la
 
Index: snowballs2/acinclude.m4
===================================================================
RCS file: /home/cvsroot/code/snowballs2/acinclude.m4,v
retrieving revision 1.7
diff -u -r1.7 acinclude.m4
--- snowballs2/acinclude.m4	29 Jan 2002 13:21:42 -0000	1.7
+++ snowballs2/acinclude.m4	17 Feb 2002 13:02:43 -0000
@@ -364,7 +364,12 @@
                           path to the STLPort library files directory.
                           e.g. /usr/local/stlport/lib])
 
-stlport_lib="stlport_gcc"
+if test "$with_debug" = "full"
+then
+	stlport_lib="stlport_gcc_stldebug"
+else
+	stlport_lib="stlport_gcc"
+fi
 
 if test "$with_stlport" = no
 then
Index: snowballs2/client/src/entities.cpp
===================================================================
RCS file: /home/cvsroot/code/snowballs2/client/src/entities.cpp,v
retrieving revision 1.42
diff -u -r1.42 entities.cpp
--- snowballs2/client/src/entities.cpp	14 Feb 2002 13:03:53 -0000	1.42
+++ snowballs2/client/src/entities.cpp	17 Feb 2002 13:02:44 -0000
@@ -719,7 +719,7 @@
 			}
 */
 			// snap to the ground
-			if (!GlobalRetriever->isInterior(gPos)
+			if (!GlobalRetriever->isInterior(gPos))
 				entity.VisualCollisionEntity->snapToGround(entity.Position);
 
 			if (entity.Type == CEntity::Other &&
@@ -728,7 +728,7 @@
 //				nlinfo("detected over entity %d", entity.Id);
 				entity.ServerPosition.z = entity.Position.z;
 				entity.Position = entity.ServerPosition;
-				if (!GlobalRetriever->isInterior(gPos)
+				if (!GlobalRetriever->isInterior(gPos))
 					entity.VisualCollisionEntity->snapToGround(entity.Position);
 				entity.MovePrimitive->setGlobalPosition(CVectorD(entity.Position.x, entity.Position.y, entity.Position.z), 0);
 			}

-- 
Loic   Dachary         http://www.dachary.org/  [email-masked]
12 bd  Magenta         http://www.senga.org/      [email-masked]
75010    Paris         T: 33 1 42 45 07 97          [email-masked]
        GPG Public Key: http://www.dachary.org/loic/gpg.txt

---

From: "Lionel Berenguier" <[email-masked]>
Date: Mon, 18 Feb 2002 10:54:17 +0100

Thanks for this patch.

As you say, AM_GL_VERIFY is not used and I don't find use of
NEL_ARB_MULTITEXTURE_NO_TYPEDEFS in your patch.

We think that our way to solve the GL version problem is better, even if
maybe more weird, since it solves it both under windows and linux.

The rest of the patch will be applied. Tell us if not applying AM_GL_VERIFY
patch is a problem.

Cheers.

Lionel

----- Original Message -----
From: "Loic Dachary" <[email-masked]>
To: <[email-masked]>
Sent: Sunday, February 17, 2002 3:38 PM
Subject: [Nel] GNU/Linux fixes

>   the current hackish workaround into a proper fix)
[....]

---

From: "Vianney Lecroart" <[email-masked]>
Date: Mon, 18 Feb 2002 12:23:05 +0100

Bonjour,

Je sais qu'il y a une difference entre une contribution (un gros patch) et
un fix, mais j'aimerais savoir si il y a des doc officiels qui precisent la
limite entre les 2. C'est a dire, si quelqu'un nous donne un patch de 15
lignes, est ce un fix ou une contrib? La limite est fixe par un nombre de
ligne? Si oui, de combien, y a t il une url qui parle de cela?

Merci

Vianney Lecroart
---
lead network programmer / nevrax.com
icq#: 6870415
homepage: http://ace.planet-d.net
www.geekcode.com: GCS/E d- s+++: a-- C+++$ UL++ P- L+++>+$ E+>- W++ N+ o? K-
w++$ O- M- V- PS- PE? Y PGP t 5? X+ R- tv++ b- DI D+ G e++ h+ r-- y?

---

From: "Vianney Lecroart" <[email-masked]>
Date: Mon, 18 Feb 2002 12:30:37 +0100

Ouppssss, sorry, it was a private mail, not for the nel mailing list :)
anyway, I'll ask you:

I know that there is a difference between a contribution (a large patch) and
a fix, but I would like to know if there are official Doc.
which spoke the limit between the 2.  If somebody gives us a patch of 15
lines, is a this fix or a contrib?  Is the limit fixed by a number of line?
If so, where is the limit? Is there a URL which speaks about that?

Thank you

Vianney Lecroart
---

----- Original Message -----
From: "Vianney Lecroart" <[email-masked]>
To: <[email-masked]>
Sent: Monday, February 18, 2002 12:23 PM
Subject: [Nel] contrib et fix

> _______________________________________________
> Nel mailing list
> [email-masked]
> /mailman/listinfo.cgi/nel
>

---

From: "Valerio Santinelli" <[email-masked]>
Date: Mon, 18 Feb 2002 12:47:55 +0100

In my opinion contributions are more than patches. They usually are new
features and/or new programs that interface with the current official
distribution.
Most unix packages have a "contrib" directory with "contributed" programs in
it.

My 0.02 Euro :)

--
Valerio Santinelli
HateSeed.com Founder (http://www.hateseed.com)
In Flames Italia Webmaster (http://www.inflames.it)
My Lab (http://tanis.hateseed.com)

----- Original Message -----
From: "Vianney Lecroart" <[email-masked]>
To: <[email-masked]>
Sent: Monday, February 18, 2002 12:30 PM
Subject: Re: [Nel] contrib et fix

> > www.geekcode.com: GCS/E d- s+++: a-- C+++$ UL++ P- L+++>+$ E+>- W++ N+
o?
> K-

---

From: Loic Dachary <[email-masked]>
Date: Mon, 18 Feb 2002 18:57:45 +0100

> NEL_ARB_MULTITEXTURE_NO_TYPEDEFS in your patch.

	True.

 > maybe more weird, since it solves it both under windows and linux.

	The solution you implemented is definitely working. I tend to think
that it's better to check & fix that kind of issue with a configure time 
test + #define symbol but that's a minor point. You may want to change the
comment since the same problem shows with Mesa-4.0.1 gl.h header although
it claims to be OpenGL 1.3 compliant. 

	Regarding compatibility with non GNU/Linux operating systems
on which you can't / don't want to run autoconf, one should be careful
when generating symbols. For instance,
NEL_ARB_MULTITEXTURE_NO_TYPEDEFS can be used to include the
typedefs. If not on GNU/Linux, the typedefs are not included.  If they
need to be included on another platform you could 

#if defined(NEL_ARB_MULTITEXTURE_NO_TYPEDEFS) || defined(NEL_OS_PLATFORM)

	Unless you have a different configure-like system that works
on these platforms and is able to generate
NEL_ARB_MULTITEXTURE_NO_TYPEDEFS when appropriate. I'd be interested
to hear about an operating system on which autoconf cannot be run.

	That raises an interesting question : is anyone compiling
snowballs using autoconf on a platform that is not GNU/Linux ? In theory
it should work (that's the whole point of having autoconf scripts ;-)
but experience shows that it requires a small amount of tweaking anyway.

 > The rest of the patch will be applied. Tell us if not applying AM_GL_VERIFY

	It is not, thanks for asking ;-)

	Cheers,

---

From: Loic Dachary <[email-masked]>
Date: Mon, 18 Feb 2002 20:53:54 +0100

> If so, where is the limit? Is there a URL which speaks about that?

	AFAIK, the 15 lines of code threshold is informal and based on 
past judgements. It could be argued that this is an urban legend (internet
legend ?-). I could ask for confirmation to a lawyer if this is important.
I have no reference URL handy.

	This limit is important when a developer or a company needs to
make sure it is the sole copyright holder of the software. This is the
best way to make sure a Free Software can be properly defended when/if
a license violation occurs. Being the single copyright holder puts you
in the best position to negotiate with the violator so that she
complies to the license terms. Multiplying the copyright holders of a
given software is a technique to prevent a Free Software to become
proprietary but is rather inefficient to enforce the license if needs
be.

	If it's not already the case, it would be good that
contributors to nel assign copyright to Nevrax, much in the same way
as contributors assign copyright to the FSF. Of course, when a
contributor to GNU Emacs (for instance) assigns copyright to the FSF
for her work, the FSF makes a written promise to release the
contribution under a Free Software license.  This is a fair system
that Nevrax could use for nel. Of course, you don't want to bother
about copyright assignment with every contributor who provides only a
few lines and this is where the 15 lines threshold helps you.

	When nel becomes widely used, I guess Nevrax will need to
handle significant contributions and a few violators. The fact that
nel is released under the GNU GPL (instead of the GNU LGPL for
instance) helps. It is *a lot* harder to convince violators on GNU
LGPL'ed code. When someone (note that I do not say if someone ;-)
expands nel and distribute the result without the corresponding source
code, it won't take more than a few weeks to convince her to comply.
As it turns out, the GNU GPL is the only license that is efficient
to protect a Free Software company business.

	Cheers,

---

From: "Daniel Miller" <[email-masked]>
Date: Wed, 20 Feb 2002 20:31:00 +0100

OK - What you propose sounds sensible to me - do you have a standard
agreement somewhere that you recommend?

Daniel

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]On Behalf Of
Loic Dachary
Sent: Monday, February 18, 2002 8:54 PM
To: [email-masked]
Subject: Re: [Nel] contrib et fix

	Cheers,

---

From: Loic Dachary <[email-masked]>
Date: Thu, 21 Feb 2002 14:10:38 +0100

> agreement somewhere that you recommend?

	Sure. You'll find attached to this mail a generic assignement
fit for an individual contributor that I customized for Nevrax. 

	You will also find a copyright assignment for my own work that
I'm ready to sign as soon as you send it to me. It has to be printed
on letterhead paper and you'll have to fill the name of Nevrax's CEO.
The CEO needs to sign two copies of the letter, send both of them to
me (address included in the assignment). I'll return one of them
signed and we will be done with it ;-)

	You may add the generic form to the nevrax.org web site along
with the reasons why such an assignment is a good thing. I can provide
a small standard explanation if you like.

	Cheers,

---

From: "Daniel Miller" <[email-masked]>
Date: Mon, 25 Feb 2002 19:15:41 +0100

Thanks Loic. This is great - I'll pass it on to the chaps in ties and we'll
look at puting it on the site as soon as they've done their legal wot-not.

Cheers,
Daniel

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]On Behalf Of
Loic Dachary
Sent: Thursday, February 21, 2002 2:11 PM
To: [email-masked]
Subject: RE: [Nel] contrib and fix

	Cheers,

---

From: Loic Dachary <[email-masked]>
Date: Mon, 25 Feb 2002 20:59:51 +0100

> look at puting it on the site as soon as they've done their legal wot-not.

	Ok. It may be useful to tell them that this assignement has
been used successfully during more than ten years, world wide. The
success is not measured in terms of lawsuits but in terms of informal
GNU GPL enforcement. Thanks to these assignments (among other things),
the GNU GPL was enforced a number of times in various countries in the
past ten years without the need to resort to court, even once. 

	There is a whole theory behind, see

http://emoglen.law.columbia.edu/ and specifically
http://emoglen.law.columbia.edu/publications/lu-12.html, 
http://emoglen.law.columbia.edu/publications/lu-13.html.

	Cheers,