reporting in contains invalid data.
filename)));
close(fd);
+ if (len == 0)
+ {
+ ereport(FATAL,
+ (errcode(ERRCODE_LOCK_FILE_EXISTS),
+ errmsg("lock file \"%s\" is empty", filename),
+ errhint("Either another server is starting, or the lock file is the remnant of a previous server startup crash.")));
+ }
+
buffer[len] = '\0';
encoded_pid = atoi(buffer);
}
if (fscanf(pidf, "%ld", &pid) != 1)
{
- write_stderr(_("%s: invalid data in PID file \"%s\"\n"),
- progname, pid_file);
+ /* Is the file empty? */
+ if (ftell(pidf) == 0 && feof(pidf))
+ write_stderr(_("%s: the PID file \"%s\" is empty\n"),
+ progname, pid_file);
+ else
+ write_stderr(_("%s: invalid data in PID file \"%s\"\n"),
+ progname, pid_file);
exit(1);
}
fclose(pidf);