Hi, On 2022-04-08 13:18:57 -0700, Nathan Bossart wrote: > @@ -1035,32 +1036,9 @@ ParseConfigDirectory(const char *includedir, > > join_path_components(filename, directory, de->d_name); > canonicalize_path(filename); > - if (stat(filename, &st) == 0) > + de_type = get_dirent_type(filename, de, true, elevel); > + if (de_type == PGFILETYPE_ERROR) > { > - if (!S_ISDIR(st.st_mode)) > - { > - /* Add file to array, increasing its size in > blocks of 32 */ > - if (num_filenames >= size_filenames) > - { > - size_filenames += 32; > - filenames = (char **) > repalloc(filenames, > - > size_filenames * sizeof(char *)); > - } > - filenames[num_filenames] = pstrdup(filename); > - num_filenames++; > - } > - } > - else > - { > - /* > - * stat does not care about permissions, so the most > likely reason > - * a file can't be accessed now is if it was removed > between the > - * directory listing and now. > - */ > - ereport(elevel, > - (errcode_for_file_access(), > - errmsg("could not stat file \"%s\": > %m", > - filename))); > record_config_file_error(psprintf("could not stat file > \"%s\"", > > filename), > > calling_file, calling_lineno, > @@ -1068,6 +1046,18 @@ ParseConfigDirectory(const char *includedir, > status = false; > goto cleanup; > } > + else if (de_type != PGFILETYPE_DIR) > + { > + /* Add file to array, increasing its size in blocks of > 32 */ > + if (num_filenames >= size_filenames) > + { > + size_filenames += 32; > + filenames = (char **) repalloc(filenames, > + > size_filenames * sizeof(char *)); > + } > + filenames[num_filenames] = pstrdup(filename); > + num_filenames++; > + } > } > > if (num_filenames > 0)
Seems like the diff would be easier to read if it didn't move code around as much? Looks pretty reasonable, I'd be happy to commit it, I think. Greetings, Andres Freund