git: 9df38c9ba1c5 - main - misc/far2l: fix build on big-endian
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 06 Oct 2023 16:39:18 UTC
The branch main has been updated by pkubaj: URL: https://cgit.FreeBSD.org/ports/commit/?id=9df38c9ba1c5c3d5afa9ad7a7c9fb43ad10d4a7c commit 9df38c9ba1c5c3d5afa9ad7a7c9fb43ad10d4a7c Author: Piotr Kubaj <pkubaj@FreeBSD.org> AuthorDate: 2023-10-06 16:08:15 +0000 Commit: Piotr Kubaj <pkubaj@FreeBSD.org> CommitDate: 2023-10-06 16:39:11 +0000 misc/far2l: fix build on big-endian /wrkdirs/usr/ports/misc/far2l/work/far2l-v_2.5.2/far2l/src/datetime.cpp:534:10: error: non-constant-expression cannot be narrowed from type 'DWORD' (aka 'unsigned int') to 'LONG' (aka 'int') in initializer list [-Wc++11-narrowing] {a->dwLowDateTime, (LONG)a->dwHighDateTime} ^~~~~~~~~~~~~~~~ /wrkdirs/usr/ports/misc/far2l/work/far2l-v_2.5.2/far2l/src/datetime.cpp:534:10: note: insert an explicit cast to silence this issue {a->dwLowDateTime, (LONG)a->dwHighDateTime} ^~~~~~~~~~~~~~~~ static_cast<LONG>( ) /wrkdirs/usr/ports/misc/far2l/work/far2l-v_2.5.2/far2l/src/datetime.cpp:534:28: error: non-constant-expression cannot be narrowed from type 'LONG' (aka 'int') to 'DWORD' (aka 'unsigned int') in initializer list [-Wc++11-narrowing] {a->dwLowDateTime, (LONG)a->dwHighDateTime} ^~~~~~~~~~~~~~~~~~~~~~~ /wrkdirs/usr/ports/misc/far2l/work/far2l-v_2.5.2/far2l/src/datetime.cpp:534:28: note: insert an explicit cast to silence this issue {a->dwLowDateTime, (LONG)a->dwHighDateTime} ^~~~~~~~~~~~~~~~~~~~~~~ static_cast<DWORD>( ) /wrkdirs/usr/ports/misc/far2l/work/far2l-v_2.5.2/far2l/src/datetime.cpp:536:11: error: non-constant-expression cannot be narrowed from type 'DWORD' (aka 'unsigned int') to 'LONG' (aka 'int') in initializer list [-Wc++11-narrowing] B = {{b->dwLowDateTime, (LONG)b->dwHighDateTime}}; ^~~~~~~~~~~~~~~~ /wrkdirs/usr/ports/misc/far2l/work/far2l-v_2.5.2/far2l/src/datetime.cpp:536:11: note: insert an explicit cast to silence this issue B = {{b->dwLowDateTime, (LONG)b->dwHighDateTime}}; ^~~~~~~~~~~~~~~~ static_cast<LONG>( ) /wrkdirs/usr/ports/misc/far2l/work/far2l-v_2.5.2/far2l/src/datetime.cpp:536:29: error: non-constant-expression cannot be narrowed from type 'LONG' (aka 'int') to 'DWORD' (aka 'unsigned int') in initializer list [-Wc++11-narrowing] B = {{b->dwLowDateTime, (LONG)b->dwHighDateTime}}; ^~~~~~~~~~~~~~~~~~~~~~~ /wrkdirs/usr/ports/misc/far2l/work/far2l-v_2.5.2/far2l/src/datetime.cpp:536:29: note: insert an explicit cast to silence this issue B = {{b->dwLowDateTime, (LONG)b->dwHighDateTime}}; ^~~~~~~~~~~~~~~~~~~~~~~ static_cast<DWORD>( ) 4 errors generated. --- misc/far2l/files/patch-far2l_src_datetime.cpp | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/misc/far2l/files/patch-far2l_src_datetime.cpp b/misc/far2l/files/patch-far2l_src_datetime.cpp new file mode 100644 index 000000000000..95cd26f1daf2 --- /dev/null +++ b/misc/far2l/files/patch-far2l_src_datetime.cpp @@ -0,0 +1,42 @@ +--- far2l/src/datetime.cpp.orig 2023-10-06 15:57:46 UTC ++++ far2l/src/datetime.cpp +@@ -531,15 +531,27 @@ int64_t FileTimeDifference(const FILETIME *a, const FI + { + LARGE_INTEGER A = + { ++#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) ++ {(LONG)a->dwHighDateTime, a->dwLowDateTime} ++#else + {a->dwLowDateTime, (LONG)a->dwHighDateTime} ++#endif + }, ++#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) ++ B = {{(LONG)b->dwHighDateTime, b->dwLowDateTime}}; ++#else + B = {{b->dwLowDateTime, (LONG)b->dwHighDateTime}}; ++#endif + return A.QuadPart - B.QuadPart; + } + + uint64_t FileTimeToUI64(const FILETIME *ft) + { ++#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) ++ ULARGE_INTEGER A = { {ft->dwHighDateTime, ft->dwLowDateTime} }; ++#else + ULARGE_INTEGER A = { {ft->dwLowDateTime, ft->dwHighDateTime} }; ++#endif + return A.QuadPart; + } + +@@ -761,7 +773,11 @@ void ConvertRelativeDate(const FILETIME &ft, FARString + + void ConvertRelativeDate(const FILETIME &ft, FARString &strDaysText, FARString &strTimeText) + { ++#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) ++ ULARGE_INTEGER time = { {ft.dwHighDateTime, ft.dwLowDateTime}}; ++#else + ULARGE_INTEGER time = { {ft.dwLowDateTime, ft.dwHighDateTime}}; ++#endif + + UINT64 ms = (time.QuadPart/= 10000) % 1000; + UINT64 s = (time.QuadPart/= 1000) % 60;