@markjolesen I'm not sure I understand your statements. I analyzed the code and came to this conclusion (please correct me if I misunderstood something or my conclusion is wrong):
Our only "use case" is to build the FLTK library and fl_scandir() is not part of the public API. You wrote:
if USE_X11 is defined but HAVE_SCANDIR is undefined, you will get a linker error because fl_scandiir is not implemented
That's obviously wrong (maybe a typo?) because the condition is:
#if defined(USE_X11) && !defined(HAVE_SCANDIR)
... but anyway: this is the only condition when fl_scandir() needs to be defined. It is called exactly once in Fl_X11_System_Driver.cxx, line 485:
Fl_X11_System_Driver.cxx-483-#ifndef HAVE_SCANDIR
Fl_X11_System_Driver.cxx-484- // This version is when we define our own scandir. Note it updates errmsg on errors.
Fl_X11_System_Driver.cxx:485: int n = fl_scandir(dirloc, list, 0, sort, errmsg, errmsg_sz);
Fl_X11_System_Driver.cxx-486-#elif defined(HAVE_SCANDIR_POSIX)
Fl_X11_System_Driver.cxx-487- // POSIX (2008) defines the comparison function like this:
Fl_X11_System_Driver.cxx-488- int n = scandir(dirloc, list, 0, (int(*)(const dirent **, const dirent **))sort);
Fl_X11_System_Driver.cxx-489-#elif defined(__osf__)
. . .
The (otherwise) "empty" #else case at the end of the file has this dummy typedef only to silence a compiler warning. So I am pretty sure there's nothing wrong with the code as-is. Note also that this file is only compiled if USE_X11 is defined (this condition could be removed, it's a leftover from previous versions).
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.
[ Direct Link to Message ] |