Review Request 119247: Fix the build of udsentry.cpp on Windows (msvc2013 32 bits)
Alexander Richardson
arichardson.kde at gmail.com
Mon Jul 14 20:56:52 UTC 2014
> On Juli 13, 2014, 1:17 nachm., Mark Gaiser wrote:
> > src/core/udsentry.cpp, line 72
> > <https://git.reviewboard.kde.org/r/119247/diff/2/?file=289937#file289937line72>
> >
> > I'm not sure if this is the correct approach either.
> >
> > When i'm looking at file.cpp (in kio/src/ioslaves/file/file.cpp) then this very same thing is done. So from a mac/linux perspective, this aproach is fine.
> >
> > However, we also have a specific windows implementation "file_win.cpp" which is in fact filling the username and group via a slightly different mechanism.
> >
> > On Linux/Mac: we use stat calls. Aka, we are completely in control.
> > On Windows we (why?) use QDirIterator. Each entry is then represented as a QFileInfo which in turn is being used to get the details from inclusing user/group.
> >
> > I can see a few approaches that could work:
> > 1. This version where windows is just out of luck.
> > 2. If windows is used, contruct a QFileInfo and get the user/group from there. Windows users will then have more stat calls in this function. Something we should try to prevent.
> > 3. This version and add a new constructor that takes a QFileInfo object - my preference.
> >
> > ... I think we need to wait for David' opinion on this. If David is OK with point 3 then i will create a patch + test and send a RR for it.
>
> Cristian Oneț wrote:
> Waiting for David's opinion about the best way to fix this.
>
> David Faure wrote:
> Mark: so this method is simply not used on Windows? Then I don't see the problem with this patch...
>
> Yes an overload with a QFileInfo would be ok too, but that's somewhat unrelated to this patch.
>
> Mark Gaiser wrote:
> In that case this patch is a Ship it.
> An overload for QFileInfo will come later this week on RR.
I guess on windows we should just use the native win32 api and not stat() since that is just a compatibility wrapper for UNIX programs (with some fields like st_uid and st_gid being always zero). Using the native API would also allow getting proper owner/group information there. My old Windows development machine no longer works, so I can't do it now. I can however try to implement this this once the new computer has arrived.
- Alexander
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/119247/#review62245
-----------------------------------------------------------
On Juli 14, 2014, 7:33 nachm., Cristian Oneț wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/119247/
> -----------------------------------------------------------
>
> (Updated Juli 14, 2014, 7:33 nachm.)
>
>
> Review request for KDE Frameworks and kdewin.
>
>
> Repository: kio
>
>
> Description
> -------
>
> The KUser(K_UID) constructor could not be mached since st_uid is a 'short' which can't be implicitly cast to a pointer type (K_UID is of type void * on Windows). The same applies to KUserGroup.
>
> Here is the compiler output:
>
> q:\kio\src\core\udsentry.cpp(72) : error C2440: '<function-style-cast>' : cannot convert from 'const short' to 'KUser'
> No constructor could take the source type, or constructor overload resolution was ambiguous
> q:\kio\src\core\udsentry.cpp(72) : error C2228: left of '.loginName' must have class/struct/union
> q:\kio\src\core\udsentry.cpp(72) : error C2661: 'KIO::UDSEntry::insert' : no overloaded function takes 1 arguments
> q:\kio\src\core\udsentry.cpp(73) : error C2440: '<function-style-cast>' : cannot convert from 'const short' to 'KUserGroup'
> No constructor could take the source type, or constructor overload resolution was ambiguous
> q:\kio\src\core\udsentry.cpp(73) : error C2228: left of '.name' must have class/struct/union
> q:\kio\src\core\udsentry.cpp(73) : error C2661: 'KIO::UDSEntry::insert' : no overloaded function takes 1 arguments
>
>
> Diffs
> -----
>
> src/core/udsentry.cpp c6ac21a1f7b45822bc3454409faf3dbdce7b2acc
>
> Diff: https://git.reviewboard.kde.org/r/119247/diff/
>
>
> Testing
> -------
>
> Build with msvc2013 on Windows and gcc-4.8.3 on Linux.
>
>
> Thanks,
>
> Cristian Oneț
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20140714/bbf059fe/attachment-0001.html>
More information about the Kde-frameworks-devel
mailing list