warning in pg_upgrade

Started by Kevin Grittnerabout 14 years ago4 messages
#1Kevin Grittner
Kevin.Grittner@wicourts.gov
1 attachment(s)

I just noticed a warning in pg_upgrade:

option.c: In function *parseCommandLine*:
option.c:96:8: warning: ignoring return value of *getcwd*,
declared
with attribute warn_unused_result

It looks like it might be worth testing the return value here for
NULL, which would indicate an error accessing the current working
directory. Untested patch attached for purposes of discussion.

http://www.kernel.org/doc/man-pages/online/pages/man3/getcwd.3.html

-Kevin

Attachments:

getcwd-return-value.patchtext/plain; name=getcwd-return-value.patchDownload
*** a/contrib/pg_upgrade/option.c
--- b/contrib/pg_upgrade/option.c
***************
*** 56,61 **** parseCommandLine(int argc, char *argv[])
--- 56,62 ----
  	int			option;			/* Command line option */
  	int			optindex = 0;	/* used by getopt_long */
  	int			os_user_effective_id;
+ 	char		*return_buf;
  
  	user_opts.transfer_mode = TRANSFER_MODE_COPY;
  
***************
*** 93,99 **** parseCommandLine(int argc, char *argv[])
  	if (os_user_effective_id == 0)
  		pg_log(PG_FATAL, "%s: cannot be run as root\n", os_info.progname);
  
! 	getcwd(os_info.cwd, MAXPGPATH);
  
  	while ((option = getopt_long(argc, argv, "d:D:b:B:cgG:kl:o:O:p:P:u:v",
  								 long_options, &optindex)) != -1)
--- 94,102 ----
  	if (os_user_effective_id == 0)
  		pg_log(PG_FATAL, "%s: cannot be run as root\n", os_info.progname);
  
! 	return_buf = getcwd(os_info.cwd, MAXPGPATH);
! 	if (return_buf == NULL)
! 		pg_log(PG_FATAL, "Could not access current working directory: %s\n", getErrorText(errno));
  
  	while ((option = getopt_long(argc, argv, "d:D:b:B:cgG:kl:o:O:p:P:u:v",
  								 long_options, &optindex)) != -1)
#2Kevin Grittner
Kevin.Grittner@wicourts.gov
In reply to: Kevin Grittner (#1)
Re: warning in pg_upgrade

"Kevin Grittner" <Kevin.Grittner@wicourts.gov> wrote:

Untested patch attached for purposes of discussion.

I got in a little testing on it -- not only does this patch
eliminate the compile-time warning, but if you try to run pg_upgrade
when another session has removed your current working directory, you
get a reasonable message instead of the program attempting to
proceed with undefined (potential garbage) for a working directory.

-Kevin

#3Robert Haas
robertmhaas@gmail.com
In reply to: Kevin Grittner (#2)
Re: warning in pg_upgrade

On Thu, Nov 3, 2011 at 3:45 PM, Kevin Grittner
<Kevin.Grittner@wicourts.gov> wrote:

"Kevin Grittner" <Kevin.Grittner@wicourts.gov> wrote:

Untested patch attached for purposes of discussion.

I got in a little testing on it -- not only does this patch
eliminate the compile-time warning, but if you try to run pg_upgrade
when another session has removed your current working directory, you
get a reasonable message instead of the program attempting to
proceed with undefined (potential garbage) for a working directory.

Committed. Also fixed another compiler warning that popped up for me.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#4Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#3)
Re: warning in pg_upgrade

Robert Haas wrote:

On Thu, Nov 3, 2011 at 3:45 PM, Kevin Grittner
<Kevin.Grittner@wicourts.gov> wrote:

"Kevin Grittner" <Kevin.Grittner@wicourts.gov> wrote:

Untested patch attached for purposes of discussion.

I got in a little testing on it -- not only does this patch
eliminate the compile-time warning, but if you try to run pg_upgrade
when another session has removed your current working directory, you
get a reasonable message instead of the program attempting to
proceed with undefined (potential garbage) for a working directory.

Committed. Also fixed another compiler warning that popped up for me.

Thanks Kevin and Robert.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +