[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