[sword-devel] Win32 FileMgr Subclass
Troy A. Griffitts
scribe at crosswire.org
Sun Jul 26 10:44:10 EDT 2020
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20200726/279bcc9f/attachment-0001.html>
More information about the sword-devel
mailing list