[vlc-commits] [Git][videolan/vlc][master] 4 commits: smb2: prefix local functions with vlc_
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sat Feb 1 15:13:26 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
9adc93c1 by Thomas Guillem at 2025-02-01T14:25:24+00:00
smb2: prefix local functions with vlc_
To avoid conflicts with smb2.h
- - - - -
94db6cdc by Thomas Guillem at 2025-02-01T14:25:24+00:00
smb2: rework ShareEnum
To prepare for the next commit.
- - - - -
8c8c28be by Thomas Guillem at 2025-02-01T14:25:24+00:00
smb2: update latest net share API
- - - - -
37f6a0fa by Thomas Guillem at 2025-02-01T14:25:24+00:00
contrib: update libsmb2 to 6.1 and use cmake
Switch to cmake from this commit since the previous smb2 version has not a
fully functional cmake configuration.
- - - - -
5 changed files:
- + contrib/src/smb2/0001-cmake-add-ENABLE_LIBKRB5-and-ENABLE_GSSAPI-options.patch
- + contrib/src/smb2/0001-fix-Fixed-undeclared-identifier-ENXIO-in-android.patch
- contrib/src/smb2/SHA512SUMS
- contrib/src/smb2/rules.mak
- modules/access/smb2.c
Changes:
=====================================
contrib/src/smb2/0001-cmake-add-ENABLE_LIBKRB5-and-ENABLE_GSSAPI-options.patch
=====================================
@@ -0,0 +1,77 @@
+From 3e0f7949c7db82ef427007d8de978fab02703a2f Mon Sep 17 00:00:00 2001
+From: Thomas Guillem <thomas at gllm.fr>
+Date: Tue, 17 Dec 2024 08:18:03 +0100
+Subject: [PATCH] cmake: add ENABLE_LIBKRB5 and ENABLE_GSSAPI options
+
+ON by default, but the user can now disable these components (like
+configure.ac).
+
+Fixes #384
+---
+ CMakeLists.txt | 19 ++++++++++++++-----
+ cmake/ConfigureChecks.cmake | 4 ++++
+ 2 files changed, 18 insertions(+), 5 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0252451..562b8e2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -57,14 +57,19 @@ endif()
+ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+ endif()
+ option(ENABLE_EXAMPLES "Build example programs" OFF)
+-
++ option(ENABLE_LIBKRB5 "Enable libkrb5 support" ON)
++ option(ENABLE_GSSAPI "Enable gssapi support" ON)
+ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
+ endif()
+
+ if(CMAKE_SYSTEM_NAME MATCHES Linux)
+- find_package(LibKrb5)
++ if (ENABLE_LIBKRB5)
++ find_package(LibKrb5)
++ endif()
+ elseif(IOS)
+- find_package(GSSAPI)
++ if (ENABLE_GSSAPI)
++ find_package(GSSAPI)
++ endif()
+ endif()
+
+ if(NOT ESP_PLATFORM)
+@@ -95,9 +100,13 @@ endif()
+ endif()
+
+ if(CMAKE_SYSTEM_NAME MATCHES Linux)
+- set(core_DEPENDS ${LIBKRB5_LIBRARY} CACHE STRING "" FORCE)
++ if (ENABLE_LIBKRB5)
++ set(core_DEPENDS ${LIBKRB5_LIBRARY} CACHE STRING "" FORCE)
++ endif()
+ elseif(IOS)
+- set(core_DEPENDS ${GSSAPI_LIBRARIES} CACHE STRING "" FORCE)
++ if (ENABLE_GSSAPI)
++ set(core_DEPENDS ${GSSAPI_LIBRARIES} CACHE STRING "" FORCE)
++ endif()
+ endif()
+
+ if(MSVC AND BUILD_SHARED_LIBS)
+diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake
+index a28846a..d59d890 100644
+--- a/cmake/ConfigureChecks.cmake
++++ b/cmake/ConfigureChecks.cmake
+@@ -6,8 +6,12 @@ endif()
+ check_include_file("arpa/inet.h" HAVE_ARPA_INET_H)
+ check_include_file("dlfcn.h" HAVE_DLFCN_H)
+ check_include_file("fcntl.h" HAVE_FCNTL_H)
++if (ENABLE_GSSAPI)
+ check_include_file("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H)
++endif()
++if (ENABLE_LIBKRB5)
+ check_include_file("krb5/krb5.h" HAVE_LIBKRB5)
++endif()
+ check_include_file("inttypes.h" HAVE_INTTYPES_H)
+ check_include_file("netdb.h" HAVE_NETDB_H)
+ check_include_file("netinet/in.h" HAVE_NETINET_IN_H)
+--
+2.45.2
+
=====================================
contrib/src/smb2/0001-fix-Fixed-undeclared-identifier-ENXIO-in-android.patch
=====================================
@@ -0,0 +1,24 @@
+From b9f2b29e18c8b28fd97aecef4ceb74d070a067d1 Mon Sep 17 00:00:00 2001
+From: laxy <laxy at funkore.com>
+Date: Tue, 17 Dec 2024 10:02:21 +0800
+Subject: [PATCH] fix: Fixed undeclared identifier 'ENXIO' in android
+
+---
+ lib/compat.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/compat.c b/lib/compat.c
+index 438e179..b99606b 100644
+--- a/lib/compat.c
++++ b/lib/compat.c
+@@ -181,6 +181,7 @@ int iop_connect(int sockfd, struct sockaddr *addr, socklen_t addrlen)
+ #ifdef __ANDROID__
+ /* getlogin_r() was added in API 28 */
+ #if __ANDROID_API__ < 28
++#include <errno.h>
+ #define NEED_GETLOGIN_R
+ #define login_num ENXIO
+ #endif
+--
+2.45.2
+
=====================================
contrib/src/smb2/SHA512SUMS
=====================================
@@ -1 +1 @@
-d62d05f946d104995faefa8e4fdb3a9121f697a29aac031ddd6f2c3ec9ce97edbd18d84ace56103c19e0f56356b531f7d2db826428aff52abb4930603a5fb50f libsmb2-4.0.0.tar.gz
+7f481b22f90b82d19c6bb29537ef10229b3ff4aff3d46dff5b11ee22c9c0410f1d58f466cf0774507d1d6f03c06dd82b223b1f4be75da239402e57749382fe5f libsmb2-6.1.tar.gz
=====================================
contrib/src/smb2/rules.mak
=====================================
@@ -1,6 +1,6 @@
# SMB2
-SMB2_VERSION := 4.0.0
-SMB2_URL := $(GITHUB)/sahlberg/libsmb2/archive/v$(SMB2_VERSION).tar.gz
+SMB2_VERSION := 6.1
+SMB2_URL := $(GITHUB)/sahlberg/libsmb2/archive/refs/tags/libsmb2-$(SMB2_VERSION).tar.gz
ifdef BUILD_NETWORK
ifndef HAVE_WIN32
@@ -16,18 +16,18 @@ $(TARBALLS)/libsmb2-$(SMB2_VERSION).tar.gz:
.sum-smb2: libsmb2-$(SMB2_VERSION).tar.gz
+smb2: UNPACK_DIR=libsmb2-libsmb2-$(SMB2_VERSION)
smb2: libsmb2-$(SMB2_VERSION).tar.gz .sum-smb2
$(UNPACK)
- # $(call update_autoconfig,.)
+ $(APPLY) $(SRC)/smb2/0001-cmake-add-ENABLE_LIBKRB5-and-ENABLE_GSSAPI-options.patch
+ $(APPLY) $(SRC)/smb2/0001-fix-Fixed-undeclared-identifier-ENXIO-in-android.patch
$(MOVE)
-SMB2_CONF := --disable-examples --disable-werror --without-libkrb5
+SMB2_CONF := -DENABLE_LIBKRB5=OFF
.smb2: smb2
- mkdir -p $</m4
- $(RECONF)
- $(MAKEBUILDDIR)
- $(MAKECONFIGURE) $(SMB2_CONF)
- +$(MAKEBUILD)
- +$(MAKEBUILD) install
+ $(CMAKECLEAN)
+ $(HOSTVARS_CMAKE) $(CMAKE) $(SMB2_CONF)
+ +$(CMAKEBUILD)
+ $(CMAKEINSTALL)
touch $@
=====================================
modules/access/smb2.c
=====================================
@@ -119,7 +119,11 @@ struct access_sys
struct smb2_context * smb2;
struct smb2fh * smb2fh;
struct smb2dir * smb2dir;
+#ifdef LIBSMB2_SHARE_ENUM_V2
+ struct srvsvc_NetrShareEnum_rep *share_enum;
+#else
struct srvsvc_netshareenumall_rep *share_enum;
+#endif
uint64_t smb2_size;
vlc_url_t encoded_url;
bool eof;
@@ -165,7 +169,7 @@ vlc_smb2_op_reset(struct vlc_smb2_op *op, struct smb2_context **smb2p)
}
static int
-smb2_check_status(struct vlc_smb2_op *op, const char *psz_func, int status)
+vlc_smb2_check_status(struct vlc_smb2_op *op, const char *psz_func, int status)
{
if (status < 0)
{
@@ -183,12 +187,12 @@ smb2_check_status(struct vlc_smb2_op *op, const char *psz_func, int status)
}
static void
-smb2_set_error(struct vlc_smb2_op *op, const char *psz_func, int err)
+vlc_smb2_set_error(struct vlc_smb2_op *op, const char *psz_func, int err)
{
if (op->log && err != -EINTR)
vlc_error(op->log, "%s failed: %d, %s", psz_func, err, smb2_get_error(op->smb2));
- /* Don't override if set via smb2_check_status */
+ /* Don't override if set via vlc_smb2_check_status */
if (op->error_status == 0)
op->error_status = err;
@@ -198,10 +202,10 @@ smb2_set_error(struct vlc_smb2_op *op, const char *psz_func, int err)
}
#define VLC_SMB2_CHECK_STATUS(op, status) \
- smb2_check_status(op, __func__, status)
+ vlc_smb2_check_status(op, __func__, status)
#define VLC_SMB2_SET_ERROR(op, func, err) \
- smb2_set_error(op, func, err)
+ vlc_smb2_set_error(op, func, err)
#define VLC_SMB2_STATUS_DENIED(x) (x == -ECONNREFUSED || x == -EACCES)
@@ -487,17 +491,33 @@ ShareEnum(stream_t *access, input_item_node_t *p_node)
struct vlc_readdir_helper rdh;
vlc_readdir_helper_init(&rdh, access, p_node);
+#ifdef LIBSMB2_SHARE_ENUM_V2
+ struct srvsvc_SHARE_INFO_1_CONTAINER *ctr = &sys->share_enum->ses.ShareInfo.Level1;
+ size_t ctr_count = ctr->EntriesRead;
+#else
struct srvsvc_netsharectr *ctr = sys->share_enum->ctr;
+ size_t ctr_count = ctr->ctr1.count;
+#endif
+
for (uint32_t iinfo = 0;
- iinfo < ctr->ctr1.count && ret == VLC_SUCCESS; ++iinfo)
+ iinfo < ctr_count && ret == VLC_SUCCESS; ++iinfo)
{
+#ifdef LIBSMB2_SHARE_ENUM_V2
+ struct srvsvc_SHARE_INFO_1 *info = &ctr->Buffer->share_info_1[iinfo];
+ const char *name = info->netname.utf8;
+ uint32_t type = info->type;
+#else
struct srvsvc_netshareinfo1 *info = &ctr->ctr1.array[iinfo];
- if (info->type & SHARE_TYPE_HIDDEN)
+ const char *name = info->name;
+ uint32_t type = info->type;
+#endif
+
+ if (type & SHARE_TYPE_HIDDEN)
continue;
- switch (info->type & 0x3)
+ switch (type & 0x3)
{
case SHARE_TYPE_DISKTREE:
- ret = AddItem(access, &rdh, info->name, ITEM_TYPE_DIRECTORY, NULL);
+ ret = AddItem(access, &rdh, name, ITEM_TYPE_DIRECTORY, NULL);
break;
}
}
@@ -589,7 +609,13 @@ vlc_smb2_open_share(stream_t *access, struct smb2_context **smb2p,
int ret;
if (do_enum)
+ {
+#ifdef LIBSMB2_SHARE_ENUM_V2
+ ret = smb2_share_enum_async(op.smb2, SHARE_INFO_1, smb2_open_cb, &op);
+#else
ret = smb2_share_enum_async(op.smb2, smb2_open_cb, &op);
+#endif
+ }
else
{
ret = smb2_stat_async(op.smb2, smb2_url->path, &smb2_stat,
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/87da908e898e975c03c91e848f6c3c4131130ec8...37f6a0fa6f9a716f5e3374f28f4fcfed847b44db
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/87da908e898e975c03c91e848f6c3c4131130ec8...37f6a0fa6f9a716f5e3374f28f4fcfed847b44db
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list