[sword-devel] Win32 FileMgr Subclass

Tobias Klein contact at tklein.info
Sun Jul 26 16:56:15 EDT 2020


Hi Troy,

The latest version builds successfully.

I created a new intermediate release of sword-build-win32 for further 
testing on Windows:

https://github.com/tobias-klein/sword-build-win32/releases/tag/v1.8.900-2020-07-26

Best regards,
Tobias

On 7/26/20 8:37 PM, Troy A. Griffitts wrote:
>
> Thanks Tobias,
>
> I've made these updates and should have fixed the error in filemgr.cpp 
> on line 410. I appreciate the feedback.  Please update and try this 
> out and let me know.  Thanks for testing your compiler.
>
> Troy
>
>
> On 7/26/20 8:25 PM, Tobias Klein wrote:
>>
>> To address the errors below I had to add the include for <windows.h> 
>> both in *src/mgr/filemgr.cpp* and in *src/modules/commons/zipmgr.cpp*.
>>
>> After that I'm getting the next error:
>>
>> 1>C:\Users\tobi\Dev\sword-build-win32\sword\src\mgr\filemgr.cpp(410): 
>> error C2664: 'BOOL FindNextFileA(HANDLE,LPWIN32_FIND_DATAA)': cannot 
>> convert argument 2 from 'WIN32_FIND_DATAW *' to 'LPWIN32_FIND_DATAA'
>> 1>C:\Users\tobi\Dev\sword-build-win32\sword\src\mgr\filemgr.cpp(410): 
>> note: Types pointed to are unrelated; conversion requires 
>> reinterpret_cast, C-style cast or function-style cast
>>
>> Best regards,
>> Tobias
>>
>> On 7/26/20 4:44 PM, Troy A. Griffitts wrote:
>>>
>>> Can one of you guys try simply including <windows.h> at the top of 
>>> filemgr.cpp and see if this fixes it for you?
>>>
>>>
>>> On 7/26/20 4:01 PM, Tobias Klein wrote:
>>>>
>>>> I'm getting similar error messages with Visual Studio 2019. Note 
>>>> that I'm also generating the make files via CMake.
>>>>
>>>> First couple of error messages:
>>>>
>>>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,2): 
>>>> error C2065: 'WIN32_FIND_DATAW': undeclared identifier
>>>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,19): 
>>>> error C2146: syntax error: missing ';' before identifier 'fileData'
>>>>
>>>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,19): 
>>>> error C2065: 'fileData': undeclared identifier
>>>>
>>>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,2): 
>>>> error C2065: 'HANDLE': undeclared identifier
>>>>
>>>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,9): 
>>>> error C2146: syntax error: missing ';' before identifier 
>>>> 'findIterator'
>>>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,9): 
>>>> error C2065: 'findIterator': undeclared identifier
>>>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,51): 
>>>> error C2065: 'fileData': undeclared identifier
>>>>
>>>>
>>>> Best regards,
>>>> Tobias
>>>>
>>>> On 7/26/20 3:00 PM, Greg Hellings wrote:
>>>>>
>>>>>
>>>>> On Sun, Jul 26, 2020 at 6:42 AM Troy A. Griffitts 
>>>>> <scribe at crosswire.org <mailto:scribe at crosswire.org>> wrote:
>>>>>
>>>>>     I've just committed the last bit for fixing the WIN32 Unicode
>>>>>     issues.  If anyone can try compiling and running Xiphos
>>>>>     without the Xiphos patch or any other projects for Windows,
>>>>>     and let me know if things work for them in folders which
>>>>>     include Unicode character, I would appreciate it.  I've tested
>>>>>     BibleCS and it now works with a SWORD_PATH defined to
>>>>>     /books/χαρις.  I've tested using and installing modules in
>>>>>     this configuration and believe all the bugs are squashed, but
>>>>>     I would love confirmation from other projects.
>>>>>
>>>>>     Thanks for any feedback,
>>>>>
>>>>>     Troy
>>>>>
>>>>> During cross-compile I'm getting the following errors:
>>>>>
>>>>> [  6%] Building CXX object 
>>>>> CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj
>>>>> /usr/bin/i686-w64-mingw32-g++  -DCLUCENE2 -DCURLAVAILABLE 
>>>>> -DCURLSFTPAVAILABLE -DEXCLUDEBZIP2 -DEXCLUDEXZ 
>>>>> -DGLOBCONFPATH=\"/usr/i686-w64-mingw32/sys-root/mingw/etc/sword.conf\" 
>>>>> -DUSEICUREGEX -DUSELUCENE -DU_USING_ICU_NAMESPACE 
>>>>> -D_FTPLIB_NO_COMPAT -D_ICU_ -Dsword_EXPORTS 
>>>>> @CMakeFiles/sword.dir/includes_CXX.rsp -D_ICUSWORD_ -g3 -Wall -O0 
>>>>> -D_ICUSWORD_   -o CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj -c 
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp: In static 
>>>>> member function 'static std::vector<sword::DirEntry> 
>>>>> sword::FileMgr::getDirList(const char*, bool, bool)':
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:395:2: 
>>>>> error: 'WIN32_FIND_DATAW' was not declared in this scope
>>>>>   395 |  WIN32_FIND_DATAW fileData;
>>>>>       |  ^~~~~~~~~~~~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:398:2: 
>>>>> error: 'HANDLE' was not declared in this scope
>>>>>   398 |  HANDLE findIterator = FindFirstFileW(wcharPath, &fileData);
>>>>>       |  ^~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:399:6: 
>>>>> error: 'findIterator' was not declared in this scope
>>>>>   399 |  if (findIterator != INVALID_HANDLE_VALUE) {
>>>>>       |      ^~~~~~~~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:399:22: 
>>>>> error: 'INVALID_HANDLE_VALUE' was not declared in this scope
>>>>>   399 |  if (findIterator != INVALID_HANDLE_VALUE) {
>>>>>       |                      ^~~~~~~~~~~~~~~~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:401:35: 
>>>>> error: 'fileData' was not declared in this scope
>>>>>   401 |    SWBuf dirEntName = wcharToUTF8(fileData.cFileName);
>>>>>       |                                   ^~~~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:405:49: 
>>>>> error: 'FILE_ATTRIBUTE_DIRECTORY' was not declared in this scope
>>>>>   405 |     i.isDirectory = fileData.dwFileAttributes & 
>>>>> FILE_ATTRIBUTE_DIRECTORY;
>>>>>       |     ^~~~~~~~~~~~~~~~~~~~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:409:40: 
>>>>> error: 'fileData' was not declared in this scope
>>>>>   409 |   } while (FindNextFile(findIterator, &fileData) != 0);
>>>>>       |  ^~~~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:409:12: 
>>>>> error: 'FindNextFile' was not declared in this scope
>>>>>   409 |   } while (FindNextFile(findIterator, &fileData) != 0);
>>>>>       |            ^~~~~~~~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:410:3: 
>>>>> error: 'FindClose' was not declared in this scope; did you mean 
>>>>> '_findclose'?
>>>>>   410 |   FindClose(findIterator);
>>>>>       |   ^~~~~~~~~
>>>>>       |   _findclose
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:397:17: 
>>>>> warning: unused variable 'wcharPath' [-Wunused-variable]
>>>>>   397 |  const wchar_t *wcharPath = (const wchar_t 
>>>>> *)wcharBuf.getRawData();
>>>>>       |                 ^~~~~~~~~
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp: In static 
>>>>> member function 'static int sword::FileMgr::createParent(const 
>>>>> char*)':
>>>>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:436:5: 
>>>>> error: '_wmkdir' was not declared in this scope; did you mean 'mkdir'?
>>>>>   436 |     _wmkdir((const wchar_t *)utf8ToWChar(buf).getRawData());
>>>>>       |     ^~~~~~~
>>>>>       |     mkdir
>>>>> make[2]: *** [CMakeFiles/sword.dir/build.make:283: 
>>>>> CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj] Error 1
>>>>>
>>>>> I'm assuming there's a new package or macro I need to define? On 
>>>>> my system the WIN32_FIND_DATAW struct is defined in both 
>>>>> minwinbase.h and shtypes.h. I'm building with MinGW which might 
>>>>> have a different header structure than your compilers, if you're 
>>>>> using Borland?
>>>>>
>>>>> --Greg
>>>>>
>>>>>
>>>>>     On 7/20/20 7:18 PM, Greg Hellings wrote:
>>>>>>     Sorry for the previous blank email - user error when I tried
>>>>>>     to reply:
>>>>>>
>>>>>>     On Sun, Jul 19, 2020 at 2:40 PM Tobias Klein
>>>>>>     <contact at tklein.info <mailto:contact at tklein.info>> wrote:
>>>>>>
>>>>>>         Thanks for giving me the background on this, Karl! I
>>>>>>         appreciate it!
>>>>>>
>>>>>>         Is Xiphos the only frontend that has been patching Sword
>>>>>>         for this purpose? Then I suppose all other frontends
>>>>>>         suffer from this issue, huh?
>>>>>>
>>>>>>
>>>>>>     When I first encountered this patch in Xiphos I tested with
>>>>>>     BibleTime and The Sword Project for Windows and both of them
>>>>>>     do crash under these circumstances.
>>>>>>
>>>>>>     Yes, other toolkits such as Qt do have wrappers for this
>>>>>>     shortcoming already, but none of the other front ends I've
>>>>>>     worked with have bothered to put in the effort to produce a
>>>>>>     patched version of Sword to fix the crash.
>>>>>>
>>>>>>     --Greg
>>>>>>
>>>>>>     _______________________________________________
>>>>>>     sword-devel mailing list:sword-devel at crosswire.org  <mailto:sword-devel at crosswire.org>
>>>>>>     http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>>>     Instructions to unsubscribe/change your settings at above page
>>>>>     _______________________________________________
>>>>>     sword-devel mailing list: sword-devel at crosswire.org
>>>>>     <mailto:sword-devel at crosswire.org>
>>>>>     http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>>     Instructions to unsubscribe/change your settings at above page
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> sword-devel mailing list:sword-devel at crosswire.org
>>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>> Instructions to unsubscribe/change your settings at above page
>>>>
>>>> _______________________________________________
>>>> sword-devel mailing list:sword-devel at crosswire.org
>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>> Instructions to unsubscribe/change your settings at above page
>>>
>>> _______________________________________________
>>> sword-devel mailing list:sword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>> Instructions to unsubscribe/change your settings at above page
>>
>> _______________________________________________
>> sword-devel mailing list:sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20200726/b8a5f8b0/attachment-0001.html>


More information about the sword-devel mailing list