Revert "Remove version component from plugin path"
This reverts commit b52d9173f8f0201a360bc1d5ada38297a6e13553. Resolved conflicts in: * doc/release-notes.adoc * packaging/nsis/logray.nsi: Still install cloudtrail.dll to plugin path without version as changed in f4e71562d09d52fccd63b1839afefdc500bfcc7a. * ui/qt/about_dialog.cpp: Still capitalize "Binary plugins" as changed in 2155ef34b00b7ddb758f2cf1d1eeb4a9eaa379fc. * wsutil/filesystem.c: Keep init to zero removed as changed in d0b143bbecf422db5b6f51b549726786e85a3540.
This commit is contained in:
parent
6d1b32b688
commit
b64c5077a2
@ -1620,6 +1620,24 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
#
|
||||
# As https://developer.apple.com/library/archive/technotes/tn2206/_index.html
|
||||
# says,
|
||||
#
|
||||
# "Note that a location where code is expected to reside cannot generally
|
||||
# contain directories full of nested code, because those directories tend
|
||||
# to be interpreted as bundles. So this occasional practice is not
|
||||
# recommended and not officially supported. If you do do this, do not use
|
||||
# periods in the directory names. The code signing machinery interprets
|
||||
# directories with periods in their names as code bundles and will reject
|
||||
# them if they don't conform to the expected code bundle layout."
|
||||
#
|
||||
set(PLUGIN_PATH_ID "${PROJECT_MAJOR_VERSION}-${PROJECT_MINOR_VERSION}")
|
||||
else()
|
||||
set(PLUGIN_PATH_ID "${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}")
|
||||
endif()
|
||||
|
||||
# Directory where plugins and Lua dissectors can be found.
|
||||
if(WIN32 AND NOT USE_MSYSTEM)
|
||||
set(PLUGIN_INSTALL_LIBDIR "plugins" CACHE INTERNAL "The plugin dir")
|
||||
@ -1627,6 +1645,8 @@ else()
|
||||
set(PLUGIN_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/plugins" CACHE INTERNAL "The plugin dir")
|
||||
endif()
|
||||
set(PLUGIN_INSTALL_FULL_LIBDIR "${CMAKE_INSTALL_PREFIX}/${PLUGIN_INSTALL_LIBDIR}")
|
||||
set(PLUGIN_INSTALL_VERSION_LIBDIR "${PLUGIN_INSTALL_LIBDIR}/${PLUGIN_PATH_ID}")
|
||||
set(PLUGIN_VERSION_DIR "plugins/${PLUGIN_PATH_ID}")
|
||||
|
||||
add_subdirectory( capture )
|
||||
add_subdirectory( doc )
|
||||
@ -1779,22 +1799,22 @@ endif()
|
||||
|
||||
if(ENABLE_APPLICATION_BUNDLE)
|
||||
if(CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(_plugin_dir "${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/PlugIns/wireshark")
|
||||
set(_plugin_dir "${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/PlugIns/wireshark/${PLUGIN_PATH_ID}")
|
||||
else()
|
||||
# Xcode
|
||||
set(_plugin_dir "${CMAKE_BINARY_DIR}/run/$<CONFIG>/Wireshark.app/Contents/PlugIns/wireshark")
|
||||
set(_plugin_dir "${CMAKE_BINARY_DIR}/run/$<CONFIG>/Wireshark.app/Contents/PlugIns/wireshark/${PLUGIN_PATH_ID}")
|
||||
endif()
|
||||
if(CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(_logray_plugin_dir "${CMAKE_BINARY_DIR}/run/Logray.app/Contents/PlugIns/logray")
|
||||
set(_logray_plugin_dir "${CMAKE_BINARY_DIR}/run/Logray.app/Contents/PlugIns/logray/${PLUGIN_PATH_ID}")
|
||||
else()
|
||||
# Xcode
|
||||
set(_logray_plugin_dir "${CMAKE_BINARY_DIR}/run/$<CONFIG>/Logray.app/Contents/PlugIns/logray")
|
||||
set(_logray_plugin_dir "${CMAKE_BINARY_DIR}/run/$<CONFIG>/Logray.app/Contents/PlugIns/logray/${PLUGIN_PATH_ID}")
|
||||
endif()
|
||||
elseif(MSVC AND NOT CMAKE_CFG_INTDIR STREQUAL ".")
|
||||
set(_plugin_dir "${CMAKE_BINARY_DIR}/run/$<CONFIG>/plugins")
|
||||
set(_plugin_dir "${CMAKE_BINARY_DIR}/run/$<CONFIG>/${PLUGIN_VERSION_DIR}")
|
||||
set(_logray_plugin_dir ${_plugin_dir})
|
||||
else()
|
||||
set(_plugin_dir "${DATAFILE_DIR}/plugins")
|
||||
set(_plugin_dir "${DATAFILE_DIR}/${PLUGIN_VERSION_DIR}")
|
||||
set(_logray_plugin_dir ${_plugin_dir})
|
||||
endif()
|
||||
set (PLUGIN_DIR ${_plugin_dir} CACHE INTERNAL "Build time plugin location.")
|
||||
@ -4126,7 +4146,7 @@ configure_package_config_file(WiresharkConfig.cmake.in
|
||||
PATH_VARS
|
||||
CMAKE_INSTALL_LIBDIR
|
||||
CMAKE_INSTALL_INCLUDEDIR
|
||||
PLUGIN_INSTALL_LIBDIR
|
||||
PLUGIN_INSTALL_VERSION_LIBDIR
|
||||
EXTCAP_INSTALL_LIBDIR
|
||||
)
|
||||
|
||||
|
@ -3,15 +3,8 @@ set(Wireshark_MINOR_VERSION @PROJECT_MINOR_VERSION@)
|
||||
set(Wireshark_PATCH_VERSION @PROJECT_PATCH_VERSION@)
|
||||
set(Wireshark_VERSION "@PROJECT_VERSION@")
|
||||
|
||||
set(Wireshark_ABI_VERSION_EPAN @PROJECT_ABI_VERSION_EPAN@)
|
||||
set(Wireshark_ABI_VERSION_WIRETAP @PROJECT_ABI_VERSION_WIRETAP@)
|
||||
set(Wireshark_ABI_VERSION_CODEC @PROJECT_ABI_VERSION_CODEC@)
|
||||
|
||||
set(Wireshark_PLUGINS_ENABLED @HAVE_PLUGINS@)
|
||||
set(Wireshark_PLUGIN_SUFFIX_EPAN "${CMAKE_SHARED_MODULE_SUFFIX}.${Wireshark_ABI_VERSION_EPAN}")
|
||||
set(Wireshark_PLUGIN_SUFFIX_WIRETAP "${CMAKE_SHARED_MODULE_SUFFIX}.${Wireshark_ABI_VERSION_WIRETAP}")
|
||||
set(Wireshark_PLUGIN_SUFFIX_CODEC "${CMAKE_SHARED_MODULE_SUFFIX}.${Wireshark_ABI_VERSION_CODEC}")
|
||||
set(Wireshark_PLUGIN_LIBDIR "@PLUGIN_INSTALL_LIBDIR@")
|
||||
set(Wireshark_PLUGIN_LIBDIR "@PLUGIN_INSTALL_VERSION_LIBDIR@")
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
@ -25,7 +18,9 @@ set_and_check(Wireshark_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@/w
|
||||
# which is not helpful because the variable is correct, it's just that the empty directories
|
||||
# were not created (also correctly, empty directories are just noise).
|
||||
#
|
||||
set(Wireshark_PLUGIN_INSTALL_DIR "@PACKAGE_PLUGIN_INSTALL_LIBDIR@")
|
||||
if(Wireshark_PLUGINS_ENABLED)
|
||||
set(Wireshark_PLUGIN_INSTALL_DIR "@PACKAGE_PLUGIN_INSTALL_VERSION_LIBDIR@")
|
||||
endif()
|
||||
set(Wireshark_EXTCAP_INSTALL_DIR "@PACKAGE_EXTCAP_INSTALL_LIBDIR@")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/WiresharkTargets.cmake")
|
||||
|
@ -28,7 +28,7 @@ macro(SET_MODULE_INFO _plugin _ver_major _ver_minor _ver_micro _ver_extra)
|
||||
add_definitions(-DPLUGIN_VERSION=\"${PLUGIN_VERSION}\")
|
||||
endmacro()
|
||||
|
||||
macro(ADD_PLUGIN_LIBRARY _plugin _output_dir _abi_version)
|
||||
macro(ADD_PLUGIN_LIBRARY _plugin _output_dir)
|
||||
add_library(${_plugin} MODULE
|
||||
${PLUGIN_FILES}
|
||||
${PLUGIN_RC_FILE}
|
||||
@ -38,7 +38,6 @@ macro(ADD_PLUGIN_LIBRARY _plugin _output_dir _abi_version)
|
||||
|
||||
set_target_properties(${_plugin} PROPERTIES
|
||||
PREFIX ""
|
||||
SUFFIX "${CMAKE_SHARED_MODULE_SUFFIX}.${_abi_version}"
|
||||
LINK_FLAGS "${WS_LINK_FLAGS}"
|
||||
FOLDER "Plugins"
|
||||
LIBRARY_OUTPUT_DIRECTORY ${_output_dir}
|
||||
@ -52,25 +51,25 @@ macro(ADD_PLUGIN_LIBRARY _plugin _output_dir _abi_version)
|
||||
endmacro()
|
||||
|
||||
macro(ADD_WIRESHARK_EPAN_PLUGIN_LIBRARY _plugin)
|
||||
ADD_PLUGIN_LIBRARY(${_plugin} "${PLUGIN_DIR}/epan" ${PROJECT_ABI_VERSION_EPAN})
|
||||
ADD_PLUGIN_LIBRARY(${_plugin} "${PLUGIN_DIR}/epan")
|
||||
endmacro()
|
||||
|
||||
macro(ADD_WIRESHARK_WIRETAP_PLUGIN_LIBRARY _plugin)
|
||||
ADD_PLUGIN_LIBRARY(${_plugin} "${PLUGIN_DIR}/wiretap" ${PROJECT_ABI_VERSION_WIRETAP})
|
||||
ADD_PLUGIN_LIBRARY(${_plugin} "${PLUGIN_DIR}/wiretap")
|
||||
endmacro()
|
||||
|
||||
macro(ADD_WIRESHARK_CODEC_PLUGIN_LIBRARY _plugin)
|
||||
ADD_PLUGIN_LIBRARY(${_plugin} "${PLUGIN_DIR}/codecs" ${PROJECT_ABI_VERSION_CODEC})
|
||||
ADD_PLUGIN_LIBRARY(${_plugin} "${PLUGIN_DIR}/codecs")
|
||||
endmacro()
|
||||
|
||||
macro(ADD_LOGRAY_EPAN_PLUGIN_LIBRARY _plugin)
|
||||
ADD_PLUGIN_LIBRARY(${_plugin} "${LOGRAY_PLUGIN_DIR}/epan" ${PROJECT_ABI_VERSION_EPAN})
|
||||
ADD_PLUGIN_LIBRARY(${_plugin} "${LOGRAY_PLUGIN_DIR}/epan")
|
||||
endmacro()
|
||||
|
||||
macro(INSTALL_PLUGIN _plugin _subfolder)
|
||||
install(TARGETS ${_plugin}
|
||||
LIBRARY DESTINATION ${PLUGIN_INSTALL_LIBDIR}/${_subfolder} NAMELINK_SKIP
|
||||
RUNTIME DESTINATION ${PLUGIN_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${PLUGIN_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${PLUGIN_INSTALL_VERSION_LIBDIR}/${_subfolder} NAMELINK_SKIP
|
||||
RUNTIME DESTINATION ${PLUGIN_INSTALL_VERSION_LIBDIR}
|
||||
ARCHIVE DESTINATION ${PLUGIN_INSTALL_VERSION_LIBDIR}
|
||||
)
|
||||
endmacro()
|
||||
|
@ -19,10 +19,9 @@
|
||||
/* Version number of Logray and associated utilities */
|
||||
#define LOG_VERSION "${LOG_PROJECT_VERSION}${VERSION_EXTRA}"
|
||||
|
||||
#define PLUGIN_PATH_ID "${PLUGIN_PATH_ID}"
|
||||
#define VERSION_FLAVOR "${VERSION_FLAVOR}"
|
||||
|
||||
#define SHARED_MODULE_SUFFIX "${CMAKE_SHARED_MODULE_SUFFIX}"
|
||||
|
||||
/* Build wsutil with SIMD optimization */
|
||||
#cmakedefine HAVE_SSE4_2 1
|
||||
|
||||
|
@ -39,11 +39,7 @@ add_compile_definitions(
|
||||
)
|
||||
|
||||
add_library(hello MODULE hello.c)
|
||||
set_target_properties(hello PROPERTIES
|
||||
PREFIX ""
|
||||
SUFFIX "${Wireshark_PLUGIN_SUFFIX_EPAN}"
|
||||
DEFINE_SYMBOL ""
|
||||
)
|
||||
set_target_properties(hello PROPERTIES PREFIX "" DEFINE_SYMBOL "")
|
||||
target_link_libraries(hello epan)
|
||||
|
||||
# This is the normal installation target to CMAKE_INSTALL_PREFIX. It is relocatable
|
||||
|
@ -179,11 +179,6 @@ The following features are new (or have been significantly updated) since versio
|
||||
* The personal binary plugins folder now has higher priority than the global
|
||||
folder.
|
||||
|
||||
* The binary plugins folder path no longer uses an X.Y version component. Plugins
|
||||
are required to add the ABI version to the file name.
|
||||
|
||||
* Truncated fields in the detail view are now displayed as "Field name […]: data" instead of "Field name [truncated]: data"
|
||||
|
||||
* When capturing files in multiple file mode, a pattern that places the date and time
|
||||
before the index number can be used (e.g., foo_20240714110102_00001.pcap instead of
|
||||
foo_00001_20240714110102.pcap). This causes filenames to sort in chronological order
|
||||
|
@ -551,16 +551,12 @@ machine code.
|
||||
Wireshark looks for plugins in both a personal plugin folder and a
|
||||
global plugin folder. Lua plugins are stored in the plugin folders;
|
||||
compiled plugins are stored in subfolders of the plugin folders, with
|
||||
the subfolder name being the plugin binary type. Each Wireshark binary plugin
|
||||
has one of three distinct types (libwireshark, libwiretap and codecs).
|
||||
So for example the location for a libwireshark plugin
|
||||
_foo.so_ (_foo.dll_ on Windows) would be _PLUGINDIR/epan_
|
||||
(libwireshark used to be called libepan), for libwiretap it would be
|
||||
_PLUGINDIR/wiretap_ and for codecs _PLUGINDIR/codecs_.
|
||||
|
||||
Plugins should come with the ABI version appended to the filename, so the
|
||||
complete example for an epan binary plugin would be _PLUGINDIR/epan_/foo.so.1_
|
||||
for epan ABI version 1.
|
||||
the subfolder name being the Wireshark minor version number (X.Y). There is
|
||||
another hierarchical level for each Wireshark plugin type (libwireshark,
|
||||
libwiretap and codecs). So for example the location for a libwireshark plugin
|
||||
_foo.so_ (_foo.dll_ on Windows) would be _PLUGINDIR/X.Y/epan_
|
||||
(libwireshark used to be called libepan; the other folder names are _codecs_
|
||||
and _wiretap_).
|
||||
|
||||
On Windows:
|
||||
|
||||
|
@ -145,7 +145,7 @@ app_lower=$(echo "$app_name" | tr '[:upper:]' '[:lower:]')
|
||||
pkgexec="$bundle/Contents/MacOS"
|
||||
#pkgres="$bundle/Contents/Resources"
|
||||
pkglib="$bundle/Contents/Frameworks"
|
||||
pkgplugin="$bundle/Contents/PlugIns/$app_lower"
|
||||
pkgplugin="$bundle/Contents/PlugIns/$app_lower/@PLUGIN_PATH_ID@"
|
||||
|
||||
# Set the 'macosx' directory, usually the current directory.
|
||||
#resdir=$( pwd )
|
||||
|
@ -1,3 +1,3 @@
|
||||
;Add your custom plugins directives here
|
||||
; Example:
|
||||
;File "${STAGING_DIR}\plugins\epan\foo.dll.${ABI_VERSION_EPAN}"
|
||||
;File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\foo.dll"
|
||||
|
@ -11,9 +11,6 @@
|
||||
#define EXTRA_INSTALLER_DIR "@EXTRA_INSTALLER_DIR@"
|
||||
#define VERSION @LOG_PROJECT_VERSION@
|
||||
#define PRODUCT_VERSION @LOG_PRODUCT_VERSION@
|
||||
#define ABI_VERSION_EPAN @PROJECT_ABI_VERSION_EPAN@
|
||||
#define ABI_VERSION_WIRETAP @PROJECT_ABI_VERSION_WIRETAP@
|
||||
#define ABI_VERSION_CODEC @PROJECT_ABI_VERSION_CODEC@
|
||||
# Plugins
|
||||
#define MAJOR_VERSION @PROJECT_MAJOR_VERSION@
|
||||
#define MINOR_VERSION @PROJECT_MINOR_VERSION@
|
||||
|
@ -880,19 +880,19 @@ SectionEnd
|
||||
Section "-Plugins & Extensions"
|
||||
|
||||
;-------------------------------------------
|
||||
SetOutPath '$INSTDIR\plugins\epan'
|
||||
File "${STAGING_DIR}\plugins\epan\falco-bridge.dll.${ABI_VERSION_EPAN}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\falco-bridge.dll"
|
||||
SetOutPath '$INSTDIR\plugins\falco'
|
||||
File "${STAGING_DIR}\plugins\falco\cloudtrail.dll"
|
||||
!include "custom_plugins.txt"
|
||||
|
||||
;-------------------------------------------
|
||||
SetOutPath '$INSTDIR\plugins\epan'
|
||||
File "${STAGING_DIR}\plugins\epan\stats_tree.dll.${ABI_VERSION_EPAN}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\stats_tree.dll"
|
||||
|
||||
;-------------------------------------------
|
||||
SetOutPath '$INSTDIR\plugins\epan'
|
||||
File "${STAGING_DIR}\plugins\epan\mate.dll.${ABI_VERSION_EPAN}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\mate.dll"
|
||||
|
||||
;-------------------------------------------
|
||||
; This should be a function or macro
|
||||
|
@ -16,10 +16,6 @@
|
||||
#define MINOR_VERSION @PROJECT_MINOR_VERSION@
|
||||
#define PRODUCT_VERSION @PRODUCT_VERSION@
|
||||
|
||||
#define ABI_VERSION_EPAN @PROJECT_ABI_VERSION_EPAN@
|
||||
#define ABI_VERSION_WIRETAP @PROJECT_ABI_VERSION_WIRETAP@
|
||||
#define ABI_VERSION_CODEC @PROJECT_ABI_VERSION_CODEC@
|
||||
|
||||
#define VCREDIST_DIR "@VCREDIST_DIR@"
|
||||
#define VCREDIST_EXE "@VCREDIST_EXE@"
|
||||
|
||||
|
@ -1040,24 +1040,24 @@ SectionEnd
|
||||
|
||||
Section "-Plugins & Extensions"
|
||||
|
||||
SetOutPath '$INSTDIR\plugins\codecs'
|
||||
File "${STAGING_DIR}\plugins\codecs\g711.dll.${ABI_VERSION_CODEC}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\g711.dll"
|
||||
!ifdef SPANDSP_FOUND
|
||||
File "${STAGING_DIR}\plugins\codecs\g722.dll.${ABI_VERSION_CODEC}"
|
||||
File "${STAGING_DIR}\plugins\codecs\g726.dll.${ABI_VERSION_CODEC}"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\g722.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\g726.dll"
|
||||
!endif
|
||||
!ifdef BCG729_FOUND
|
||||
File "${STAGING_DIR}\plugins\codecs\g729.dll.${ABI_VERSION_CODEC}"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\g729.dll"
|
||||
!endif
|
||||
File "${STAGING_DIR}\plugins\codecs\l16mono.dll.${ABI_VERSION_CODEC}"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\l16mono.dll"
|
||||
!ifdef SBC_FOUND
|
||||
File "${STAGING_DIR}\plugins\codecs\sbc.dll.${ABI_VERSION_CODEC}"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\sbc.dll"
|
||||
!endif
|
||||
!ifdef ILBC_FOUND
|
||||
File "${STAGING_DIR}\plugins\codecs\ilbc.dll.${ABI_VERSION_CODEC}"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\ilbc.dll"
|
||||
!endif
|
||||
!ifdef OPUS_FOUND
|
||||
File "${STAGING_DIR}\plugins\codecs\opus_dec.dll.${ABI_VERSION_CODEC}"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\codecs\opus_dec.dll"
|
||||
!endif
|
||||
|
||||
; This should be a function or macro
|
||||
@ -1069,23 +1069,23 @@ File "${STAGING_DIR}\profiles\Classic\colorfilters"
|
||||
SetOutPath '$INSTDIR\profiles\No Reassembly'
|
||||
File "${STAGING_DIR}\profiles\No Reassembly\preferences"
|
||||
|
||||
SetOutPath '$INSTDIR\plugins\epan'
|
||||
File "${STAGING_DIR}\plugins\epan\ethercat.dll.${ABI_VERSION_EPAN}"
|
||||
File "${STAGING_DIR}\plugins\epan\gryphon.dll.${ABI_VERSION_EPAN}"
|
||||
File "${STAGING_DIR}\plugins\epan\irda.dll.${ABI_VERSION_EPAN}"
|
||||
File "${STAGING_DIR}\plugins\epan\opcua.dll.${ABI_VERSION_EPAN}"
|
||||
File "${STAGING_DIR}\plugins\epan\profinet.dll.${ABI_VERSION_EPAN}"
|
||||
File "${STAGING_DIR}\plugins\epan\unistim.dll.${ABI_VERSION_EPAN}"
|
||||
File "${STAGING_DIR}\plugins\epan\wimax.dll.${ABI_VERSION_EPAN}"
|
||||
File "${STAGING_DIR}\plugins\epan\wimaxasncp.dll.${ABI_VERSION_EPAN}"
|
||||
File "${STAGING_DIR}\plugins\epan\wimaxmacphy.dll.${ABI_VERSION_EPAN}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\ethercat.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\gryphon.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\irda.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\opcua.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\profinet.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\unistim.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\wimax.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\wimaxasncp.dll"
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\wimaxmacphy.dll"
|
||||
!include "custom_plugins.txt"
|
||||
|
||||
SetOutPath '$INSTDIR\plugins\wiretap'
|
||||
File "${STAGING_DIR}\plugins\wiretap\usbdump.dll.${ABI_VERSION_WIRETAP}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\wiretap'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\wiretap\usbdump.dll"
|
||||
|
||||
SetOutPath '$INSTDIR\plugins\epan'
|
||||
File "${STAGING_DIR}\plugins\epan\mate.dll.${ABI_VERSION_EPAN}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\mate.dll"
|
||||
|
||||
!ifdef SMI_DIR
|
||||
SetOutPath '$INSTDIR\snmp\mibs'
|
||||
@ -1098,11 +1098,11 @@ File "${SMI_DIR}\share\yang\*.yang"
|
||||
!include "custom_mibs.txt"
|
||||
!endif
|
||||
|
||||
SetOutPath '$INSTDIR\plugins\epan'
|
||||
File "${STAGING_DIR}\plugins\epan\transum.dll.${ABI_VERSION_EPAN}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\transum.dll"
|
||||
|
||||
SetOutPath '$INSTDIR\plugins\epan'
|
||||
File "${STAGING_DIR}\plugins\epan\stats_tree.dll.${ABI_VERSION_EPAN}"
|
||||
SetOutPath '$INSTDIR\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan'
|
||||
File "${STAGING_DIR}\plugins\${MAJOR_VERSION}.${MINOR_VERSION}\epan\stats_tree.dll"
|
||||
|
||||
SectionEnd ; "Plugins / Extensions"
|
||||
|
||||
|
@ -188,9 +188,8 @@ set(WIX_CANDLE_DEFINES
|
||||
-dPlatform=${WIRESHARK_TARGET_PLATFORM}
|
||||
-dWiresharkName=${CMAKE_PROJECT_NAME}
|
||||
-dWiresharkVersion=${PRODUCT_VERSION}
|
||||
-dWiresharkAbiVersionEpan=${PROJECT_ABI_VERSION_EPAN}
|
||||
-dWiresharkAbiVersionWtap=${PROJECT_ABI_VERSION_WIRETAP}
|
||||
-dWiresharkAbiVersionCodec=${PROJECT_ABI_VERSION_CODEC}
|
||||
-dWiresharkMajorVersion=${PROJECT_MAJOR_VERSION}
|
||||
-dWiresharkMinorVersion=${PROJECT_MINOR_VERSION}
|
||||
-dAssetDir=${CMAKE_SOURCE_DIR}/packaging/wix
|
||||
-dBuildOutputDir=${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}
|
||||
-dDiameterDir=${ARCHIVE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/diameter
|
||||
|
@ -5,31 +5,31 @@
|
||||
<Fragment>
|
||||
<DirectoryRef Id="dirPluginsVersionEpan">
|
||||
<Component Id="cmpEthercat_dll" Guid="*">
|
||||
<File Id="filEthercat_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\ethercat.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filEthercat_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\ethercat.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpGryphon_dll" Guid="*">
|
||||
<File Id="filGryphon_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\gryphon.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filGryphon_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\gryphon.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpIrda_dll" Guid="*">
|
||||
<File Id="filIrda_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\irda.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filIrda_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\irda.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpOpcua_dll" Guid="*">
|
||||
<File Id="filOpcua_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\opcua.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filOpcua_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\opcua.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpProfinet_dll" Guid="*">
|
||||
<File Id="filProfinet_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\profinet.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filProfinet_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\profinet.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpUnistim_dll" Guid="*">
|
||||
<File Id="filUnistim_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\unistim.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filUnistim_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\unistim.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpWimax_dll" Guid="*">
|
||||
<File Id="filWimax_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\wimax.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filWimax_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimax.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpWimaxasmcp_dll" Guid="*">
|
||||
<File Id="filWimaxasmcp_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\wimaxasncp.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filWimaxasmcp_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimaxasncp.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpWimaxmacphy_dll" Guid="*">
|
||||
<File Id="filWimaxmacphy_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\wimaxmacphy.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filWimaxmacphy_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\wimaxmacphy.dll" />
|
||||
</Component>
|
||||
<!-- Add custom plugin Components here -->
|
||||
</DirectoryRef>
|
||||
@ -53,7 +53,7 @@
|
||||
<Fragment>
|
||||
<DirectoryRef Id="dirPluginsVersionEpan">
|
||||
<Component Id="cmpStatsTree_dll" Guid="*">
|
||||
<File Id="filStatsTree_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\stats_tree.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filStatsTree_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\stats_tree.dll" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
@ -67,7 +67,7 @@
|
||||
<Fragment>
|
||||
<DirectoryRef Id="dirPluginsVersionEpan">
|
||||
<Component Id="cmpMate_dll" Guid="*">
|
||||
<File Id="filMate_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\mate.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filMate_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\mate.dll" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
@ -81,7 +81,7 @@
|
||||
<Fragment>
|
||||
<DirectoryRef Id="dirPluginsVersionEpan">
|
||||
<Component Id="cmpTransum_dll" Guid="*">
|
||||
<File Id="filTransum_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\epan\transum.dll.$(var.WiresharkAbiVersionEpan)" />
|
||||
<File Id="filTransum_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\epan\transum.dll" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
@ -95,7 +95,7 @@
|
||||
<Fragment>
|
||||
<DirectoryRef Id="dirPluginsVersionWtap">
|
||||
<Component Id="cmpUsbdump_dll" Guid="*">
|
||||
<File Id="filUsbdump_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\wiretap\usbdump.dll.$(var.WiresharkAbiVersionWtap)" />
|
||||
<File Id="filUsbdump_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\wiretap\usbdump.dll" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
@ -109,28 +109,28 @@
|
||||
<Fragment>
|
||||
<DirectoryRef Id="dirPluginsVersionCodecs">
|
||||
<Component Id="cmpG711_dll" Guid="*">
|
||||
<File Id="filG711_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\g711.dll.$(var.WiresharkAbiVersionCodec)" />
|
||||
<File Id="filG711_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g711.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpG722_dll" Guid="*">
|
||||
<File Id="filG722_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\g722.dll.$(var.WiresharkAbiVersionCodec)" />
|
||||
<File Id="filG722_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g722.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpG726_dll" Guid="*">
|
||||
<File Id="filG726_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\g726.dll.$(var.WiresharkAbiVersionCodec)" />
|
||||
<File Id="filG726_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g726.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpG729_dll" Guid="*">
|
||||
<File Id="filG729_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\g729.dll.$(var.WiresharkAbiVersionCodec)" />
|
||||
<File Id="filG729_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\g729.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpL16mono_dll" Guid="*">
|
||||
<File Id="filL16mono_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\l16mono.dll.$(var.WiresharkAbiVersionCodec)" />
|
||||
<File Id="filL16mono_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\l16mono.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpSBC_dll" Guid="*">
|
||||
<File Id="filSBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\sbc.dll.$(var.WiresharkAbiVersionCodec)" />
|
||||
<File Id="filSBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\sbc.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpILBC_dll" Guid="*">
|
||||
<File Id="filILBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\ilbc.dll.$(var.WiresharkAbiVersionCodec)" />
|
||||
<File Id="filILBC_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\ilbc.dll" />
|
||||
</Component>
|
||||
<Component Id="cmpOPUS_dll" Guid="*">
|
||||
<File Id="filOPUS_dec_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\codecs\opus_dec.dll.$(var.WiresharkAbiVersionCodec)" />
|
||||
<File Id="filOPUS_dec_dll" KeyPath="yes" Source="$(var.Plugins.Dir)\$(var.WiresharkMajorVersion).$(var.WiresharkMinorVersion)\codecs\opus_dec.dll" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
|
@ -3,7 +3,7 @@ exec_prefix=${prefix}
|
||||
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
sharedlibdir=${libdir}
|
||||
plugindir=${libdir}/wireshark/plugins
|
||||
plugindir=${libdir}/wireshark/@PLUGIN_VERSION_DIR@
|
||||
|
||||
Name: Wireshark
|
||||
Description: Network Protocol Analyzer (Packet Dissection Library)
|
||||
|
12
tshark.c
12
tshark.c
@ -797,13 +797,13 @@ about_folders(void)
|
||||
constpath = get_progfile_dir();
|
||||
printf("%-21s\t%s\n", "Program:", constpath);
|
||||
|
||||
if (plugins_supported()) {
|
||||
/* pers plugins */
|
||||
printf("%-21s\t%s\n", "Personal Plugins:", get_plugins_pers_dir());
|
||||
#ifdef HAVE_PLUGINS
|
||||
/* pers plugins */
|
||||
printf("%-21s\t%s\n", "Personal Plugins:", get_plugins_pers_dir_with_version());
|
||||
|
||||
/* global plugins */
|
||||
printf("%-21s\t%s\n", "Global Plugins:", get_plugins_dir());
|
||||
}
|
||||
/* global plugins */
|
||||
printf("%-21s\t%s\n", "Global Plugins:", get_plugins_dir_with_version());
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LUA
|
||||
/* pers lua plugins */
|
||||
|
@ -264,13 +264,13 @@ FolderListModel::FolderListModel(QObject * parent):
|
||||
/* program */
|
||||
appendRow(QStringList() << tr("Program") << get_progfile_dir() << tr("Program files"));
|
||||
|
||||
if (plugins_supported()) {
|
||||
/* pers plugins */
|
||||
appendRow(QStringList() << tr("Personal Plugins") << get_plugins_pers_dir() << tr("Binary plugins"));
|
||||
#ifdef HAVE_PLUGINS
|
||||
/* pers plugins */
|
||||
appendRow(QStringList() << tr("Personal Plugins") << get_plugins_pers_dir_with_version() << tr("Binary plugins"));
|
||||
|
||||
/* global plugins */
|
||||
appendRow(QStringList() << tr("Global Plugins") << get_plugins_dir() << tr("Binary plugins"));
|
||||
}
|
||||
/* global plugins */
|
||||
appendRow(QStringList() << tr("Global Plugins") << get_plugins_dir_with_version() << tr("Binary plugins"));
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LUA
|
||||
/* pers plugins */
|
||||
|
@ -3180,7 +3180,7 @@ void WiresharkMainWindow::installPersonalBinaryPlugin()
|
||||
QString caption = mainApp->windowTitleString(tr("Install plugin"));
|
||||
|
||||
// Get the plugin file path to install
|
||||
QString plugin_filter = tr("Binary plugin (*%1 *%1.[0-9]*)").arg(WS_PLUGIN_MODULE_SUFFIX);
|
||||
QString plugin_filter = tr("Binary plugin (*%1)").arg(WS_PLUGIN_MODULE_SUFFIX);
|
||||
QString src_path = WiresharkFileDialog::getOpenFileName(this, caption, "", plugin_filter);
|
||||
if (src_path.isEmpty()) {
|
||||
return;
|
||||
@ -3220,10 +3220,6 @@ void WiresharkMainWindow::installPersonalBinaryPlugin()
|
||||
// a way to load and unload plugins without having to restart the program.
|
||||
QFileInfo file_info(src_path);
|
||||
QString file_name = file_info.fileName();
|
||||
if (file_name.endsWith(WS_PLUGIN_MODULE_SUFFIX)) {
|
||||
// Append the version to our destination name
|
||||
file_name = QString("%1.%2").arg(file_name).arg(plugins_abi_version(have_type));
|
||||
}
|
||||
if (type_dir.exists(file_name)) {
|
||||
reply = QMessageBox::question(this, caption,
|
||||
tr("The file already exists. Do you want to overwrite it?"));
|
||||
|
@ -1154,7 +1154,9 @@ get_doc_dir(void)
|
||||
* configure script.
|
||||
*/
|
||||
static char *plugin_dir;
|
||||
static char *plugin_dir_with_version;
|
||||
static char *plugin_pers_dir;
|
||||
static char *plugin_pers_dir_with_version;
|
||||
static char *extcap_pers_dir;
|
||||
|
||||
static void
|
||||
@ -1240,6 +1242,16 @@ get_plugins_dir(void)
|
||||
return plugin_dir;
|
||||
}
|
||||
|
||||
const char *
|
||||
get_plugins_dir_with_version(void)
|
||||
{
|
||||
if (!plugin_dir)
|
||||
init_plugin_dir();
|
||||
if (plugin_dir && !plugin_dir_with_version)
|
||||
plugin_dir_with_version = g_build_filename(plugin_dir, PLUGIN_PATH_ID, (char *)NULL);
|
||||
return plugin_dir_with_version;
|
||||
}
|
||||
|
||||
/* Get the personal plugin dir */
|
||||
const char *
|
||||
get_plugins_pers_dir(void)
|
||||
@ -1249,6 +1261,16 @@ get_plugins_pers_dir(void)
|
||||
return plugin_pers_dir;
|
||||
}
|
||||
|
||||
const char *
|
||||
get_plugins_pers_dir_with_version(void)
|
||||
{
|
||||
if (!plugin_pers_dir)
|
||||
init_plugin_pers_dir();
|
||||
if (plugin_pers_dir && !plugin_pers_dir_with_version)
|
||||
plugin_pers_dir_with_version = g_build_filename(plugin_pers_dir, PLUGIN_PATH_ID, (char *)NULL);
|
||||
return plugin_pers_dir_with_version;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find the directory where the extcap hooks are stored.
|
||||
*
|
||||
@ -2674,8 +2696,12 @@ free_progdirs(void)
|
||||
#if defined(HAVE_PLUGINS) || defined(HAVE_LUA)
|
||||
g_free(plugin_dir);
|
||||
plugin_dir = NULL;
|
||||
g_free(plugin_dir_with_version);
|
||||
plugin_dir_with_version = NULL;
|
||||
g_free(plugin_pers_dir);
|
||||
plugin_pers_dir = NULL;
|
||||
g_free(plugin_pers_dir_with_version);
|
||||
plugin_pers_dir_with_version = NULL;
|
||||
#endif
|
||||
g_free(extcap_dir);
|
||||
extcap_dir = NULL;
|
||||
|
@ -80,11 +80,21 @@ WS_DLL_PUBLIC char *get_executable_path(const char *filename);
|
||||
*/
|
||||
WS_DLL_PUBLIC const char *get_plugins_dir(void);
|
||||
|
||||
/*
|
||||
* Append VERSION_MAJOR.VERSION_MINOR to the plugin dir.
|
||||
*/
|
||||
WS_DLL_PUBLIC const char *get_plugins_dir_with_version(void);
|
||||
|
||||
/*
|
||||
* Get the personal plugin dir.
|
||||
*/
|
||||
WS_DLL_PUBLIC const char *get_plugins_pers_dir(void);
|
||||
|
||||
/*
|
||||
* Append VERSION_MAJOR.VERSION_MINOR to the plugin personal dir.
|
||||
*/
|
||||
WS_DLL_PUBLIC const char *get_plugins_pers_dir_with_version(void);
|
||||
|
||||
/*
|
||||
* Get the directory in which extcap hooks are stored; this must not be called
|
||||
* before configuration_init() is called, as they might be stored in a
|
||||
|
@ -130,14 +130,12 @@ scan_plugins_dir(GHashTable *plugins_module, const char *dirpath,
|
||||
const char *name; /* current file name */
|
||||
char *plugin_folder;
|
||||
char *plugin_file; /* current file full path */
|
||||
char *plugin_ext; /* plugin file extension */
|
||||
GModule *handle; /* handle returned by g_module_open */
|
||||
void *symbol;
|
||||
plugin *new_plug;
|
||||
plugin_type_e have_type;
|
||||
int abi_version;
|
||||
struct ws_module *module;
|
||||
char *s;
|
||||
|
||||
plugin_folder = g_build_filename(dirpath, type_to_dir(type), (char *)NULL);
|
||||
|
||||
@ -147,13 +145,11 @@ scan_plugins_dir(GHashTable *plugins_module, const char *dirpath,
|
||||
return;
|
||||
}
|
||||
|
||||
plugin_ext = plugins_file_suffix(type);
|
||||
|
||||
ws_debug("Scanning plugins folder \"%s\" for *%s", plugin_folder, plugin_ext);
|
||||
ws_debug("Scanning plugins folder \"%s\"", plugin_folder);
|
||||
|
||||
while ((name = g_dir_read_name(dir)) != NULL) {
|
||||
/* Skip anything but files with .dll or .so. */
|
||||
if (!g_str_has_suffix(name, plugin_ext))
|
||||
if (!g_str_has_suffix(name, WS_PLUGIN_MODULE_SUFFIX))
|
||||
continue;
|
||||
|
||||
plugin_file = g_build_filename(plugin_folder, name, (char *)NULL);
|
||||
@ -223,20 +219,14 @@ DIAG_ON_PEDANTIC
|
||||
new_plug->module = module;
|
||||
new_plug->scope = scope;
|
||||
|
||||
// Strip version from plugin display name
|
||||
s = strrchr(new_plug->name, '.');
|
||||
if (s != NULL && g_ascii_isdigit(*(s+1)))
|
||||
*s = '\0';
|
||||
|
||||
/* Add it to the list of plugins. */
|
||||
g_hash_table_replace(plugins_module, g_strdup(name), new_plug);
|
||||
g_hash_table_replace(plugins_module, new_plug->name, new_plug);
|
||||
ws_info("Registered plugin: %s (%s)", new_plug->name, plugin_file);
|
||||
ws_debug("plugin '%s' meta data: version = %s, flags = 0x%"PRIu32", spdx = %s, blurb = %s",
|
||||
name, module->version, module->flags, module->spdx_id, module->blurb);
|
||||
g_free(plugin_file);
|
||||
}
|
||||
ws_dir_close(dir);
|
||||
wmem_free(NULL, plugin_ext);
|
||||
g_free(plugin_folder);
|
||||
}
|
||||
|
||||
@ -249,7 +239,7 @@ plugins_init(plugin_type_e type)
|
||||
if (!plugins_supported())
|
||||
return NULL; /* nothing to do */
|
||||
|
||||
GHashTable *plugins_module = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, free_plugin);
|
||||
GHashTable *plugins_module = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, free_plugin);
|
||||
|
||||
/* Scan the users plugins directory first, giving it priority over the
|
||||
* global plugins folder. Only scan it if we weren't started with special
|
||||
@ -259,7 +249,7 @@ plugins_init(plugin_type_e type)
|
||||
* if we need privileges to start capturing, we'd need to
|
||||
* reclaim them before each time we start capturing.)
|
||||
*/
|
||||
const char *user_dir = get_plugins_pers_dir();
|
||||
const char *user_dir = get_plugins_pers_dir_with_version();
|
||||
if (!started_with_special_privs()) {
|
||||
scan_plugins_dir(plugins_module, user_dir, type, WS_PLUGIN_SCOPE_USER);
|
||||
}
|
||||
@ -272,7 +262,7 @@ plugins_init(plugin_type_e type)
|
||||
* Scan the global plugin directory. Make sure we don't scan the same directory
|
||||
* twice (under some unusual install configurations).
|
||||
*/
|
||||
const char *global_dir = get_plugins_dir();
|
||||
const char *global_dir = get_plugins_dir_with_version();
|
||||
if (strcmp(global_dir, user_dir) != 0) {
|
||||
scan_plugins_dir(plugins_module, global_dir, type, WS_PLUGIN_SCOPE_GLOBAL);
|
||||
}
|
||||
@ -402,16 +392,10 @@ DIAG_ON_PEDANTIC
|
||||
char *
|
||||
plugins_pers_type_folder(plugin_type_e type)
|
||||
{
|
||||
return g_build_filename(get_plugins_pers_dir(),
|
||||
return g_build_filename(get_plugins_pers_dir_with_version(),
|
||||
type_to_dir(type), (const char *)NULL);
|
||||
}
|
||||
|
||||
char *
|
||||
plugins_file_suffix(plugin_type_e type)
|
||||
{
|
||||
return ws_strdup_printf("%s.%d", WS_PLUGIN_MODULE_SUFFIX, plugins_abi_version(type));
|
||||
}
|
||||
|
||||
int
|
||||
plugins_abi_version(plugin_type_e type)
|
||||
{
|
||||
|
@ -41,9 +41,8 @@ typedef enum {
|
||||
#define WS_PLUGIN_DESC_TAP_LISTENER (1UL << 4)
|
||||
#define WS_PLUGIN_DESC_DFUNCTION (1UL << 5)
|
||||
|
||||
#if defined(SHARED_MODULE_SUFFIX)
|
||||
#define WS_PLUGIN_MODULE_SUFFIX SHARED_MODULE_SUFFIX
|
||||
#elif defined(_WIN32)
|
||||
// GLib and Qt allow ".dylib" and ".so" on macOS. Should we do the same?
|
||||
#ifdef _WIN32
|
||||
#define WS_PLUGIN_MODULE_SUFFIX ".dll"
|
||||
#else
|
||||
#define WS_PLUGIN_MODULE_SUFFIX ".so"
|
||||
@ -92,8 +91,6 @@ WS_DLL_PUBLIC plugin_type_e plugins_check_file(const char *path);
|
||||
|
||||
WS_DLL_PUBLIC char *plugins_pers_type_folder(plugin_type_e type);
|
||||
|
||||
WS_DLL_PUBLIC char *plugins_file_suffix(plugin_type_e type);
|
||||
|
||||
WS_DLL_PUBLIC
|
||||
int plugins_abi_version(plugin_type_e type);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user