Hi John,
 
I see no reason to give *nix functions names with leading underscore. The leading underscore was meant to specify the function as an internal tool, not to be called directly from user code. Unfortunately, the user callable function was recoded as a macro that called the __thing under the hood. So, altough it doesn't appear in the caller source code, it appears in the caller compiled code as a dependance that needs to be satisfied at link time.
 
The reason for all this was (from a comment in Mark Kilgard's header):
 
/* Win32 has an annoying issue where there are multiple C run-time
   libraries (CRTs).  If the executable is linked with a different CRT
   from the GLUT DLL, the GLUT DLL will not share the same CRT static
   data seen by the executable.  In particular, atexit callbacks registered
   in the executable will not be called if GLUT calls its (different)
   exit routine).  GLUT is typically built with the
   "/MD" option (the CRT with multithreading DLL support), but the Visual
   C++ linker default is "/ML" (the single threaded CRT).
   One workaround to this issue is requiring users to always link with
   the same CRT as GLUT is compiled with.  That requires users supply a
   non-standard option.  GLUT 3.7 has its own built-in workaround where
   the executable's "exit" function pointer is covertly passed to GLUT.
   GLUT then calls the executable's exit function pointer to ensure that
   any "atexit" calls registered by the application are called if GLUT
   needs to exit.
   Note that the __glut*WithExit routines should NEVER be called directly.
   To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */

 
> Date: Thu, 14 Apr 2011 12:47:51 -0500
> From: john.fay.ctr@eglin.af.mil
> To: freeglut-developer@lists.sourceforge.net
> Subject: Re: [Freeglut-developer] glutInitWithExit
>
> André,
>
> Thanks for the info. We will need to keep the present function name, then. (I am reminded of the story about the railroad gauge--the distances between the wheels--being set to maintain compatibility with a Roman chariot design from thousands of years ago.)
>
> I would still like to add the capability to the *nix side. Should we add the new function name without the underscores or should we give the *nix function the present name?
>
> John F. Fay
> Technical Fellow, Modeling and Simulation
> Jacobs Technology / TEAS Group
> P.O. Box 1935, Eglin AFB, FL 32542-5000
> 850-883-3496
>
>
> -----Original Message-----
> From: André Bleau [mailto:andre_bleau@hotmail.com]
> Sent: Thursday, April 14, 2011 12:40 PM
> To: freeglut-developer@lists.sourceforge.net
> Subject: Re: [Freeglut-developer] glutInitWithExit
>
> The name with leading underscores is necessary to keep compatibility with the most common version of GLUT on Windows: Nate Robin's version of GLUT (glut32.dll). If you remove it, you cannot replace glut32.dll by freeglut32.dll. You can add a version without the leading underscores, altough.
>
> - André
>
>
> ________________________________
>
> Date: Thu, 14 Apr 2011 12:20:31 -0500
> From: john.fay.ctr@eglin.af.mil
> To: freeglut-developer@lists.sourceforge.net
> Subject: [Freeglut-developer] glutInitWithExit
>
>
>
> Folks,
>
>
>
> In following Bertus' error, I find that the "glutInitWithExit" function is defined only for Windows hosts and has two underscores in front of its name. I would like VERY much for it to be implemented in *nix and renamed to remove the leading underscores. We will need to keep the name with the underscores for a while but it should be deprecated as soon as possible.
>
>
>
> John F. Fay
>
> Technical Fellow, Modeling and Simulation
>
> Jacobs Technology / TEAS Group
>
> P.O. Box 1935, Eglin AFB, FL 32542-5000
>
> 850-883-3496
>
>
>
>
> ------------------------------------------------------------------------------ Benefiting from Server Virtualization: Beyond Initial Workload Consolidation -- Increasing the use of server virtualization is a top priority.Virtualization can reduce costs, simplify management, and improve application availability and disaster protection. Learn more about boosting the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
> _______________________________________________ Freeglut-developer mailing list Freeglut-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freeglut-developer
>
> ------------------------------------------------------------------------------
> Benefiting from Server Virtualization: Beyond Initial Workload
> Consolidation -- Increasing the use of server virtualization is a top
> priority.Virtualization can reduce costs, simplify management, and improve
> application availability and disaster protection. Learn more about boosting
> the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
> _______________________________________________
> Freeglut-developer mailing list
> Freeglut-developer@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freeglut-developer