Skip to content
Snippets Groups Projects
Commit d9250da0 authored by Robert Haas's avatar Robert Haas
Browse files

Fixups for dsm.c's file descriptor handling.

Per complaint from Tom Lane.
parent 33d3f559
No related branches found
No related tags found
No related merge requests found
......@@ -301,14 +301,14 @@ dsm_cleanup_for_mmap(void)
struct dirent *dent;
/* Open the directory; can't use AllocateDir in postmaster. */
if ((dir = opendir(PG_DYNSHMEM_DIR)) == NULL)
if ((dir = AllocateDir(PG_DYNSHMEM_DIR)) == NULL)
ereport(ERROR,
(errcode_for_file_access(),
errmsg("could not open directory \"%s\": %m",
PG_DYNSHMEM_DIR)));
/* Scan for something with a name of the correct format. */
while ((dent = readdir(dir)) != NULL)
while ((dent = ReadDir(dir, PG_DYNSHMEM_DIR)) != NULL)
{
if (strncmp(dent->d_name, PG_DYNSHMEM_MMAP_FILE_PREFIX,
strlen(PG_DYNSHMEM_MMAP_FILE_PREFIX)) == 0)
......@@ -335,7 +335,7 @@ dsm_cleanup_for_mmap(void)
}
/* Cleanup complete. */
closedir(dir);
FreeDir(dir);
}
/*
......@@ -357,7 +357,7 @@ dsm_read_state_file(dsm_handle *h)
dsm_handle handle;
/* Read the state file to get the ID of the old control segment. */
statefd = open(PG_DYNSHMEM_STATE_FILE, O_RDONLY | PG_BINARY, 0);
statefd = BasicOpenFile(PG_DYNSHMEM_STATE_FILE, O_RDONLY | PG_BINARY, 0);
if (statefd < 0)
{
if (errno == ENOENT)
......@@ -369,10 +369,13 @@ dsm_read_state_file(dsm_handle *h)
}
nbytes = read(statefd, statebuf, PG_DYNSHMEM_STATE_BUFSIZ - 1);
if (nbytes < 0)
{
close(statefd);
ereport(ERROR,
(errcode_for_file_access(),
errmsg("could not read file \"%s\": %m",
PG_DYNSHMEM_STATE_FILE)));
}
/* make sure buffer is NUL terminated */
statebuf[nbytes] = '\0';
close(statefd);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment