On Wed, Aug 31, 2022 at 12:14:33PM -0700, Andres Freund wrote: > On 2022-08-27 14:06:32 +0530, Bharath Rupireddy wrote: >> - if (lstat(fromfile, &fst) < 0) >> - ereport(ERROR, >> - (errcode_for_file_access(), >> - errmsg("could not stat file \"%s\": >> %m", fromfile))); >> + xlde_type = get_dirent_type(fromfile, xlde, false, ERROR); >> >> - if (S_ISDIR(fst.st_mode)) >> + if (xlde_type == PGFILETYPE_DIR) >> { >> /* recurse to handle subdirectories */ >> if (recurse) >> copydir(fromfile, tofile, true); >> } >> - else if (S_ISREG(fst.st_mode)) >> + else if (xlde_type == PGFILETYPE_REG) >> copy_file(fromfile, tofile); >> } >> FreeDir(xldir); > > It continues to make no sense to me to add behaviour changes around > error-handling as part of a conversion to get_dirent_type(). I don't at all > understand why e.g. the above change to make copydir() silently skip over > files it can't stat is ok?
In this example, the call to get_dirent_type() should ERROR if the call to lstat() fails (the "elevel" argument is set to ERROR). -- Nathan Bossart Amazon Web Services: https://aws.amazon.com