[libgfortran,patch] MinGW wrapper for getlogin, gethostname and getpid functions
FX Coudert
fxcoudert@gmail.com
Sun Sep 25 16:23:00 GMT 2005
>>+/* Windows32 version */
>>+#if defined __MINGW32__ && !defined HAVE_GETLOGIN
>>+#define WIN32_MEAN_AND_LEAN
>>+#include <windows.h>
>>+#include <lmcons.h> /* for UNLEN */
>>+
>>+static char *
>>+w32_getlogin (void)
>
> This is wrong. For all other OS's, we have
>
> void PREFIX(getlog) (char *, gfc_charlen_type);
> export_proto_np(PREFIX(getlog));
>
> void
> PREFIX(getlog) (char * login, gfc_charlen_type login_len)
> {
I think you're getting it wrong. This is only a wrapper function to
provide a functionnal getlog(), which is then used as usual in
PREFIX(getlog). The entire relevant section of that file looks like:
/* Windows32 version */
#if defined __MINGW32__ && !defined HAVE_GETLOGIN
#define WIN32_MEAN_AND_LEAN
#include <windows.h>
#include <lmcons.h> /* for UNLEN */
static char *
w32_getlogin (void)
{
static char name [UNLEN + 1];
DWORD namelen = sizeof (name);
GetUserName (name, &namelen);
return (name[0] == 0 ? NULL : name);
}
#undef getlogin
#define getlogin w32_getlogin
#define HAVE_GETLOGIN 1
#endif
/* GETLOG (LOGIN), g77 intrinsic for retrieving the login name for the
process.
CHARACTER(len=*), INTENT(OUT) :: LOGIN */
#ifdef HAVE_GETLOGIN
void PREFIX(getlog) (char *, gfc_charlen_type);
export_proto_np(PREFIX(getlog));
void
PREFIX(getlog) (char * login, gfc_charlen_type login_len)
{
// here, we use getlog(), whether it is provided by the system or by
// the above mingw-specific wrapper
}
#endif
I'm not sure what I can say to convince you...
FX
More information about the Gcc-patches
mailing list