pg_id.c windows fix
Here's a patch for pg_id.c that lets it compile cleanly and run on Windows.
cheers
andrew
Index: src/bin/pg_id/pg_id.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_id/pg_id.c,v
retrieving revision 1.22.2.1
diff -c -w -r1.22.2.1 pg_id.c
*** src/bin/pg_id/pg_id.c 7 Sep 2003 04:37:04 -0000 1.22.2.1
--- src/bin/pg_id/pg_id.c 4 Oct 2003 13:33:30 -0000
***************
*** 38,43 ****
--- 38,44 ----
char pw_name[128];
} pass_win32;
struct passwd_win32 *pw = &pass_win32;
+ DWORD pwname_size = sizeof(pass_win32.pw_name) - 1;
pw->pw_uid = 1;
#endif
***************
*** 113,119 ****
exit(1);
}
! GetUserName(pw->pw_name, sizeof(pw->pw_name)-1);
#endif
if (!limit_user_info)
--- 114,120 ----
exit(1);
}
! GetUserName(pw->pw_name, &pwname_size);
#endif
if (!limit_user_info)
Can you tell me what Win32 compile environment can't handle a sizeof()
as a function parameter?
! GetUserName(pw->pw_name, sizeof(pw->pw_name)-1);
Does casting to DWORD help?
---------------------------------------------------------------------------
Andrew Dunstan wrote:
Here's a patch for pg_id.c that lets it compile cleanly and run on Windows.
cheers
andrew
Index: src/bin/pg_id/pg_id.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_id/pg_id.c,v retrieving revision 1.22.2.1 diff -c -w -r1.22.2.1 pg_id.c *** src/bin/pg_id/pg_id.c 7 Sep 2003 04:37:04 -0000 1.22.2.1 --- src/bin/pg_id/pg_id.c 4 Oct 2003 13:33:30 -0000 *************** *** 38,43 **** --- 38,44 ---- char pw_name[128]; } pass_win32; struct passwd_win32 *pw = &pass_win32; + DWORD pwname_size = sizeof(pass_win32.pw_name) - 1;pw->pw_uid = 1;
#endif
***************
*** 113,119 ****
exit(1);
}! GetUserName(pw->pw_name, sizeof(pw->pw_name)-1);
#endifif (!limit_user_info) --- 114,120 ---- exit(1); }! GetUserName(pw->pw_name, &pwname_size);
#endifif (!limit_user_info)
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
On Sun, 5 Oct 2003, Bruce Momjian wrote:
Can you tell me what Win32 compile environment can't handle a sizeof()
as a function parameter?! GetUserName(pw->pw_name, sizeof(pw->pw_name)-1);
Does casting to DWORD help?
! GetUserName(pw->pw_name, &pwname_size);
It looks like the second argument is supposed to be a pointer and probably
returns back the length actually used (if it follows the pattern of other
win32 calls)
It's something like:
BOOL GetUserName(
LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);
That's not the issue. It complained because it wanted a pointer to the size.
The relevant lines in winbase.h files are:
BOOL WINAPI GetUserNameA (LPSTR,PDWORD);
#define GetUserName GetUserNameA
I am using Mingw.
cheers
andrew
----- Original Message -----
From: "Bruce Momjian" <pgman@candle.pha.pa.us>
To: "Andrew Dunstan" <andrew@dunslane.net>
Cc: "PG Patches" <pgsql-patches@postgresql.org>
Sent: Sunday, October 05, 2003 12:17 AM
Subject: Re: [PATCHES] pg_id.c windows fix
Can you tell me what Win32 compile environment can't handle a sizeof()
as a function parameter?! GetUserName(pw->pw_name, sizeof(pw->pw_name)-1);
Does casting to DWORD help?
--------------------------------------------------------------------------
-
Andrew Dunstan wrote:
Here's a patch for pg_id.c that lets it compile cleanly and run on
Windows.
cheers
andrew
Index: src/bin/pg_id/pg_id.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_id/pg_id.c,v retrieving revision 1.22.2.1 diff -c -w -r1.22.2.1 pg_id.c *** src/bin/pg_id/pg_id.c 7 Sep 2003 04:37:04 -0000 1.22.2.1 --- src/bin/pg_id/pg_id.c 4 Oct 2003 13:33:30 -0000 *************** *** 38,43 **** --- 38,44 ---- char pw_name[128]; } pass_win32; struct passwd_win32 *pw = &pass_win32; + DWORD pwname_size = sizeof(pass_win32.pw_name) - 1;pw->pw_uid = 1;
#endif
***************
*** 113,119 ****
exit(1);
}! GetUserName(pw->pw_name, sizeof(pw->pw_name)-1);
#endifif (!limit_user_info) --- 114,120 ---- exit(1); }! GetUserName(pw->pw_name, &pwname_size);
#endifif (!limit_user_info)
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania
19073
Show quoted text
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster
OK, patch applied. I changed DWORD to unsigned long.
---------------------------------------------------------------------------
Andrew Dunstan wrote:
Here's a patch for pg_id.c that lets it compile cleanly and run on Windows.
cheers
andrew
Index: src/bin/pg_id/pg_id.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_id/pg_id.c,v retrieving revision 1.22.2.1 diff -c -w -r1.22.2.1 pg_id.c *** src/bin/pg_id/pg_id.c 7 Sep 2003 04:37:04 -0000 1.22.2.1 --- src/bin/pg_id/pg_id.c 4 Oct 2003 13:33:30 -0000 *************** *** 38,43 **** --- 38,44 ---- char pw_name[128]; } pass_win32; struct passwd_win32 *pw = &pass_win32; + DWORD pwname_size = sizeof(pass_win32.pw_name) - 1;pw->pw_uid = 1;
#endif
***************
*** 113,119 ****
exit(1);
}! GetUserName(pw->pw_name, sizeof(pw->pw_name)-1);
#endifif (!limit_user_info) --- 114,120 ---- exit(1); }! GetUserName(pw->pw_name, &pwname_size);
#endifif (!limit_user_info)
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073