summaryrefslogtreecommitdiff
path: root/filesystems/rar2fs/files
diff options
context:
space:
mode:
authorRobert Clausecker <fuz@FreeBSD.org>2024-09-27 12:48:46 +0200
committerRobert Clausecker <fuz@FreeBSD.org>2024-11-06 16:17:35 +0100
commit6e2da9672f79f44048d597f0f61e4646cdeade9d (patch)
treec92e4b3158e3419e8cec38e00227d08dcdaab3e9 /filesystems/rar2fs/files
parentmath/sdpa: speed up build (diff)
filesystems: add new category for file systems and related utilities
The filesystems category houses file systems and file system utilities. It is added mainly to turn the sysutils/fusefs-* pseudo-category into a proper one, but is also useful for the sundry of other file systems related ports found in the tree. Ports that seem like they belong there are moved to the new category. Two ports, sysutils/fusefs-funionfs and sysutils/fusefs-fusepak are not moved as they currently don't fetch and don't have TIMESTAMP set in their distinfo, but that is required to be able to push a rename of the port by the pre-receive hook. Approved by: portmgr (rene) Reviewed by: mat Pull Request: https://github.com/freebsd/freebsd-ports/pull/302 PR: 281988
Diffstat (limited to 'filesystems/rar2fs/files')
-rw-r--r--filesystems/rar2fs/files/patch-configure.ac24
-rw-r--r--filesystems/rar2fs/files/patch-src_dllext.cpp199
2 files changed, 223 insertions, 0 deletions
diff --git a/filesystems/rar2fs/files/patch-configure.ac b/filesystems/rar2fs/files/patch-configure.ac
new file mode 100644
index 000000000000..02ff1d32cef8
--- /dev/null
+++ b/filesystems/rar2fs/files/patch-configure.ac
@@ -0,0 +1,24 @@
+--- configure.ac.orig 2017-01-05 12:03:06 UTC
++++ configure.ac
+@@ -434,6 +434,21 @@ if test x"$UNRAR_LIBS" != x; then
+ fi
+ ########################################################
+
++########################################################
++# Check if we need to set -DOPENSSL_AES
++if test x"$UNRAR_LIBS" != x; then
++ AC_CHECK_TOOL(PKG_STATIC,pkg-static)
++ AC_MSG_CHECKING([if unrar library needs -DOPENSSL_AES])
++ openssl_aes=`$PKG_STATIC query '%Ok %Ov' $LIBUNRAR_PKG | grep '^OPENSSL_AES' | cut -f 2 -d ' '`
++ if test x"$openssl_aes" != x"on"; then
++ AC_MSG_RESULT([no])
++ else
++ AC_MSG_RESULT([yes])
++ UNRAR_CXXFLAGS="$UNRAR_CXXFLAGS -DOPENSSL_AES"
++ fi
++fi
++########################################################
++
+ AM_ICONV
+
+ AC_MSG_CHECKING(for commit hash in git repo)
diff --git a/filesystems/rar2fs/files/patch-src_dllext.cpp b/filesystems/rar2fs/files/patch-src_dllext.cpp
new file mode 100644
index 000000000000..e3a8682f763a
--- /dev/null
+++ b/filesystems/rar2fs/files/patch-src_dllext.cpp
@@ -0,0 +1,199 @@
+Add compatibility with libunrar >= 7. Based upon upstream commits:
+
+https://github.com/hasse69/rar2fs/commit/d1d31f416269f4abb1262850b1fe645713a14fc4
+https://github.com/hasse69/rar2fs/commit/89d144d17bb23bd2ff143a3aac3593cbfc2dd3c1
+
+--- src/dllext.cpp.orig 2021-05-02 06:17:04 UTC
++++ src/dllext.cpp
+@@ -169,13 +169,21 @@ int PASCAL RARListArchiveEx(HANDLE hArcData, RARArchiv
+ }
+ else
+ {
++#if RARVER_MAJOR >= 7
++ wcscpy(N->LinkTargetW,Arc.FileHead.RedirName.c_str());
++#else
+ wcscpy(N->LinkTargetW,Arc.FileHead.RedirName);
++#endif
+ N->LinkTargetFlags |= LINK_T_UNICODE; // Make sure UNICODE is set
+ }
+ }
+ else if (Arc.FileHead.RedirType == FSREDIR_FILECOPY)
+ {
++#if RARVER_MAJOR >= 7
++ wcscpy(N->LinkTargetW,Arc.FileHead.RedirName.c_str());
++#else
+ wcscpy(N->LinkTargetW,Arc.FileHead.RedirName);
++#endif
+ N->LinkTargetFlags |= LINK_T_FILECOPY;
+ }
+ }
+@@ -208,6 +216,13 @@ void PASCAL RARNextVolumeName(char *arch, bool oldstyl
+ {
+ #if RARVER_MAJOR < 5
+ NextVolumeName(arch, NULL, 0, oldstylevolume);
++#elif RARVER_MAJOR >= 7
++ wstring ArchiveW;
++ size_t len=strlen(arch);
++ ArchiveW.assign(arch,arch+len);
++ NextVolumeName(ArchiveW,oldstylevolume);
++ string NextArchive(ArchiveW.begin(),ArchiveW.end());
++ strcpy(arch,NextArchive.c_str());
+ #else
+ wchar NextName[NM];
+ CharToWide(arch, NextName, ASIZE(NextName));
+@@ -221,6 +236,14 @@ void PASCAL RARVolNameToFirstName(char *arch, bool old
+ {
+ #if RARVER_MAJOR < 5
+ VolNameToFirstName(arch, arch, !oldstylevolume);
++#elif RARVER_MAJOR >=7
++ wstring ArcName;
++ size_t len=strlen(arch);
++ ArcName.assign(arch,arch+len);
++ VolNameToFirstName(ArcName, ArcName, !oldstylevolume);
++ string FirstName(ArcName.begin(),ArcName.end());
++ strcpy(arch,FirstName.c_str());
++ return;
+ #else
+ wchar ArcName[NM];
+ CharToWide(arch, ArcName, ASIZE(ArcName));
+@@ -239,7 +262,6 @@ void PASCAL RARGetFileInfo(HANDLE hArcData, const char
+ void PASCAL RARGetFileInfo(HANDLE hArcData, const char *FileName, struct RARWcb *wcb)
+ {
+ #if RARVER_MAJOR > 4
+- char FileNameUtf[NM];
+ DataSet *Data = (DataSet *)hArcData;
+ Archive& Arc = Data->Arc;
+ struct RARHeaderDataEx h;
+@@ -248,8 +270,17 @@ void PASCAL RARGetFileInfo(HANDLE hArcData, const char
+ wcb->bytes = 0;
+ while (!RARReadHeaderEx(hArcData, &h))
+ {
++#if RARVER_MAJOR >= 7
++ size_t FileNameLen=Arc.FileHead.FileName.size()*sizeof(char32_t);
++ string FileNameUtf(FileNameLen,'\0');
++ WideToUtf(Arc.FileHead.FileName.c_str(),&FileNameUtf[0],FileNameLen);
++ FileNameUtf.resize(strlen(FileNameUtf.c_str()));
++ if (!strcmp(FileNameUtf.c_str(), FileName))
++#else
++ char FileNameUtf[NM];
+ WideToUtf(Arc.FileHead.FileName,FileNameUtf,ASIZE(FileNameUtf));
+ if (!strcmp(FileNameUtf, FileName))
++#endif
+ {
+ wcb->bytes = ListFileHeader(wcb->data, Arc);
+ return;
+@@ -368,7 +399,11 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc)
+ static size_t ListFileHeader(wchar *wcs,Archive &Arc)
+ {
+ FileHeader &hd=Arc.FileHead;
++#if RARVER_MAJOR >= 7
++ wstring *Name=&hd.FileName;
++#else
+ wchar *Name=hd.FileName;
++#endif
+ RARFORMAT Format=Arc.Format;
+
+ void *wcs_start = (void *)wcs;
+@@ -433,25 +468,45 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc)
+ {
+ if (Format==RARFMT15)
+ {
++#if RARVER_MAJOR >= 7
++ string LinkTargetA;
++#else
+ char LinkTargetA[NM];
++#endif
+ if (Arc.FileHead.Encrypted)
+ {
+ // Link data are encrypted. We would need to ask for password
+ // and initialize decryption routine to display the link target.
++#if RARVER_MAJOR >= 7
++ LinkTargetA="*<-?->";
++#else
+ strncpyz(LinkTargetA,"*<-?->",ASIZE(LinkTargetA));
++#endif
+ }
+ else
+ {
+ int DataSize=(int)Min((size_t)hd.PackSize,ASIZE(LinkTargetA)-1);
++#if RARVER_MAJOR >= 7
++ Arc.Read(&LinkTargetA,DataSize);
++#else
+ Arc.Read(LinkTargetA,DataSize);
++#endif
+ LinkTargetA[DataSize > 0 ? DataSize : 0] = 0;
+ }
++#if RARVER_MAJOR >= 7
++ wstring LinkTarget(LinkTargetA.begin(),LinkTargetA.end());
++ wcs += msprintf(wcs, L"\n%12ls: %ls",St(MListTarget),LinkTarget.c_str());
++ }
++ else
++ wcs += msprintf(wcs, L"\n%12ls: %ls",St(MListTarget),hd.RedirName.c_str());
++#else
+ wchar LinkTarget[NM];
+ CharToWide(LinkTargetA,LinkTarget,ASIZE(LinkTarget));
+ wcs += msprintf(wcs, L"\n%12ls: %ls",St(MListTarget),LinkTarget);
+ }
+ else
+ wcs += msprintf(wcs, L"\n%12ls: %ls",St(MListTarget),hd.RedirName);
++#endif
+ }
+
+ if (!hd.Dir)
+@@ -487,11 +542,20 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc)
+ hd.FileHash.CRC32);
+ if (hd.FileHash.Type==HASH_BLAKE2)
+ {
++#if RARVER_MAJOR >= 7
++ wstring BlakeStr;
++ BinToHex(hd.FileHash.Digest,BLAKE2_DIGEST_SIZE,BlakeStr);
++#else
+ wchar BlakeStr[BLAKE2_DIGEST_SIZE*2+1];
+ BinToHex(hd.FileHash.Digest,BLAKE2_DIGEST_SIZE,NULL,BlakeStr,ASIZE(BlakeStr));
++#endif
+ wcs += msprintf(wcs, L"\n%12ls: %ls",
+ hd.UseHashKey ? L"BLAKE2 MAC":hd.SplitAfter ? L"Pack-BLAKE2":L"BLAKE2",
++#if RARVER_MAJOR >= 7
++ BlakeStr.c_str());
++#else
+ BlakeStr);
++#endif
+ }
+
+ const wchar *HostOS=L"";
+@@ -529,7 +593,11 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc)
+
+ if (hd.Version)
+ {
++#if RARVER_MAJOR >= 7
++ uint Version=ParseVersionFileName(*Name,false);
++#else
+ uint Version=ParseVersionFileName(Name,false);
++#endif
+ if (Version!=0)
+ wcs += msprintf(wcs, L"\n%12ls: %u",St(MListFileVer),Version);
+ }
+@@ -538,9 +606,17 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc)
+ {
+ wcs += msprintf(wcs, L"\n%12ls: ",L"Unix owner");
+ if (*hd.UnixOwnerName!=0)
++#if RARVER_MAJOR >= 7
++ wcs += msprintf(wcs, L"%ls:",GetWide(hd.UnixOwnerName).c_str());
++#else
+ wcs += msprintf(wcs, L"%ls:",GetWide(hd.UnixOwnerName));
++#endif
+ if (*hd.UnixGroupName!=0)
++#if RARVER_MAJOR >= 7
++ wcs += msprintf(wcs, L"%ls",GetWide(hd.UnixGroupName).c_str());
++#else
+ wcs += msprintf(wcs, L"%ls",GetWide(hd.UnixGroupName));
++#endif
+ if ((*hd.UnixOwnerName!=0 || *hd.UnixGroupName!=0) && (hd.UnixOwnerNumeric || hd.UnixGroupNumeric))
+ wcs += msprintf(wcs, L" ");
+ if (hd.UnixOwnerNumeric)
+@@ -555,5 +631,3 @@ static size_t ListFileHeader(wchar *wcs,Archive &Arc)
+ }
+
+ #endif
+-
+-