pg_id.c windows fix

Started by Andrew Dunstanalmost 23 years ago5 messagespatches
Jump to latest
#1Andrew Dunstan
andrew@dunslane.net

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)

#2Bruce Momjian
bruce@momjian.us
In reply to: Andrew Dunstan (#1)
Re: 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);
#endif

if (!limit_user_info)
--- 114,120 ----
exit(1);
}

! GetUserName(pw->pw_name, &pwname_size);
#endif

if (!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
#3Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Bruce Momjian (#2)
Re: pg_id.c windows fix

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
);

#4Andrew Dunstan
andrew@dunslane.net
In reply to: Bruce Momjian (#2)
Re: pg_id.c windows fix

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);
#endif

if (!limit_user_info)
--- 114,120 ----
exit(1);
}

! GetUserName(pw->pw_name, &pwname_size);
#endif

if (!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

#5Bruce Momjian
bruce@momjian.us
In reply to: Andrew Dunstan (#1)
Re: pg_id.c windows fix

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);
#endif

if (!limit_user_info)
--- 114,120 ----
exit(1);
}

! GetUserName(pw->pw_name, &pwname_size);
#endif

if (!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