{
char *linkloc;
- linkloc = (char *) pg_malloc(strlen(pg_data) + 8 + 2);
- sprintf(linkloc, "%s/pg_xlog", pg_data);
+ /* clean up xlog directory name, check it's absolute */
+ canonicalize_path(xlog_dir);
+ if (!is_absolute_path(xlog_dir))
+ {
+ fprintf(stderr, _("%s: xlog directory location must be an absolute path\n"), progname);
+ exit_nicely();
+ }
/* check if the specified xlog directory is empty */
switch (check_data_dir(xlog_dir))
exit_nicely();
}
else
- {
check_ok();
- }
made_new_xlogdir = true;
break;
_("If you want to store the transaction log there, either\n"
"remove or empty the directory \"%s\".\n"),
xlog_dir);
- exit(1); /* no further message needed */
+ exit_nicely();
default:
/* Trouble accessing directory */
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, linkloc) != 0)
{