From 0693c70f577624e66fd660a888f2d2bcd3fc180b Mon Sep 17 00:00:00 2001 From: Greg Ercolano Date: Fri, 10 Jul 2020 21:49:00 -0700 Subject: First pass at fixing issue 99 A lot of code touched because low level functions needed to pass up error messages reliably, and this had to propagate up the entire driver hierarchy. Tested OK *in English* on: > Linux > OSX 10.10.x > Windows VS2017 > Windows mingw64 I have no way to test on Android, but it might work. TODO: Needs testing in other languages to verify proper UTF8 error messages, esp. with Windows VS, due to complexities with FormatMessage() -- see get_ms_errmsg() --- src/Fl_System_Driver.H | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/Fl_System_Driver.H') diff --git a/src/Fl_System_Driver.H b/src/Fl_System_Driver.H index 0474154d4..77a58971f 100644 --- a/src/Fl_System_Driver.H +++ b/src/Fl_System_Driver.H @@ -128,7 +128,9 @@ public: virtual int event_key(int k) {return 0;} virtual int get_key(int k) {return 0;} // implement scandir-like function - virtual int filename_list(const char *d, dirent ***list, int (*sort)(struct dirent **, struct dirent **) ) {return -1;} + virtual int filename_list(const char *d, dirent ***list, + int (*sort)(struct dirent **, struct dirent **), + char *errmsg=NULL, int errmsg_sz=0) {return -1;} // the default implementation of filename_expand() may be enough virtual int filename_expand(char *to, int tolen, const char *from); // to implement @@ -162,7 +164,9 @@ public: // implement to support Fl_File_Browser::load() virtual int file_browser_load_filesystem(Fl_File_Browser *browser, char *filename, int lname, Fl_File_Icon *icon) {return 0;} // the default implementation of file_browser_load_directory() should be enough - virtual int file_browser_load_directory(const char *directory, char *filename, size_t name_size, dirent ***pfiles, Fl_File_Sort_F *sort); + virtual int file_browser_load_directory(const char *directory, char *filename, size_t name_size, + dirent ***pfiles, Fl_File_Sort_F *sort, + char *errmsg=NULL, int errmsg_sz=0); // implement to support Fl_Preferences virtual void newUUID(char *uuidBuffer) { uuidBuffer[0] = 0; } // implement to support Fl_Preferences -- cgit v1.2.3