Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
55a92063
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
55a92063
编写于
1月 09, 2004
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow psql to handle tilde user expansion for file names.
Zach Irmen
上级
38081fd0
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
83 addition
and
4 deletion
+83
-4
src/bin/psql/command.c
src/bin/psql/command.c
+15
-1
src/bin/psql/common.c
src/bin/psql/common.c
+63
-1
src/bin/psql/common.h
src/bin/psql/common.h
+3
-1
src/bin/psql/copy.c
src/bin/psql/copy.c
+2
-1
未找到文件。
src/bin/psql/command.c
浏览文件 @
55a92063
...
...
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.10
8 2003/12/01 22:21:54
momjian Exp $
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.10
9 2004/01/09 21:12:20
momjian Exp $
*/
#include "postgres_fe.h"
#include "command.h"
...
...
@@ -413,6 +413,7 @@ exec_command(const char *cmd,
else
{
fname
=
scan_option
(
&
string
,
OT_NORMAL
,
NULL
,
true
);
expand_tilde
(
&
fname
);
status
=
do_edit
(
fname
,
query_buf
)
?
CMD_NEWEDIT
:
CMD_ERROR
;
free
(
fname
);
}
...
...
@@ -494,7 +495,10 @@ exec_command(const char *cmd,
if
(
!
fname
)
pset
.
gfname
=
NULL
;
else
{
expand_tilde
(
&
fname
);
pset
.
gfname
=
xstrdup
(
fname
);
}
free
(
fname
);
status
=
CMD_SEND
;
}
...
...
@@ -531,6 +535,7 @@ exec_command(const char *cmd,
}
else
{
expand_tilde
(
&
fname
);
success
=
(
process_file
(
fname
)
==
EXIT_SUCCESS
);
free
(
fname
);
}
...
...
@@ -561,7 +566,10 @@ exec_command(const char *cmd,
success
=
false
;
}
else
{
expand_tilde
(
&
opt2
);
success
=
do_lo_export
(
opt1
,
opt2
);
}
}
else
if
(
strcmp
(
cmd
+
3
,
"import"
)
==
0
)
...
...
@@ -572,7 +580,10 @@ exec_command(const char *cmd,
success
=
false
;
}
else
{
expand_tilde
(
&
opt1
);
success
=
do_lo_import
(
opt1
,
opt2
);
}
}
else
if
(
strcmp
(
cmd
+
3
,
"list"
)
==
0
)
...
...
@@ -602,6 +613,7 @@ exec_command(const char *cmd,
{
char
*
fname
=
scan_option
(
&
string
,
OT_FILEPIPE
,
NULL
,
true
);
expand_tilde
(
&
fname
);
success
=
setQFout
(
fname
);
free
(
fname
);
}
...
...
@@ -653,6 +665,7 @@ exec_command(const char *cmd,
{
char
*
fname
=
scan_option
(
&
string
,
OT_NORMAL
,
NULL
,
true
);
expand_tilde
(
&
fname
);
success
=
saveHistory
(
fname
?
fname
:
"/dev/tty"
);
if
(
success
&&
!
quiet
&&
fname
)
...
...
@@ -771,6 +784,7 @@ exec_command(const char *cmd,
else
{
fname
=
scan_option
(
&
string
,
OT_FILEPIPE
,
NULL
,
true
);
expand_tilde
(
&
fname
);
if
(
!
fname
)
{
...
...
src/bin/psql/common.c
浏览文件 @
55a92063
...
...
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.7
8 2003/11/29 19:52:06 pgsql
Exp $
* $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.7
9 2004/01/09 21:12:20 momjian
Exp $
*/
#include "postgres_fe.h"
#include "common.h"
...
...
@@ -814,3 +814,65 @@ session_username(void)
else
return
PQuser
(
pset
.
db
);
}
/* expand_tilde
*
* substitute '~' with HOME or '~username' with username's home dir
*
*/
char
*
expand_tilde
(
char
**
filename
)
{
if
(
!
filename
||
!
(
*
filename
))
return
NULL
;
/* MSDOS uses tilde for short versions of long file names, so skip it. */
#ifndef WIN32
/* try tilde expansion */
if
(
**
filename
==
'~'
)
{
char
*
fn
;
char
*
home
;
char
oldp
,
*
p
;
struct
passwd
*
pw
;
fn
=
*
filename
;
home
=
NULL
;
p
=
fn
+
1
;
while
(
*
p
!=
'/'
&&
*
p
!=
'\0'
)
p
++
;
oldp
=
*
p
;
*
p
=
'\0'
;
if
(
*
(
fn
+
1
)
==
'\0'
)
home
=
getenv
(
"HOME"
);
else
if
((
pw
=
getpwnam
(
fn
+
1
))
!=
NULL
)
home
=
pw
->
pw_dir
;
*
p
=
oldp
;
if
(
home
)
{
char
*
newfn
;
newfn
=
malloc
(
strlen
(
home
)
+
strlen
(
p
)
+
1
);
if
(
!
newfn
)
{
psql_error
(
"out of memory
\n
"
);
exit
(
EXIT_FAILURE
);
}
strcpy
(
newfn
,
home
);
strcat
(
newfn
,
p
);
free
(
fn
);
*
filename
=
newfn
;
}
}
#endif
return
*
filename
;
}
src/bin/psql/common.h
浏览文件 @
55a92063
...
...
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/common.h,v 1.3
1 2003/12/01 22:14:4
0 momjian Exp $
* $PostgreSQL: pgsql/src/bin/psql/common.h,v 1.3
2 2004/01/09 21:12:2
0 momjian Exp $
*/
#ifndef COMMON_H
#define COMMON_H
...
...
@@ -58,4 +58,6 @@ extern char parse_char(char **buf);
#define pclose(x) _pclose(x)
#endif
extern
char
*
expand_tilde
(
char
**
filename
);
#endif
/* COMMON_H */
src/bin/psql/copy.c
浏览文件 @
55a92063
...
...
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.3
5 2003/12/01 22:14:4
0 momjian Exp $
* $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.3
6 2004/01/09 21:12:2
0 momjian Exp $
*/
#include "postgres_fe.h"
#include "copy.h"
...
...
@@ -221,6 +221,7 @@ parse_slash_copy(const char *args)
result
->
file
=
NULL
;
else
result
->
file
=
xstrdup
(
token
);
expand_tilde
(
&
result
->
file
);
token
=
strtokx
(
NULL
,
whitespace
,
NULL
,
NULL
,
0
,
false
,
pset
.
encoding
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录