From 6876edd5bae672799fc50e36b547d90ccfb22c43 Mon Sep 17 00:00:00 2001 From: Rye Date: Thu, 23 Oct 2025 02:29:56 -0400 Subject: Cherry-pick gstreamer10 from 57d423745fd1d3d0ea6a0c69b869a20c27e27fc5 Signed-off-by: Rye --- indra/media_plugins/base/media_plugin_base.cpp | 96 ++++++++++++++++++++++++++ indra/media_plugins/base/media_plugin_base.h | 39 ++++++++++- 2 files changed, 134 insertions(+), 1 deletion(-) (limited to 'indra/media_plugins/base') diff --git a/indra/media_plugins/base/media_plugin_base.cpp b/indra/media_plugins/base/media_plugin_base.cpp index ccaa43cfb5..2e1e43d9e8 100644 --- a/indra/media_plugins/base/media_plugin_base.cpp +++ b/indra/media_plugins/base/media_plugin_base.cpp @@ -167,6 +167,55 @@ void MediaPluginBase::sendStatus() sendMessage(message); } +#if LL_LINUX + +#include + +size_t SymbolGrabber::registerSymbol( SymbolToGrab aSymbol ) +{ + gSymbolsToGrab.emplace_back(aSymbol); + return gSymbolsToGrab.size(); +} + +bool SymbolGrabber::grabSymbols(std::vector< std::string > const &aDSONames) +{ + if (sSymsGrabbed) + return true; + + for( std::vector< std::string >::const_iterator itr = aDSONames.begin(); itr != aDSONames.end(); ++itr ) + { + auto pDSO = dlopen( itr->c_str(), RTLD_NOW ); + + if( pDSO ) + { + sLoadedLibraries.push_back(pDSO); + + for (auto i = 0; i < gSymbolsToGrab.size(); ++i) + { + if (!*gSymbolsToGrab[i].mPPFunc) + *gSymbolsToGrab[i].mPPFunc = dlsym(pDSO, gSymbolsToGrab[i].mName); + } + } + } + + bool sym_error = false; + + for( auto i = 0; i < gSymbolsToGrab.size(); ++i ) + { + if( gSymbolsToGrab[ i ].mRequired && ! *gSymbolsToGrab[ i ].mPPFunc ) + sym_error = true; + } + + sSymsGrabbed = !sym_error; + return sSymsGrabbed; +} + +void SymbolGrabber::ungrabSymbols() +{ + +} +#endif + #if LL_WINDOWS # define LLSYMEXPORT __declspec(dllexport) @@ -202,3 +251,50 @@ int WINAPI DllEntryPoint( HINSTANCE hInstance, unsigned long reason, void* param return 1; } #endif + +#if LL_LINUX +pid_t getParentPid( pid_t aPid ) +{ + std::stringstream strm; + strm << "/proc/" << aPid << "/status"; + std::ifstream in{ strm.str() }; + + if( !in.is_open() ) + return 0; + + pid_t res {0}; + while( !in.eof() && res == 0 ) + { + std::string line; + line.resize( 1024, 0 ); + in.getline( &line[0], line.length() ); + + auto i = line.find( "PPid:" ); + + if( i == std::string::npos ) + continue; + + char const *pIn = line.c_str() + 5; // Skip over pid; + while( *pIn != 0 && isspace( *pIn ) ) + ++pIn; + + if( *pIn ) + res = atoll( pIn ); + } + return res; +} + +bool isPluginPid( pid_t aPid ) +{ + auto myPid = getpid(); + + do + { + if( aPid == myPid ) + return true; + aPid = getParentPid( aPid ); + } while( aPid > 1 ); + + return false; +} +#endif diff --git a/indra/media_plugins/base/media_plugin_base.h b/indra/media_plugins/base/media_plugin_base.h index f65c712a66..0f014f8335 100644 --- a/indra/media_plugins/base/media_plugin_base.h +++ b/indra/media_plugins/base/media_plugin_base.h @@ -32,6 +32,40 @@ #include "llpluginmessage.h" #include "llpluginmessageclasses.h" +#if LL_LINUX + +struct SymbolToGrab +{ + bool mRequired; + char const *mName; + void **mPPFunc; +}; + +class SymbolGrabber +{ +public: + size_t registerSymbol( SymbolToGrab aSymbol ); + bool grabSymbols(std::vector< std::string > const &aDSONames); + void ungrabSymbols(); + +private: + std::vector< SymbolToGrab > gSymbolsToGrab; + + bool sSymsGrabbed = false; + std::vector sLoadedLibraries; +}; + +extern SymbolGrabber gSymbolGrabber; + +// extern SymbolGrabber gSymbolGrabber; + +#define LL_GRAB_SYM(SYMBOL_GRABBER, REQUIRED, SYMBOL_NAME, RETURN, ...) \ + RETURN (*ll##SYMBOL_NAME)(__VA_ARGS__) = nullptr; \ + size_t gRegistered##SYMBOL_NAME = SYMBOL_GRABBER.registerSymbol( \ + { REQUIRED, #SYMBOL_NAME , (void**)&ll##SYMBOL_NAME} \ + ); + +#endif class MediaPluginBase { @@ -126,4 +160,7 @@ int init_media_plugin( LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data); - +#if LL_LINUX +pid_t getParentPid(pid_t aPid); +bool isPluginPid(pid_t aPid); +#endif -- cgit v1.3 From b56986e9b40a1a16e3cabb02efdc77a06795b520 Mon Sep 17 00:00:00 2001 From: Hecklezz Date: Wed, 7 Jan 2026 19:59:13 +1000 Subject: Corrected file permissions, only permitting execution on .sh scripts and .py scripts with a shebang Signed-off-by: Hecklezz --- .gitignore | 0 LICENSE | 0 doc/LGPL-license.txt | 0 doc/LICENSE-logos.txt | 0 doc/LICENSE-source.txt | 0 doc/contributions.txt | 0 doc/releasenotes-where.txt | 0 doc/translations.txt | 0 indra/lib/python/indra/__init__.py | 0 indra/lib/python/indra/ipc/__init__.py | 0 indra/lib/python/indra/ipc/compatibility.py | 0 indra/lib/python/indra/ipc/llmessage.py | 0 indra/lib/python/indra/ipc/tokenstream.py | 0 indra/lib/python/indra/util/__init__.py | 0 indra/lib/python/indra/util/llmanifest.py | 0 indra/llappearanceutility/llprocessparams.cpp | 0 indra/llaudio/llaudiodecodemgr.cpp | 0 indra/llaudio/llaudioengine.h | 0 indra/llcommon/hexdump.h | 0 indra/llcorehttp/llhttpconstants.cpp | 0 indra/llcorehttp/llhttpconstants.h | 0 indra/llcorehttp/tests/llcorehttp_test.cpp | 0 indra/llui/tests/llurlentry_stub.cpp | 0 indra/media_plugins/base/media_plugin_base.exp | 0 indra/media_plugins/cef/linux/volume_catcher_pipewire.cpp | 0 indra/media_plugins/cef/linux/volume_catcher_pulseaudio.cpp | 0 .../cef/linux/volume_catcher_pulseaudio_glib_syms.inc | 0 .../cef/linux/volume_catcher_pulseaudio_syms.inc | 0 indra/newview/app_settings/llsd.xsd | 0 indra/newview/app_settings/message.xml | 0 indra/newview/installers/darwin/dmg-cleanup.applescript | 0 .../installers/darwin/release-dmg/Applications-alias.r | 0 indra/newview/installers/darwin/release-dmg/_DS_Store | Bin indra/newview/installers/windows/lang_de.nsi | 0 indra/newview/installers/windows/lang_es.nsi | Bin indra/newview/installers/windows/lang_fr.nsi | Bin indra/newview/installers/windows/lang_it.nsi | Bin indra/newview/installers/windows/lang_ja.nsi | Bin indra/newview/installers/windows/lang_pt-br.nsi | Bin indra/newview/installers/windows/lang_ru.nsi | Bin indra/newview/installers/windows/lang_tr.nsi | Bin indra/newview/installers/windows/lang_zh.nsi | Bin indra/newview/llfloatermap.cpp | 0 indra/newview/llfloaterworldmap.cpp | 0 indra/newview/llnavigationbar.h | 0 indra/newview/llviewerparceloverlay.cpp | 0 indra/newview/llviewerregion.cpp | 0 indra/newview/llworldmapview.cpp | 0 indra/newview/res/have_artwork_bundle.marker | 0 indra/newview/res/viewerRes.rc | 0 indra/newview/secondlife-i686.supp | 0 .../skins/default/xui/en/menu_gallery_outfit_tab.xml | 0 scripts/code_tools/fix_whitespace.py | 0 scripts/code_tools/fix_xml_indentations.py | 0 scripts/code_tools/modified-strings.sh | 0 scripts/code_tools/modified_strings.py | 0 scripts/content_tools/anim_tool.py | 0 scripts/content_tools/arche_tool.py | 0 scripts/content_tools/dae_tool.py | 0 scripts/content_tools/skel_tool.py | 0 scripts/messages/message_template.msg | 0 scripts/messages/message_template.msg.sha1 | 0 scripts/metrics/slp_conv.py | 0 scripts/metrics/viewer_asset_logs.py | 0 scripts/perf/logsdir.py | 0 scripts/perf/perfbot_run.py | 0 scripts/perf/profile_cmp.py | 0 scripts/perf/profile_csv.py | 0 scripts/perf/profile_pretty.py | 0 scripts/templates/template-cpp.cpp | 0 scripts/templates/template-h.h | 0 71 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 .gitignore mode change 100755 => 100644 LICENSE mode change 100755 => 100644 doc/LGPL-license.txt mode change 100755 => 100644 doc/LICENSE-logos.txt mode change 100755 => 100644 doc/LICENSE-source.txt mode change 100755 => 100644 doc/contributions.txt mode change 100755 => 100644 doc/releasenotes-where.txt mode change 100755 => 100644 doc/translations.txt mode change 100755 => 100644 indra/lib/python/indra/__init__.py mode change 100755 => 100644 indra/lib/python/indra/ipc/__init__.py mode change 100755 => 100644 indra/lib/python/indra/ipc/compatibility.py mode change 100755 => 100644 indra/lib/python/indra/ipc/llmessage.py mode change 100755 => 100644 indra/lib/python/indra/ipc/tokenstream.py mode change 100755 => 100644 indra/lib/python/indra/util/__init__.py mode change 100755 => 100644 indra/lib/python/indra/util/llmanifest.py mode change 100755 => 100644 indra/llappearanceutility/llprocessparams.cpp mode change 100755 => 100644 indra/llaudio/llaudiodecodemgr.cpp mode change 100755 => 100644 indra/llaudio/llaudioengine.h mode change 100755 => 100644 indra/llcommon/hexdump.h mode change 100755 => 100644 indra/llcorehttp/llhttpconstants.cpp mode change 100755 => 100644 indra/llcorehttp/llhttpconstants.h mode change 100755 => 100644 indra/llcorehttp/tests/llcorehttp_test.cpp mode change 100755 => 100644 indra/llui/tests/llurlentry_stub.cpp mode change 100755 => 100644 indra/media_plugins/base/media_plugin_base.exp mode change 100755 => 100644 indra/media_plugins/cef/linux/volume_catcher_pipewire.cpp mode change 100755 => 100644 indra/media_plugins/cef/linux/volume_catcher_pulseaudio.cpp mode change 100755 => 100644 indra/media_plugins/cef/linux/volume_catcher_pulseaudio_glib_syms.inc mode change 100755 => 100644 indra/media_plugins/cef/linux/volume_catcher_pulseaudio_syms.inc mode change 100755 => 100644 indra/newview/app_settings/llsd.xsd mode change 100755 => 100644 indra/newview/app_settings/message.xml mode change 100755 => 100644 indra/newview/installers/darwin/dmg-cleanup.applescript mode change 100755 => 100644 indra/newview/installers/darwin/release-dmg/Applications-alias.r mode change 100755 => 100644 indra/newview/installers/darwin/release-dmg/_DS_Store mode change 100755 => 100644 indra/newview/installers/windows/lang_de.nsi mode change 100755 => 100644 indra/newview/installers/windows/lang_es.nsi mode change 100755 => 100644 indra/newview/installers/windows/lang_fr.nsi mode change 100755 => 100644 indra/newview/installers/windows/lang_it.nsi mode change 100755 => 100644 indra/newview/installers/windows/lang_ja.nsi mode change 100755 => 100644 indra/newview/installers/windows/lang_pt-br.nsi mode change 100755 => 100644 indra/newview/installers/windows/lang_ru.nsi mode change 100755 => 100644 indra/newview/installers/windows/lang_tr.nsi mode change 100755 => 100644 indra/newview/installers/windows/lang_zh.nsi mode change 100755 => 100644 indra/newview/llfloatermap.cpp mode change 100755 => 100644 indra/newview/llfloaterworldmap.cpp mode change 100755 => 100644 indra/newview/llnavigationbar.h mode change 100755 => 100644 indra/newview/llviewerparceloverlay.cpp mode change 100755 => 100644 indra/newview/llviewerregion.cpp mode change 100755 => 100644 indra/newview/llworldmapview.cpp mode change 100755 => 100644 indra/newview/res/have_artwork_bundle.marker mode change 100755 => 100644 indra/newview/res/viewerRes.rc mode change 100755 => 100644 indra/newview/secondlife-i686.supp mode change 100755 => 100644 indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml mode change 100644 => 100755 scripts/code_tools/fix_whitespace.py mode change 100644 => 100755 scripts/code_tools/fix_xml_indentations.py mode change 100644 => 100755 scripts/code_tools/modified-strings.sh mode change 100644 => 100755 scripts/code_tools/modified_strings.py mode change 100644 => 100755 scripts/content_tools/anim_tool.py mode change 100644 => 100755 scripts/content_tools/arche_tool.py mode change 100644 => 100755 scripts/content_tools/dae_tool.py mode change 100644 => 100755 scripts/content_tools/skel_tool.py mode change 100755 => 100644 scripts/messages/message_template.msg mode change 100755 => 100644 scripts/messages/message_template.msg.sha1 mode change 100644 => 100755 scripts/metrics/slp_conv.py mode change 100644 => 100755 scripts/metrics/viewer_asset_logs.py mode change 100644 => 100755 scripts/perf/logsdir.py mode change 100644 => 100755 scripts/perf/perfbot_run.py mode change 100644 => 100755 scripts/perf/profile_cmp.py mode change 100644 => 100755 scripts/perf/profile_csv.py mode change 100644 => 100755 scripts/perf/profile_pretty.py mode change 100755 => 100644 scripts/templates/template-cpp.cpp mode change 100755 => 100644 scripts/templates/template-h.h (limited to 'indra/media_plugins/base') diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/doc/LGPL-license.txt b/doc/LGPL-license.txt old mode 100755 new mode 100644 diff --git a/doc/LICENSE-logos.txt b/doc/LICENSE-logos.txt old mode 100755 new mode 100644 diff --git a/doc/LICENSE-source.txt b/doc/LICENSE-source.txt old mode 100755 new mode 100644 diff --git a/doc/contributions.txt b/doc/contributions.txt old mode 100755 new mode 100644 diff --git a/doc/releasenotes-where.txt b/doc/releasenotes-where.txt old mode 100755 new mode 100644 diff --git a/doc/translations.txt b/doc/translations.txt old mode 100755 new mode 100644 diff --git a/indra/lib/python/indra/__init__.py b/indra/lib/python/indra/__init__.py old mode 100755 new mode 100644 diff --git a/indra/lib/python/indra/ipc/__init__.py b/indra/lib/python/indra/ipc/__init__.py old mode 100755 new mode 100644 diff --git a/indra/lib/python/indra/ipc/compatibility.py b/indra/lib/python/indra/ipc/compatibility.py old mode 100755 new mode 100644 diff --git a/indra/lib/python/indra/ipc/llmessage.py b/indra/lib/python/indra/ipc/llmessage.py old mode 100755 new mode 100644 diff --git a/indra/lib/python/indra/ipc/tokenstream.py b/indra/lib/python/indra/ipc/tokenstream.py old mode 100755 new mode 100644 diff --git a/indra/lib/python/indra/util/__init__.py b/indra/lib/python/indra/util/__init__.py old mode 100755 new mode 100644 diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py old mode 100755 new mode 100644 diff --git a/indra/llappearanceutility/llprocessparams.cpp b/indra/llappearanceutility/llprocessparams.cpp old mode 100755 new mode 100644 diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp old mode 100755 new mode 100644 diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h old mode 100755 new mode 100644 diff --git a/indra/llcommon/hexdump.h b/indra/llcommon/hexdump.h old mode 100755 new mode 100644 diff --git a/indra/llcorehttp/llhttpconstants.cpp b/indra/llcorehttp/llhttpconstants.cpp old mode 100755 new mode 100644 diff --git a/indra/llcorehttp/llhttpconstants.h b/indra/llcorehttp/llhttpconstants.h old mode 100755 new mode 100644 diff --git a/indra/llcorehttp/tests/llcorehttp_test.cpp b/indra/llcorehttp/tests/llcorehttp_test.cpp old mode 100755 new mode 100644 diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp old mode 100755 new mode 100644 diff --git a/indra/media_plugins/base/media_plugin_base.exp b/indra/media_plugins/base/media_plugin_base.exp old mode 100755 new mode 100644 diff --git a/indra/media_plugins/cef/linux/volume_catcher_pipewire.cpp b/indra/media_plugins/cef/linux/volume_catcher_pipewire.cpp old mode 100755 new mode 100644 diff --git a/indra/media_plugins/cef/linux/volume_catcher_pulseaudio.cpp b/indra/media_plugins/cef/linux/volume_catcher_pulseaudio.cpp old mode 100755 new mode 100644 diff --git a/indra/media_plugins/cef/linux/volume_catcher_pulseaudio_glib_syms.inc b/indra/media_plugins/cef/linux/volume_catcher_pulseaudio_glib_syms.inc old mode 100755 new mode 100644 diff --git a/indra/media_plugins/cef/linux/volume_catcher_pulseaudio_syms.inc b/indra/media_plugins/cef/linux/volume_catcher_pulseaudio_syms.inc old mode 100755 new mode 100644 diff --git a/indra/newview/app_settings/llsd.xsd b/indra/newview/app_settings/llsd.xsd old mode 100755 new mode 100644 diff --git a/indra/newview/app_settings/message.xml b/indra/newview/app_settings/message.xml old mode 100755 new mode 100644 diff --git a/indra/newview/installers/darwin/dmg-cleanup.applescript b/indra/newview/installers/darwin/dmg-cleanup.applescript old mode 100755 new mode 100644 diff --git a/indra/newview/installers/darwin/release-dmg/Applications-alias.r b/indra/newview/installers/darwin/release-dmg/Applications-alias.r old mode 100755 new mode 100644 diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_es.nsi b/indra/newview/installers/windows/lang_es.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_fr.nsi b/indra/newview/installers/windows/lang_fr.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_it.nsi b/indra/newview/installers/windows/lang_it.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_pt-br.nsi b/indra/newview/installers/windows/lang_pt-br.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi old mode 100755 new mode 100644 diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp old mode 100755 new mode 100644 diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp old mode 100755 new mode 100644 diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h old mode 100755 new mode 100644 diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp old mode 100755 new mode 100644 diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp old mode 100755 new mode 100644 diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp old mode 100755 new mode 100644 diff --git a/indra/newview/res/have_artwork_bundle.marker b/indra/newview/res/have_artwork_bundle.marker old mode 100755 new mode 100644 diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc old mode 100755 new mode 100644 diff --git a/indra/newview/secondlife-i686.supp b/indra/newview/secondlife-i686.supp old mode 100755 new mode 100644 diff --git a/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml b/indra/newview/skins/default/xui/en/menu_gallery_outfit_tab.xml old mode 100755 new mode 100644 diff --git a/scripts/code_tools/fix_whitespace.py b/scripts/code_tools/fix_whitespace.py old mode 100644 new mode 100755 diff --git a/scripts/code_tools/fix_xml_indentations.py b/scripts/code_tools/fix_xml_indentations.py old mode 100644 new mode 100755 diff --git a/scripts/code_tools/modified-strings.sh b/scripts/code_tools/modified-strings.sh old mode 100644 new mode 100755 diff --git a/scripts/code_tools/modified_strings.py b/scripts/code_tools/modified_strings.py old mode 100644 new mode 100755 diff --git a/scripts/content_tools/anim_tool.py b/scripts/content_tools/anim_tool.py old mode 100644 new mode 100755 diff --git a/scripts/content_tools/arche_tool.py b/scripts/content_tools/arche_tool.py old mode 100644 new mode 100755 diff --git a/scripts/content_tools/dae_tool.py b/scripts/content_tools/dae_tool.py old mode 100644 new mode 100755 diff --git a/scripts/content_tools/skel_tool.py b/scripts/content_tools/skel_tool.py old mode 100644 new mode 100755 diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg old mode 100755 new mode 100644 diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1 old mode 100755 new mode 100644 diff --git a/scripts/metrics/slp_conv.py b/scripts/metrics/slp_conv.py old mode 100644 new mode 100755 diff --git a/scripts/metrics/viewer_asset_logs.py b/scripts/metrics/viewer_asset_logs.py old mode 100644 new mode 100755 diff --git a/scripts/perf/logsdir.py b/scripts/perf/logsdir.py old mode 100644 new mode 100755 diff --git a/scripts/perf/perfbot_run.py b/scripts/perf/perfbot_run.py old mode 100644 new mode 100755 diff --git a/scripts/perf/profile_cmp.py b/scripts/perf/profile_cmp.py old mode 100644 new mode 100755 diff --git a/scripts/perf/profile_csv.py b/scripts/perf/profile_csv.py old mode 100644 new mode 100755 diff --git a/scripts/perf/profile_pretty.py b/scripts/perf/profile_pretty.py old mode 100644 new mode 100755 diff --git a/scripts/templates/template-cpp.cpp b/scripts/templates/template-cpp.cpp old mode 100755 new mode 100644 diff --git a/scripts/templates/template-h.h b/scripts/templates/template-h.h old mode 100755 new mode 100644 -- cgit v1.3