@ -2505,6 +2505,7 @@ main(int argc, char *argv[])
char * pgdenv ; /* PGDATA value gotten from and sent to
* environment */
char bin_dir [ MAXPGPATH ] ;
char * xlogsubdirloc ;
char * pg_data_native ;
int user_enc ;
@ -2513,7 +2514,6 @@ main(int argc, char *argv[])
# endif
static const char * subdirs [ ] = {
" global " ,
" pg_xlog " ,
" pg_xlog/archive_status " ,
" pg_clog " ,
" pg_notify " ,
@ -3082,11 +3082,12 @@ main(int argc, char *argv[])
exit_nicely ( ) ;
}
/* Create transaction log symlink, if required */
/* Create transaction log directory, and symlink if required */
xlogsubdirloc = ( char * ) pg_malloc ( strlen ( pg_data ) + 8 + 1 ) ;
sprintf ( xlogsubdirloc , " %s/pg_xlog " , pg_data ) ;
if ( strcmp ( xlog_dir , " " ) ! = 0 )
{
char * linkloc ;
/* clean up xlog directory name, check it's absolute */
canonicalize_path ( xlog_dir ) ;
if ( ! is_absolute_path ( xlog_dir ) )
@ -3152,15 +3153,11 @@ main(int argc, char *argv[])
exit_nicely ( ) ;
}
/* form name of the place where the symlink must go */
linkloc = ( char * ) pg_malloc ( strlen ( pg_data ) + 8 + 1 ) ;
sprintf ( linkloc , " %s/pg_xlog " , pg_data ) ;
# ifdef HAVE_SYMLINK
if ( symlink ( xlog_dir , link loc) ! = 0 )
if ( symlink ( xlog_dir , xlogsubdirloc ) ! = 0 )
{
fprintf ( stderr , _ ( " %s: could not create symbolic link \" %s \" : %s \n " ) ,
progname , link loc, strerror ( errno ) ) ;
progname , xlogsubdir loc, strerror ( errno ) ) ;
exit_nicely ( ) ;
}
# else
@ -3168,8 +3165,18 @@ main(int argc, char *argv[])
exit_nicely ( ) ;
# endif
}
else
{
/* Without -X option, just make the subdirectory normally */
if ( mkdir ( xlogsubdirloc , S_IRWXU ) < 0 )
{
fprintf ( stderr , _ ( " %s: could not create directory \" %s \" : %s \n " ) ,
progname , xlogsubdirloc , strerror ( errno ) ) ;
exit_nicely ( ) ;
}
}
/* Create required subdirectories */
/* Create required subdirectories (other than pg_xlog) */
printf ( _ ( " creating subdirectories ... " ) ) ;
fflush ( stdout ) ;