Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1d75298

Browse files
committed
Karel Zakr's revised patch to fix psql prompt for local host connections.
1 parent73f5b08 commit1d75298

File tree

2 files changed

+68
-20
lines changed

2 files changed

+68
-20
lines changed

‎doc/src/sgml/ref/psql-ref.sgml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!--
2-
$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.27 2000/03/01 21:09:56 petere Exp $
2+
$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.28 2000/03/11 13:56:23 petere Exp $
33
Postgres documentation
44
-->
55

@@ -1966,8 +1966,8 @@ testdb=> <userinput>\set content `sed -e "s/'/\\\\\\'/g" < my_file.txt`</userinp
19661966
<variablelist>
19671967
<varlistentry>
19681968
<term><literal>%M</literal></term>
1969-
<listitem><para>The hostname of the database server (or <quote>.</quote>
1970-
ifUnix domain socket).</para></listitem>
1969+
<listitem><para>Thefullhostname(with domainname)of the database server (or
1970+
<quote>localhost</quote>ifhostname information is not available).</para></listitem>
19711971
</varlistentry>
19721972

19731973
<varlistentry>

‎src/bin/psql/prompt.c

Lines changed: 65 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
*
44
* Copyright 2000 by PostgreSQL Global Development Group
55
*
6-
* $Header: /cvsroot/pgsql/src/bin/psql/prompt.c,v 1.10 2000/03/08 01:38:59 momjian Exp $
7-
*/
6+
* $Header: /cvsroot/pgsql/src/bin/psql/prompt.c,v 1.11 2000/03/11 13:56:24 petere Exp $
7+
*/
88
#include"postgres.h"
99
#include"prompt.h"
1010

@@ -19,7 +19,10 @@
1919
#include<win32.h>
2020
#endif
2121

22-
#include<sys/utsname.h>
22+
#if !defined(WIN32)&& !defined(__CYGWIN32__)&& !defined(__QNX__)
23+
#include<unistd.h>
24+
#include<netdb.h>
25+
#endif
2326

2427
/*--------------------------
2528
* get_prompt
@@ -29,9 +32,10 @@
2932
* (might not be completely multibyte safe)
3033
*
3134
* Defined interpolations are:
32-
* %M - database server hostname (or "." if not TCP/IP)
33-
* %m - like %M but hostname truncated after first dot
34-
* %> - database server port number (or "." if not TCP/IP)
35+
* %M - database server "hostname.domainname" (or "localhost" if this
36+
*information is not available)
37+
* %m - like %M, but hostname only (before first dot)
38+
* %> - database server port number
3539
* %n - database user name
3640
* %/ - current database
3741
* %~ - like %/ but "~" when database name equals user name
@@ -56,6 +60,51 @@
5660
* will be empty (not NULL!).
5761
*--------------------------
5862
*/
63+
64+
/*
65+
* We need hostname information, only if connection is via UNIX socket
66+
*/
67+
#if !defined(WIN32)&& !defined(__CYGWIN32__)&& !defined(__QNX__)
68+
69+
#defineDOMAINNAME1
70+
#defineHOSTNAME2
71+
72+
/*
73+
* Return full hostname for localhost.
74+
*- informations are init only in firts time - not queries DNS or NIS
75+
* for every localhost() call
76+
*/
77+
staticchar*
78+
localhost(inttype,char*buf,intsiz)
79+
{
80+
staticstructhostent*hp=NULL;
81+
staticinterr=0;
82+
83+
if (hp==NULL&&err==0)
84+
{
85+
charhname[256];
86+
87+
if (gethostname(hname,256)==0)
88+
{
89+
if (!(hp=gethostbyname(hname)))
90+
err=1;
91+
}
92+
else
93+
err=1;
94+
}
95+
96+
if (hp==NULL)
97+
returnstrncpy(buf,"localhost",siz);
98+
99+
strncpy(buf,hp->h_name,siz);/* full aaa.bbb.ccc */
100+
101+
if (type==HOSTNAME)
102+
buf[strcspn(buf,".")]='\0';
103+
104+
returnbuf;
105+
}
106+
#endif
107+
59108
char*
60109
get_prompt(promptStatus_tstatus)
61110
{
@@ -115,23 +164,22 @@ get_prompt(promptStatus_t status)
115164
case'm':
116165
if (pset.db)
117166
{
167+
/* INET socket */
118168
if (PQhost(pset.db))
119169
{
120170
strncpy(buf,PQhost(pset.db),MAX_PROMPT_SIZE);
121171
if (*p=='m')
122172
buf[strcspn(buf,".")]='\0';
123173
}
124-
elseif (*p=='M')
125-
buf[0]='.';
126-
else
127-
{
128-
structutsnameubuf;
129-
130-
if (uname(&ubuf)<0)
131-
buf[0]='.';
132-
else
133-
strncpy(buf,ubuf.nodename,MAX_PROMPT_SIZE);
134-
}
174+
/* UNIX socket */
175+
#if !defined(WIN32)&& !defined(__CYGWIN32__)&& !defined(__QNX__)
176+
else {
177+
if (*p=='m')
178+
localhost(HOSTNAME,buf,MAX_PROMPT_SIZE);
179+
else
180+
localhost(DOMAINNAME,buf,MAX_PROMPT_SIZE);
181+
}
182+
#endif
135183
}
136184
break;
137185
/* DB server port number */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp