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

Commit36ba263

Browse files
committed
Clean up failure to use ClosePager() where appropriate in help.c.
Also prevent possible repeat opening of pager in helpSQL().
1 parentdebcec7 commit36ba263

File tree

1 file changed

+9
-31
lines changed

1 file changed

+9
-31
lines changed

‎src/bin/psql/help.c

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
*
44
* Copyright (c) 2000-2010, PostgreSQL Global Development Group
55
*
6-
* $PostgreSQL: pgsql/src/bin/psql/help.c,v 1.161 2010/08/12 00:40:59 tgl Exp $
6+
* $PostgreSQL: pgsql/src/bin/psql/help.c,v 1.162 2010/08/13 20:56:18 tgl Exp $
77
*/
88
#include"postgres_fe.h"
99

10-
#include<signal.h>
11-
1210
#ifndefWIN32
1311
#ifdefHAVE_PWD_H
1412
#include<pwd.h>/* for getpwuid() */
@@ -27,8 +25,6 @@
2725
#include<termios.h>
2826
#endif
2927

30-
#include"pqsignal.h"
31-
3228
#include"common.h"
3329
#include"help.h"
3430
#include"input.h"
@@ -271,13 +267,7 @@ slashUsage(unsigned short int pager)
271267
" \\lo_list\n"
272268
" \\lo_unlink LOBOID large object operations\n"));
273269

274-
if (output!=stdout)
275-
{
276-
pclose(output);
277-
#ifndefWIN32
278-
pqsignal(SIGPIPE,SIG_DFL);
279-
#endif
280-
}
270+
ClosePager(output);
281271
}
282272

283273

@@ -334,22 +324,15 @@ helpSQL(const char *topic, unsigned short int pager)
334324
fputc('\n',output);
335325
}
336326

337-
/* Only close if we used the pager */
338-
if (output!=stdout)
339-
{
340-
pclose(output);
341-
#ifndefWIN32
342-
pqsignal(SIGPIPE,SIG_DFL);
343-
#endif
344-
}
327+
ClosePager(output);
345328
}
346329
else
347330
{
348331
inti,
349332
j,
350333
x=0;
351334
boolhelp_found= false;
352-
FILE*output;
335+
FILE*output=NULL;
353336
size_tlen,
354337
wordlen;
355338
intnl_count=0;
@@ -376,7 +359,8 @@ helpSQL(const char *topic, unsigned short int pager)
376359
}
377360
if (wordlen >=len)/* Don't try again if the same word */
378361
{
379-
output=PageOutput(nl_count,pager);
362+
if (!output)
363+
output=PageOutput(nl_count,pager);
380364
break;
381365
}
382366
len=wordlen;
@@ -396,7 +380,8 @@ helpSQL(const char *topic, unsigned short int pager)
396380
}
397381
}
398382

399-
output=PageOutput(nl_count,pager);
383+
if (!output)
384+
output=PageOutput(nl_count,pager);
400385

401386
for (i=0;QL_HELP[i].cmd;i++)
402387
{
@@ -426,14 +411,7 @@ helpSQL(const char *topic, unsigned short int pager)
426411
if (!help_found)
427412
fprintf(output,_("No help available for \"%s\".\nTry \\h with no arguments to see available help.\n"),topic);
428413

429-
/* Only close if we used the pager */
430-
if (output!=stdout)
431-
{
432-
pclose(output);
433-
#ifndefWIN32
434-
pqsignal(SIGPIPE,SIG_DFL);
435-
#endif
436-
}
414+
ClosePager(output);
437415
}
438416
}
439417

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp