mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-12 18:59:50 +03:00
*/*: remove unused files
This commit is contained in:
parent
d8d842426a
commit
b69d95c90b
15 changed files with 0 additions and 787 deletions
|
@ -1,13 +0,0 @@
|
|||
Fix -Wincompatible-pointer-type error on struct sockaddr_un with gcc 14.
|
||||
|
||||
--- bolt-0.9.8-origin/tests/bolt-test.c
|
||||
+++ bolt-0.9.8/tests/bolt-test.c
|
||||
@@ -128,7 +128,7 @@
|
||||
+ strlen (sau.sun_path)
|
||||
+ 1;
|
||||
|
||||
- r = bind (fd, &sau, socklen);
|
||||
+ r = bind (fd, (struct sockaddr *)&sau, socklen);
|
||||
g_assert_cmpint (r, >, -1);
|
||||
|
||||
r = setsockopt (fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof (one));
|
|
@ -1,6 +0,0 @@
|
|||
# dcc conf.d file for alpine linux
|
||||
|
||||
#
|
||||
# Specify daemon options in /var/dcc/dcc_conf
|
||||
#
|
||||
#dcc_opts=""
|
|
@ -1,45 +0,0 @@
|
|||
From e0ea91afdf0dccef7e3afbf23a159bf5a8d6b249 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Mon, 15 Jul 2024 09:45:20 +0300
|
||||
Subject: [PATCH] Remove parent for DropMenu
|
||||
|
||||
QWidget::winId() will force creating window handles for all its ancestor
|
||||
widgets unless the Qt::WA_DontCreateNativeAncestors flag is set.
|
||||
|
||||
For example, on wayland, this would result in creating sub-surfaces, and
|
||||
depending on the client, it's likely that there are going to be issues with
|
||||
painting.
|
||||
|
||||
On the other hand, since the DropJob takes care of setting the transient
|
||||
parent for the DropMenu, the parent can be simply omitted.
|
||||
|
||||
BUG: 490183
|
||||
---
|
||||
src/widgets/dropjob.cpp | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/widgets/dropjob.cpp b/src/widgets/dropjob.cpp
|
||||
index e11e762bd0..f4a23f5688 100644
|
||||
--- a/src/widgets/dropjob.cpp
|
||||
+++ b/src/widgets/dropjob.cpp
|
||||
@@ -520,8 +520,7 @@ void DropJobPrivate::slotDropActionDetermined(int error)
|
||||
|
||||
// There was an error, handle it
|
||||
if (error == KIO::ERR_UNKNOWN) {
|
||||
- auto *window = KJobWidgets::window(q);
|
||||
- KIO::DropMenu *menu = new KIO::DropMenu(window);
|
||||
+ KIO::DropMenu *menu = new KIO::DropMenu();
|
||||
QObject::connect(menu, &QMenu::aboutToHide, menu, &QObject::deleteLater);
|
||||
|
||||
// If the user clicks outside the menu, it will be destroyed without emitting the triggered signal.
|
||||
@@ -541,6 +540,7 @@ void DropJobPrivate::slotDropActionDetermined(int error)
|
||||
menu->windowHandle()->setTransientParent(transientParent);
|
||||
}
|
||||
}
|
||||
+ auto *window = KJobWidgets::window(q);
|
||||
menu->popup(window ? window->mapToGlobal(m_relativePos) : QCursor::pos());
|
||||
}
|
||||
m_menus.insert(menu);
|
||||
--
|
||||
GitLab
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
#%PAM-1.0
|
||||
|
||||
auth required pam_nologin.so
|
||||
auth required pam_permit.so
|
||||
|
||||
account include base-account
|
||||
|
||||
password include base-password
|
||||
|
||||
session include base-session-noninteractive
|
|
@ -1,67 +0,0 @@
|
|||
From 35ce74f1510a9f41b2aff82fd1eda63014c3fe2b Mon Sep 17 00:00:00 2001
|
||||
From: Palo Kisa <palo.kisa@gmail.com>
|
||||
Date: Sat, 22 Feb 2025 09:42:18 +0100
|
||||
Subject: [PATCH] Adapt to changes in private headers Qt v6.9 (#311)
|
||||
|
||||
* Adapt to changes in private headers Qt v6.9
|
||||
|
||||
* Added a missing condition
|
||||
|
||||
---------
|
||||
|
||||
Co-authored-by: Tsu Jan <tsujan2000@gmail.com>
|
||||
---
|
||||
src/xdgiconloader/xdgiconloader.cpp | 11 +++++++++--
|
||||
src/xdgiconloader/xdgiconloader_p.h | 3 ++-
|
||||
2 files changed, 11 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/xdgiconloader/xdgiconloader.cpp b/src/xdgiconloader/xdgiconloader.cpp
|
||||
index c299cca..7595069 100644
|
||||
--- a/src/xdgiconloader/xdgiconloader.cpp
|
||||
+++ b/src/xdgiconloader/xdgiconloader.cpp
|
||||
@@ -439,7 +439,11 @@ QThemeIconInfo XdgIconLoader::findIconHelper(const QString &themeName,
|
||||
} else if (gSupportsSvg) {
|
||||
const QString svgPath = subDir + svgIconName;
|
||||
if (QFile::exists(svgPath)) {
|
||||
- std::unique_ptr<ScalableEntry> iconEntry = (followColorScheme() && theme.followsColorScheme()) ? std::make_unique<ScalableFollowsColorEntry>() : std::make_unique<ScalableEntry>();
|
||||
+ std::unique_ptr<QIconLoaderEngineEntry> iconEntry;
|
||||
+ if (followColorScheme() && theme.followsColorScheme())
|
||||
+ iconEntry.reset(new ScalableFollowsColorEntry);
|
||||
+ else
|
||||
+ iconEntry.reset(new ScalableEntry);
|
||||
iconEntry->dir = dirInfo;
|
||||
iconEntry->filename = svgPath;
|
||||
info.entries.push_back(std::move(iconEntry));
|
||||
@@ -737,8 +741,11 @@ QSize XdgIconLoaderEngine::actualSize(const QSize &size, QIcon::Mode mode,
|
||||
QIconLoaderEngineEntry *entry = entryForSize(m_info, size);
|
||||
if (entry) {
|
||||
const QIconDirInfo &dir = entry->dir;
|
||||
- if (dir.type == QIconDirInfo::Scalable || dynamic_cast<ScalableEntry *>(entry))
|
||||
+ if (dir.type == QIconDirInfo::Scalable
|
||||
+ || dynamic_cast<ScalableEntry *>(entry)
|
||||
+ || dynamic_cast<ScalableFollowsColorEntry *>(entry)) {
|
||||
return size;
|
||||
+ }
|
||||
else {
|
||||
int dir_size = dir.size;
|
||||
//Note: fallback for directories that don't have its content size defined
|
||||
diff --git a/src/xdgiconloader/xdgiconloader_p.h b/src/xdgiconloader/xdgiconloader_p.h
|
||||
index 6c5f17f..cb990a9 100644
|
||||
--- a/src/xdgiconloader/xdgiconloader_p.h
|
||||
+++ b/src/xdgiconloader/xdgiconloader_p.h
|
||||
@@ -61,13 +61,14 @@
|
||||
|
||||
class XdgIconLoader;
|
||||
|
||||
-struct ScalableFollowsColorEntry : public ScalableEntry
|
||||
+struct ScalableFollowsColorEntry : public QIconLoaderEngineEntry
|
||||
{
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(6,8,0))
|
||||
QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale) override;
|
||||
#else
|
||||
QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override;
|
||||
#endif
|
||||
+ QIcon svgIcon;
|
||||
};
|
||||
|
||||
//class QIconLoaderEngine : public QIconEngine
|
|
@ -1,42 +0,0 @@
|
|||
Patch-Source: https://gitlab.archlinux.org/archlinux/packaging/packages/ncmpcpp/-/raw/a39bfdeeefc31d6b35fc73f522e53ca74c2fd722/taglib-2.patch
|
||||
diff --git a/extras/artist_to_albumartist.cpp b/extras/artist_to_albumartist.cpp
|
||||
index c3ddfee3..bf5aac29 100644
|
||||
--- a/extras/artist_to_albumartist.cpp
|
||||
+++ b/extras/artist_to_albumartist.cpp
|
||||
@@ -34,7 +34,7 @@ enum class CopyResult { Success, NoArtist, AlbumArtistAlreadyInPlace };
|
||||
bool is_framelist_empty(const TagLib::ID3v2::FrameList &list)
|
||||
{
|
||||
for (auto it = list.begin(); it != list.end(); ++it)
|
||||
- if ((*it)->toString() != TagLib::String::null)
|
||||
+ if ((*it)->toString() != TagLib::String())
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
diff --git a/src/tags.cpp b/src/tags.cpp
|
||||
index 6cd6a8c2..09731801 100644
|
||||
--- a/src/tags.cpp
|
||||
+++ b/src/tags.cpp
|
||||
@@ -123,12 +123,12 @@ void writeCommonTags(const MPD::MutableSong &s, TagLib::Tag *tag)
|
||||
tag->setArtist(ToWString(s.getArtist()));
|
||||
tag->setAlbum(ToWString(s.getAlbum()));
|
||||
try {
|
||||
- tag->setYear(boost::lexical_cast<TagLib::uint>(s.getDate()));
|
||||
+ tag->setYear(boost::lexical_cast<uint>(s.getDate()));
|
||||
} catch (boost::bad_lexical_cast &) {
|
||||
std::cerr << "writeCommonTags: couldn't write 'year' tag to '" << s.getURI() << "' as it's not a positive integer\n";
|
||||
}
|
||||
try {
|
||||
- tag->setTrack(boost::lexical_cast<TagLib::uint>(s.getTrack()));
|
||||
+ tag->setTrack(boost::lexical_cast<uint>(s.getTrack()));
|
||||
} catch (boost::bad_lexical_cast &) {
|
||||
std::cerr << "writeCommonTags: couldn't write 'track' tag to '" << s.getURI() << "' as it's not a positive integer\n";
|
||||
}
|
||||
@@ -306,7 +306,7 @@ bool write(MPD::MutableSong &s)
|
||||
{
|
||||
writeID3v2Tags(s, mpeg_file->ID3v2Tag(true));
|
||||
// write id3v2.4 tags only
|
||||
- if (!mpeg_file->save(TagLib::MPEG::File::ID3v2, true, 4, false))
|
||||
+ if (!mpeg_file->save(TagLib::MPEG::File::ID3v2, TagLib::File::StripTags::StripNone, TagLib::ID3v2::Version::v4, TagLib::File::DuplicateTags::DoNotDuplicate))
|
||||
return false;
|
||||
// do not call generic save() as it will duplicate tags
|
||||
saved = true;
|
|
@ -1,13 +0,0 @@
|
|||
#!/sbin/openrc-run
|
||||
|
||||
name="Bluetooth"
|
||||
command="/usr/lib/bluetooth/bluetoothd"
|
||||
pidfile="/var/run/bluetoothd.pid"
|
||||
start_stop_daemon_args="--background --make-pidfile"
|
||||
|
||||
|
||||
depend() {
|
||||
after coldplug udev-postmount
|
||||
need dbus localmount hostname
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=mpris-proxy
|
||||
Comment=Start mpris-proxy in daemon mode
|
||||
Exec=/usr/bin/mpris-proxy
|
||||
TryExec=/usr/bin/mpris-proxy
|
||||
Terminal=false
|
||||
X-KDE-autostart-phase=2
|
|
@ -1,5 +0,0 @@
|
|||
# Bind rfcomm devices (allowed values are "true" and "false")
|
||||
RFCOMM_ENABLE=true
|
||||
|
||||
# Config file for rfcomm
|
||||
RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
|
|
@ -1,27 +0,0 @@
|
|||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/net-wireless/bluez/files/rfcomm-init.d,v 1.1 2011/12/31 21:09:18 pacho Exp $
|
||||
|
||||
depend() {
|
||||
after coldplug
|
||||
need dbus localmount hostname
|
||||
}
|
||||
|
||||
start() {
|
||||
if [ "${RFCOMM_ENABLE}" = "true" -a -x /usr/bin/rfcomm ]; then
|
||||
if [ -f "${RFCOMM_CONFIG}" ]; then
|
||||
ebegin "Starting rfcomm"
|
||||
/usr/bin/rfcomm -f "${RFCOMM_CONFIG}" bind all
|
||||
eend $?
|
||||
else
|
||||
ewarn "Not enabling rfcomm because RFCOMM_CONFIG does not exists"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Shutting down rfcomm"
|
||||
/usr/bin/rfcomm release all
|
||||
eend $?
|
||||
}
|
|
@ -1,379 +0,0 @@
|
|||
diff --git a/src/tools/qtgrpcgen/qgrpcgenerator.cpp b/src/tools/qtgrpcgen/qgrpcgenerator.cpp
|
||||
index 6c205648..046b35b1 100644
|
||||
--- a/src/tools/qtgrpcgen/qgrpcgenerator.cpp
|
||||
+++ b/src/tools/qtgrpcgen/qgrpcgenerator.cpp
|
||||
@@ -87,19 +87,19 @@ std::set<std::string> QGrpcGenerator::GetInternalIncludes(const FileDescriptor *
|
||||
for (int j = 0; j < service->method_count(); ++j) {
|
||||
const MethodDescriptor *method = service->method(j);
|
||||
if (method->input_type()->file() != service->file()) {
|
||||
- includes.insert(utils::removeFileSuffix(method->input_type()->file()->name())
|
||||
+ includes.insert(utils::removeFileSuffix(std::string(method->input_type()->file()->name()))
|
||||
+ fullSuffix);
|
||||
}
|
||||
|
||||
if (method->output_type()->file() != service->file()) {
|
||||
- includes.insert(utils::removeFileSuffix(method->output_type()->file()->name())
|
||||
+ includes.insert(utils::removeFileSuffix(std::string(method->output_type()->file()->name()))
|
||||
+ fullSuffix);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (file->message_type_count() > 0) {
|
||||
includes.insert(common::generateRelativeFilePath(file,
|
||||
- utils::extractFileBasename(file->name()))
|
||||
+ utils::extractFileBasename(std::string(file->name())))
|
||||
+ fullSuffix);
|
||||
}
|
||||
return includes;
|
||||
@@ -128,7 +128,7 @@ void QGrpcGenerator::GenerateQmlClientServices(
|
||||
|
||||
const std::string qmlPrefix = "qml";
|
||||
|
||||
- const std::string basename = utils::extractFileBasename(file->name()) +
|
||||
+ const std::string basename = utils::extractFileBasename(std::string(file->name())) +
|
||||
GrpcTemplates::GrpcClientFileSuffix() + CommonTemplates::ProtoFileSuffix();
|
||||
const std::string qmlBasename = qmlPrefix + basename;
|
||||
|
||||
@@ -174,7 +174,7 @@ bool QGrpcGenerator::GenerateClientServices(const FileDescriptor *file,
|
||||
if (file->service_count() <= 0)
|
||||
return true;
|
||||
|
||||
- const std::string basename = utils::extractFileBasename(file->name()) +
|
||||
+ const std::string basename = utils::extractFileBasename(std::string(file->name())) +
|
||||
GrpcTemplates::GrpcClientFileSuffix() + CommonTemplates::ProtoFileSuffix();
|
||||
std::string identifier = utils::toValidIdentifier(basename);
|
||||
const std::string realtivePath = common::generateRelativeFilePath(file, basename);
|
||||
diff --git a/src/tools/qtprotobufgen/enumdeclarationprinter.cpp b/src/tools/qtprotobufgen/enumdeclarationprinter.cpp
|
||||
index a3f5274d..99bbee18 100644
|
||||
--- a/src/tools/qtprotobufgen/enumdeclarationprinter.cpp
|
||||
+++ b/src/tools/qtprotobufgen/enumdeclarationprinter.cpp
|
||||
@@ -44,7 +44,7 @@ void EnumDeclarationPrinter::printEnum()
|
||||
int numValues = m_descriptor->value_count();
|
||||
for (int j = 0; j < numValues; ++j) {
|
||||
const EnumValueDescriptor *valueDescr = m_descriptor->value(j);
|
||||
- m_printer->Print({ { "enumvalue", common::qualifiedCppName(valueDescr->name()) },
|
||||
+ m_printer->Print({ { "enumvalue", common::qualifiedCppName(std::string(valueDescr->name())) },
|
||||
{ "value", std::to_string(valueDescr->number()) } },
|
||||
CommonTemplates::EnumFieldTemplate());
|
||||
}
|
||||
diff --git a/src/tools/qtprotobufgen/messagedeclarationprinter.cpp b/src/tools/qtprotobufgen/messagedeclarationprinter.cpp
|
||||
index 452d023b..fc913477 100644
|
||||
--- a/src/tools/qtprotobufgen/messagedeclarationprinter.cpp
|
||||
+++ b/src/tools/qtprotobufgen/messagedeclarationprinter.cpp
|
||||
@@ -442,7 +442,7 @@ void MessageDeclarationPrinter::printQEnums()
|
||||
Indent();
|
||||
for (int j = 0; j < enumDescr->value_count(); ++j) {
|
||||
const auto *valueDescr = enumDescr->value(j);
|
||||
- m_printer->Print({ { "enumvalue", common::qualifiedCppName(valueDescr->name()) },
|
||||
+ m_printer->Print({ { "enumvalue", common::qualifiedCppName(std::string(valueDescr->name())) },
|
||||
{ "value", std::to_string(valueDescr->number()) } },
|
||||
CommonTemplates::EnumFieldTemplate());
|
||||
}
|
||||
@@ -464,7 +464,7 @@ void MessageDeclarationPrinter::printOneofEnums()
|
||||
for (int j = 0; j < oneofDescr->field_count(); ++j) {
|
||||
const auto *valueDescr = oneofDescr->field(j);
|
||||
m_printer->Print({ { "enumvalue",
|
||||
- utils::capitalizeAsciiName(valueDescr->camelcase_name()) },
|
||||
+ utils::capitalizeAsciiName(std::string(valueDescr->camelcase_name())) },
|
||||
{ "value", std::to_string(valueDescr->number()) } },
|
||||
CommonTemplates::EnumFieldTemplate());
|
||||
}
|
||||
diff --git a/src/tools/qtprotobufgen/messagedefinitionprinter.cpp b/src/tools/qtprotobufgen/messagedefinitionprinter.cpp
|
||||
index 3ac81249..ae9e930f 100644
|
||||
--- a/src/tools/qtprotobufgen/messagedefinitionprinter.cpp
|
||||
+++ b/src/tools/qtprotobufgen/messagedefinitionprinter.cpp
|
||||
@@ -257,7 +257,7 @@ void MessageDefinitionPrinter::printUintData(const char *templateString)
|
||||
{ "field_number", std::to_string(field->number()) },
|
||||
{ "property_index", std::to_string(propertyIndex) },
|
||||
{ "field_flags", common::collectFieldFlags(field) },
|
||||
- { "json_name", field->json_name() },
|
||||
+ { "json_name", std::string(field->json_name()) },
|
||||
};
|
||||
|
||||
// Oneof and optional properties generate additional has<FieldName> property next to the
|
||||
@@ -278,7 +278,7 @@ void MessageDefinitionPrinter::printCharData()
|
||||
m_printer->Print("// char_data\n");
|
||||
|
||||
m_printer->Print("/* metadata char_data: */\n\"");
|
||||
- m_printer->Print(m_descriptor->full_name().c_str());
|
||||
+ m_printer->Print(std::string(m_descriptor->full_name()));
|
||||
m_printer->Print("\\0\" /* = full message name */\n");
|
||||
|
||||
m_printer->Print("/* field char_data: */\n\"");
|
||||
diff --git a/src/tools/qtprotobufgen/qprotobufgenerator.cpp b/src/tools/qtprotobufgen/qprotobufgenerator.cpp
|
||||
index d9d13a34..19f44afc 100644
|
||||
--- a/src/tools/qtprotobufgen/qprotobufgenerator.cpp
|
||||
+++ b/src/tools/qtprotobufgen/qprotobufgenerator.cpp
|
||||
@@ -47,7 +47,7 @@ void QProtobufGenerator::GenerateSources(const FileDescriptor *file,
|
||||
assert(file != nullptr);
|
||||
assert(generatorContext != nullptr);
|
||||
|
||||
- std::string basename = utils::extractFileBasename(file->name());
|
||||
+ std::string basename = utils::extractFileBasename(std::string(file->name()));
|
||||
std::string identifier = utils::toValidIdentifier(basename);
|
||||
std::string relativePath = common::generateRelativeFilePath(file, basename);
|
||||
std::unique_ptr<io::ZeroCopyOutputStream> sourceStream(
|
||||
@@ -114,7 +114,7 @@ void QProtobufGenerator::GenerateHeader(const FileDescriptor *file,
|
||||
assert(file != nullptr);
|
||||
assert(generatorContext != nullptr);
|
||||
|
||||
- const std::string basename = utils::extractFileBasename(file->name()) +
|
||||
+ const std::string basename = utils::extractFileBasename(std::string(file->name())) +
|
||||
CommonTemplates::ProtoFileSuffix();
|
||||
std::string identifier = utils::toValidIdentifier(basename);
|
||||
std::string relativePath = common::generateRelativeFilePath(file, basename);
|
||||
@@ -169,9 +169,9 @@ void QProtobufGenerator::GenerateHeader(const FileDescriptor *file,
|
||||
const auto *field = message->field(i);
|
||||
if (field->type() == FieldDescriptor::TYPE_MESSAGE && !field->is_map()
|
||||
&& !field->is_repeated() && common::isQtType(field)) {
|
||||
- externalIncludes.insert(field->message_type()->file()->package()
|
||||
- + "/" + field->message_type()->name());
|
||||
- qtTypesSet.insert(field->message_type()->file()->package());
|
||||
+ externalIncludes.insert(std::string(field->message_type()->file()->package())
|
||||
+ + "/" + std::string(field->message_type()->name()));
|
||||
+ qtTypesSet.insert(std::string(field->message_type()->file()->package()));
|
||||
}
|
||||
|
||||
if (common::isOptionalField(field))
|
||||
@@ -202,7 +202,7 @@ void QProtobufGenerator::GenerateHeader(const FileDescriptor *file,
|
||||
externalIncludes.insert("QtProtobufWellKnownTypes/qprotobufanysupport.h");
|
||||
continue;
|
||||
}
|
||||
- internalIncludes.insert(utils::removeFileSuffix(file->dependency(i)->name())
|
||||
+ internalIncludes.insert(utils::removeFileSuffix(std::string(file->dependency(i)->name()))
|
||||
+ CommonTemplates::ProtoFileSuffix()
|
||||
+ CommonTemplates::HeaderSuffix());
|
||||
}
|
||||
diff --git a/src/tools/qtprotoccommon/generatorbase.cpp b/src/tools/qtprotoccommon/generatorbase.cpp
|
||||
index 880b5f80..d735b639 100644
|
||||
--- a/src/tools/qtprotoccommon/generatorbase.cpp
|
||||
+++ b/src/tools/qtprotoccommon/generatorbase.cpp
|
||||
@@ -48,7 +48,7 @@ bool GeneratorBase::GenerateAll(const std::vector<const FileDescriptor *> &files
|
||||
std::set<std::string> extraNamespaceFiles;
|
||||
for (const FileDescriptor *file : files) {
|
||||
assert(file != nullptr);
|
||||
- extraNamespaceFiles.insert(file->name());
|
||||
+ extraNamespaceFiles.insert(std::string(file->name()));
|
||||
}
|
||||
common::setExtraNamespacedFiles(extraNamespaceFiles);
|
||||
}
|
||||
@@ -69,7 +69,7 @@ void GeneratorBase::OpenFileNamespaces(
|
||||
const bool hasQtNamespace = (Options::instance().extraNamespace() == "QT_NAMESPACE");
|
||||
|
||||
const std::string scopeNamespaces
|
||||
- = common::getFullNamespace(file->package() + ".noop", "::", true);
|
||||
+ = common::getFullNamespace(std::string(file->package()) + ".noop", "::", true);
|
||||
|
||||
printer->Print("\n");
|
||||
if (hasQtNamespace || file->package() == "QtCore" || file->package() == "QtGui")
|
||||
@@ -88,7 +88,7 @@ void GeneratorBase::CloseFileNamespaces(
|
||||
const bool hasQtNamespace = (Options::instance().extraNamespace() == "QT_NAMESPACE");
|
||||
|
||||
const std::string scopeNamespaces
|
||||
- = common::getFullNamespace(file->package() + ".noop", "::", true);
|
||||
+ = common::getFullNamespace(std::string(file->package()) + ".noop", "::", true);
|
||||
if (!scopeNamespaces.empty()) {
|
||||
printer->Print({ { "scope_namespaces", scopeNamespaces } },
|
||||
CommonTemplates::NamespaceClosingTemplate());
|
||||
diff --git a/src/tools/qtprotoccommon/generatorcommon.cpp b/src/tools/qtprotoccommon/generatorcommon.cpp
|
||||
index f3bc6d98..4b1474aa 100644
|
||||
--- a/src/tools/qtprotoccommon/generatorcommon.cpp
|
||||
+++ b/src/tools/qtprotoccommon/generatorcommon.cpp
|
||||
@@ -98,14 +98,14 @@ std::string common::buildExportMacro(bool addTrailingSpace)
|
||||
std::string common::getNestedNamespace(const Descriptor *type, std::string_view separator)
|
||||
{
|
||||
assert(type != nullptr);
|
||||
- std::string namespaces = type->file()->package();
|
||||
+ std::string namespaces = std::string(type->file()->package());
|
||||
|
||||
std::string nestingNamespaces;
|
||||
const Descriptor *containingType = type->containing_type();
|
||||
while (containingType) {
|
||||
nestingNamespaces.insert(0,
|
||||
std::string(separator)
|
||||
- + utils::capitalizeAsciiName(containingType->name())
|
||||
+ + utils::capitalizeAsciiName(std::string(containingType->name()))
|
||||
+ CommonTemplates::QtProtobufNestedNamespace());
|
||||
containingType = containingType->containing_type();
|
||||
}
|
||||
@@ -151,7 +151,7 @@ TypeMap common::produceQtTypeMap(const Descriptor *type, const Descriptor *scope
|
||||
std::string scopeNamespaces = getScopeNamespace(type, scope);
|
||||
std::string qmlPackage = getFullNamespace(type, ".");
|
||||
|
||||
- std::string name = type->name();
|
||||
+ std::string name = std::string(type->name());
|
||||
std::string fullName = name;
|
||||
std::string scopeName = name;
|
||||
|
||||
@@ -176,7 +176,7 @@ TypeMap common::produceOverriddenTypeMap(const Descriptor *type, const Descripto
|
||||
std::string namespaces = getFullNamespace(type, "::");
|
||||
std::string qmlPackage = getFullNamespace(type, ".");
|
||||
|
||||
- std::string name = type->name();
|
||||
+ std::string name = std::string(type->name());
|
||||
std::string listName;
|
||||
if (type->full_name() == "google.protobuf.Any") {
|
||||
namespaces = "QtProtobuf";
|
||||
@@ -215,7 +215,7 @@ TypeMap common::produceMessageTypeMap(const Descriptor *type, const Descriptor *
|
||||
if (qmlPackage.empty())
|
||||
qmlPackage = "QtProtobuf";
|
||||
|
||||
- std::string name = utils::capitalizeAsciiName(type->name());
|
||||
+ std::string name = utils::capitalizeAsciiName(std::string(type->name()));
|
||||
std::string fullName = namespaces.empty() ? name : (namespaces + "::" + name);
|
||||
std::string scopeName = scopeNamespaces.empty() ? name : (scopeNamespaces + "::" + name);
|
||||
|
||||
@@ -228,7 +228,7 @@ TypeMap common::produceMessageTypeMap(const Descriptor *type, const Descriptor *
|
||||
const std::string initializer = "nullptr";
|
||||
return { { "classname", name },
|
||||
{ "dataclassname", name + CommonTemplates::DataClassName() },
|
||||
- { "classname_low_case", utils::deCapitalizeAsciiName(type->name()) },
|
||||
+ { "classname_low_case", utils::deCapitalizeAsciiName(std::string(type->name())) },
|
||||
{ "type", name },
|
||||
{ "full_type", fullName },
|
||||
{ "scope_type", scopeName },
|
||||
@@ -250,14 +250,14 @@ TypeMap common::produceEnumTypeMap(const EnumDescriptor *type, const Descriptor
|
||||
EnumVisibility visibility = enumVisibility(type, scope);
|
||||
std::string namespaces = getFullNamespace(type, "::");
|
||||
|
||||
- std::string name = utils::capitalizeAsciiName(type->name());
|
||||
+ std::string name = utils::capitalizeAsciiName(std::string(type->name()));
|
||||
// qml package should consist only from proto package
|
||||
std::string qmlPackage = getFullNamespace(type, ".");
|
||||
if (qmlPackage.empty())
|
||||
qmlPackage = "QtProtobuf";
|
||||
|
||||
std::string scopeNamespaces = getScopeNamespace(type, scope);
|
||||
- std::string enumGadget = scope != nullptr ? utils::capitalizeAsciiName(scope->name()) : "";
|
||||
+ std::string enumGadget = scope != nullptr ? utils::capitalizeAsciiName(std::string(scope->name())) : "";
|
||||
if (visibility == GLOBAL_ENUM) {
|
||||
enumGadget = name + CommonTemplates::EnumClassSuffix();
|
||||
namespaces += "::";
|
||||
@@ -277,7 +277,7 @@ TypeMap common::produceEnumTypeMap(const EnumDescriptor *type, const Descriptor
|
||||
std::string propertyType = visibility == LOCAL_ENUM ? name : fullName;
|
||||
std::string exportMacro = common::buildExportMacro();
|
||||
|
||||
- std::string initializer = scopeName + "::" + common::qualifiedCppName(type->value(0)->name());
|
||||
+ std::string initializer = scopeName + "::" + common::qualifiedCppName(std::string(type->value(0)->name()));
|
||||
return { { "classname", name },
|
||||
{ "classname_low_case", utils::deCapitalizeAsciiName(name) },
|
||||
{ "type", name },
|
||||
@@ -340,10 +340,10 @@ TypeMap common::produceSimpleTypeMap(FieldDescriptor::Type type)
|
||||
|
||||
MethodMap common::produceMethodMap(const MethodDescriptor *method, const std::string &scope)
|
||||
{
|
||||
- std::string inputTypeName = method->input_type()->full_name();
|
||||
- std::string outputTypeName = method->output_type()->full_name();
|
||||
- std::string methodName = method->name();
|
||||
- std::string methodNameUpper = method->name();
|
||||
+ std::string inputTypeName = std::string(method->input_type()->full_name());
|
||||
+ std::string outputTypeName = std::string(method->output_type()->full_name());
|
||||
+ std::string methodName = std::string(method->name());
|
||||
+ std::string methodNameUpper = std::string(method->name());
|
||||
methodNameUpper[0] = static_cast<char>(utils::toAsciiUpper(methodNameUpper[0]));
|
||||
inputTypeName = utils::replace(inputTypeName, ".", "::");
|
||||
outputTypeName = utils::replace(outputTypeName, ".", "::");
|
||||
@@ -351,7 +351,7 @@ MethodMap common::produceMethodMap(const MethodDescriptor *method, const std::st
|
||||
std::string senderName = methodNameUpper;
|
||||
senderName += "Sender";
|
||||
|
||||
- std::string serviceName = method->service()->name();
|
||||
+ std::string serviceName = std::string(method->service()->name());
|
||||
|
||||
//Make sure that we don't clash the same stream names from different services
|
||||
std::string senderQmlName = serviceName;
|
||||
@@ -391,7 +391,7 @@ TypeMap common::produceServiceTypeMap(const ServiceDescriptor *service, const De
|
||||
{
|
||||
const std::string name = "Service";
|
||||
const std::string fullName = "Service";
|
||||
- const std::string scopeName = service->name();
|
||||
+ const std::string scopeName = std::string(service->name());
|
||||
static const std::string exportMacro = common::buildExportMacro();
|
||||
|
||||
const std::string namespaces = getFullNamespace(service, "::");
|
||||
@@ -411,14 +411,14 @@ TypeMap common::produceClientTypeMap(const ServiceDescriptor *service, const Des
|
||||
{
|
||||
const std::string name = "Client";
|
||||
const std::string fullName = "Client";
|
||||
- const std::string scopeName = service->name();
|
||||
+ const std::string scopeName = std::string(service->name());
|
||||
static const std::string exportMacro = common::buildExportMacro();
|
||||
|
||||
const std::string namespaces = getFullNamespace(service, "::");
|
||||
const std::string scopeNamespaces = getScopeNamespace(namespaces,
|
||||
getFullNamespace(scope, "::"));
|
||||
|
||||
- const std::string serviceName = service->full_name();
|
||||
+ const std::string serviceName = std::string(service->full_name());
|
||||
return { { "classname", name },
|
||||
{ "classname_low_case", utils::deCapitalizeAsciiName(name) },
|
||||
{ "full_type", fullName },
|
||||
@@ -433,7 +433,7 @@ TypeMap common::produceQmlClientTypeMap(const ServiceDescriptor *service, const
|
||||
{
|
||||
const std::string name = "QmlClient";
|
||||
const std::string fullName = "QmlClient";
|
||||
- const std::string serviceName = service->name();
|
||||
+ const std::string serviceName = std::string(service->name());
|
||||
static const std::string exportMacro = common::buildExportMacro();
|
||||
|
||||
const std::string namespaces = getFullNamespace(service, "::");
|
||||
@@ -530,8 +530,8 @@ PropertyMap common::producePropertyMap(const OneofDescriptor *oneof, const Descr
|
||||
assert(oneof != nullptr);
|
||||
|
||||
PropertyMap propertyMap;
|
||||
- propertyMap["optional_property_name"] = qualifiedCppName(qualifiedQmlName(oneof->name()));
|
||||
- propertyMap["optional_property_name_cap"] = utils::capitalizeAsciiName(oneof->name());
|
||||
+ propertyMap["optional_property_name"] = qualifiedCppName(qualifiedQmlName(std::string(oneof->name())));
|
||||
+ propertyMap["optional_property_name_cap"] = utils::capitalizeAsciiName(std::string(oneof->name()));
|
||||
auto scopeTypeMap = produceMessageTypeMap(scope, nullptr);
|
||||
propertyMap["classname"] = scope != nullptr ? scopeTypeMap["classname"] : "";
|
||||
propertyMap["dataclassname"] = propertyMap["classname"] + CommonTemplates::DataClassName();
|
||||
@@ -557,7 +557,7 @@ PropertyMap common::producePropertyMap(const FieldDescriptor *field, const Descr
|
||||
}
|
||||
|
||||
std::string propertyName = qualifiedCppName(
|
||||
- qualifiedQmlName(utils::deCapitalizeAsciiName(field->camelcase_name())));
|
||||
+ qualifiedQmlName(utils::deCapitalizeAsciiName(std::string(field->camelcase_name()))));
|
||||
std::string propertyNameCap = utils::capitalizeAsciiName(propertyName);
|
||||
|
||||
propertyMap["property_name"] = propertyName;
|
||||
@@ -574,9 +574,9 @@ PropertyMap common::producePropertyMap(const FieldDescriptor *field, const Descr
|
||||
|
||||
if (common::isOneofField(field)) {
|
||||
propertyMap["optional_property_name"] =
|
||||
- qualifiedCppName(qualifiedQmlName(field->containing_oneof()->name()));
|
||||
+ qualifiedCppName(qualifiedQmlName(std::string(field->containing_oneof()->name())));
|
||||
propertyMap["optional_property_name_cap"] =
|
||||
- utils::capitalizeAsciiName(field->containing_oneof()->name());
|
||||
+ utils::capitalizeAsciiName(std::string(field->containing_oneof()->name()));
|
||||
} else if (common::isOptionalField(field)) {
|
||||
propertyMap["optional_property_name"] = propertyName;
|
||||
propertyMap["optional_property_name_cap"] = propertyNameCap;
|
||||
diff --git a/src/tools/qtprotoccommon/generatorcommon.h b/src/tools/qtprotoccommon/generatorcommon.h
|
||||
index b9c73da9..e1310c87 100644
|
||||
--- a/src/tools/qtprotoccommon/generatorcommon.h
|
||||
+++ b/src/tools/qtprotoccommon/generatorcommon.h
|
||||
@@ -59,12 +59,12 @@ struct common {
|
||||
nestingNamespaces.insert(
|
||||
0,
|
||||
std::string(separator)
|
||||
- + utils::capitalizeAsciiName(containingType->name()));
|
||||
+ + utils::capitalizeAsciiName(std::string(containingType->name())));
|
||||
containingType = containingType->containing_type();
|
||||
}
|
||||
}
|
||||
|
||||
- return getFullNamespace(type->file()->package() + nestingNamespaces + '.' + type->name(),
|
||||
+ return getFullNamespace(std::string(type->file()->package()) + nestingNamespaces + '.' + std::string(type->name()),
|
||||
separator,
|
||||
common::isExtraNamespacedFile(std::string(type->file()->name())));
|
||||
}
|
||||
@@ -93,7 +93,7 @@ struct common {
|
||||
bool first = true;
|
||||
while (containingType) {
|
||||
nestingNamespaces.insert(0,
|
||||
- utils::capitalizeAsciiName(containingType->name()) + suffix);
|
||||
+ utils::capitalizeAsciiName(std::string(containingType->name())) + suffix);
|
||||
// Scope is detected as parent, it doesn't make sense to go deeper.
|
||||
if (containingType == scope)
|
||||
break;
|
|
@ -1,14 +0,0 @@
|
|||
# https://github.com/protocolbuffers/protobuf/issues/21021
|
||||
diff --git a/upb/mini_table/extension_registry.c b/upb/mini_table/extension_registry.c
|
||||
index 65ac78732..ff33ec5fc 100644
|
||||
--- a/upb/mini_table/extension_registry.c
|
||||
+++ b/upb/mini_table/extension_registry.c
|
||||
@@ -72,7 +72,7 @@ failure:
|
||||
|
||||
#ifdef UPB_LINKARR_DECLARE
|
||||
|
||||
-UPB_LINKARR_DECLARE(upb_AllExts, upb_MiniTableExtension);
|
||||
+UPB_LINKARR_DECLARE(upb_AllExts, const upb_MiniTableExtension);
|
||||
|
||||
bool upb_ExtensionRegistry_AddAllLinkedExtensions(upb_ExtensionRegistry* r) {
|
||||
const upb_MiniTableExtension* start = UPB_LINKARR_START(upb_AllExts);
|
|
@ -1,12 +0,0 @@
|
|||
Upstream: no
|
||||
Reason: use local source instead of cmake fetching from git
|
||||
|
||||
--- a/cmake/par2-turbo.cmake
|
||||
+++ b/cmake/par2-turbo.cmake
|
||||
@@ -54,5 +54,1 @@ ExternalProject_add(
|
||||
- GIT_REPOSITORY https://github.com/nzbgetcom/par2cmdline-turbo.git
|
||||
- GIT_TAG v1.3.0
|
||||
- TLS_VERIFY TRUE
|
||||
- GIT_SHALLOW TRUE
|
||||
- GIT_PROGRESS TRUE
|
||||
+ URL ${PAR2_TURBO_URL}
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 0e346e5..ed267a9 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -88,7 +88,7 @@ find_package(Threads REQUIRED)
|
||||
MESSAGE(STATUS "Threads library: " ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
set(Boost_NO_BOOST_CMAKE ON)
|
||||
-set(CMAKE_CXX_STANDARD 11)
|
||||
+set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
|
||||
# Compiler specific configuration:
|
|
@ -1,133 +0,0 @@
|
|||
---
|
||||
# Note for Alpine Linux users:
|
||||
# This default configuration uses the program ip46tables.
|
||||
# To install it, simply run:
|
||||
# apk add reaction-tools
|
||||
|
||||
# This example configuration file is a good starting point, but you're
|
||||
# strongly encouraged to take a look at the full documentation: https://reaction.ppom.me
|
||||
#
|
||||
# This file is using the well-established YAML configuration language.
|
||||
# Note that the more powerful JSONnet configuration language is also supported
|
||||
# and that the documentation uses JSONnet
|
||||
|
||||
# definitions are just a place to put chunks of conf you want to reuse in another place
|
||||
# using YAML anchors `&name` and pointers `*name`
|
||||
# definitions are not readed by reaction
|
||||
definitions:
|
||||
- &iptablesban [ 'ip46tables', '-w', '-A', 'reaction', '-s', '<ip>', '-j', 'DROP' ]
|
||||
- &iptablesunban [ 'ip46tables', '-w', '-D', 'reaction', '-s', '<ip>', '-j', 'DROP' ]
|
||||
# ip46tables is a minimal C program (only POSIX dependencies) present as a subdirectory.
|
||||
# it permits to handle both ipv4/iptables and ipv6/ip6tables commands
|
||||
|
||||
# where the state (database) must be read
|
||||
# defaults to . which means reaction's working directory.
|
||||
# The systemd service starts reaction in /var/lib/reaction.
|
||||
state_directory: .
|
||||
|
||||
# if set to a positive number → max number of concurrent actions
|
||||
# if set to a negative number → no limit
|
||||
# if not specified or set to 0 → defaults to the number of CPUs on the system
|
||||
concurrency: 0
|
||||
|
||||
# patterns are substitued in regexes.
|
||||
# when a filter performs an action, it replaces the found pattern
|
||||
patterns:
|
||||
ip:
|
||||
# reaction regex syntax is defined here: https://docs.rs/regex/latest/regex/#syntax
|
||||
# simple version: regex: '(?:(?:[0-9]{1,3}\.){3}[0-9]{1,3})|(?:[0-9a-fA-F:]{2,90})'
|
||||
regex: '(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|(?:(?:[0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?:(?::[0-9a-fA-F]{1,4}){1,6})|:(?:(?::[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(?::[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(?:ffff(?::0{1,4}){0,1}:){0,1}(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9]))'
|
||||
ignore:
|
||||
- 127.0.0.1
|
||||
- ::1
|
||||
# Patterns can be ignored based on regexes, it will try to match the whole string detected by the pattern
|
||||
# ignoreregex:
|
||||
# - '10\.0\.[0-9]{1,3}\.[0-9]{1,3}'
|
||||
|
||||
# Those commands will be executed in order at start, before everything else
|
||||
start:
|
||||
- [ 'ip46tables', '-w', '-N', 'reaction' ]
|
||||
- [ 'ip46tables', '-w', '-I', 'INPUT', '-p', 'all', '-j', 'reaction' ]
|
||||
- [ 'ip46tables', '-w', '-I', 'FORWARD', '-p', 'all', '-j', 'reaction' ]
|
||||
|
||||
# Those commands will be executed in order at stop, after everything else
|
||||
stop:
|
||||
- [ 'ip46tables', '-w', '-D', 'INPUT', '-p', 'all', '-j', 'reaction' ]
|
||||
- [ 'ip46tables', '-w', '-D', 'FORWARD', '-p', 'all', '-j', 'reaction' ]
|
||||
- [ 'ip46tables', '-w', '-F', 'reaction' ]
|
||||
- [ 'ip46tables', '-w', '-X', 'reaction' ]
|
||||
|
||||
# streams are commands
|
||||
# they are run and their ouptut is captured
|
||||
# *example:* `tail -f /var/log/nginx/access.log`
|
||||
# their output will be used by one or more filters
|
||||
streams:
|
||||
# streams have a user-defined name
|
||||
ssh:
|
||||
# note that if the command is not in environment's `PATH`
|
||||
# its full path must be given.
|
||||
cmd: [ 'journalctl', '-n0', '-fu', 'sshd.service' ]
|
||||
# filters run actions when they match regexes on a stream
|
||||
filters:
|
||||
# filters have a user-defined name
|
||||
failedlogin:
|
||||
# reaction's regex syntax is defined here: https://docs.rs/regex/latest/regex/#syntax
|
||||
regex:
|
||||
# <ip> is predefined in the patterns section
|
||||
# ip's regex is inserted in the following regex
|
||||
- 'authentication failure;.*rhost=<ip>'
|
||||
- 'Failed password for .* from <ip>'
|
||||
- 'Invalid user .* from <ip>'
|
||||
- 'Connection (reset|closed) by (authenticating|invalid) user .* <ip>'
|
||||
- 'banner exchange: Connection from <ip> port [0-9]*: invalid format'
|
||||
# if retry and retryperiod are defined,
|
||||
# the actions will only take place if a same pattern is
|
||||
# found `retry` times in a `retryperiod` interval
|
||||
retry: 3
|
||||
# format is defined as follows: <integer> <unit>
|
||||
# - whitespace between the integer and unit is optional
|
||||
# - integer must be positive (>= 0)
|
||||
# - unit can be one of:
|
||||
# - ms / millis / millisecond / milliseconds
|
||||
# - s / sec / secs / second / seconds
|
||||
# - m / min / mins / minute / minutes
|
||||
# - h / hour / hours
|
||||
# - d / day / days
|
||||
retryperiod: 6h
|
||||
# actions are run by the filter when regexes are matched
|
||||
actions:
|
||||
# actions have a user-defined name
|
||||
ban:
|
||||
# YAML substitutes *reference by the value anchored at &reference
|
||||
cmd: *iptablesban
|
||||
unban:
|
||||
cmd: *iptablesunban
|
||||
# if after is defined, the action will not take place immediately, but after a specified duration
|
||||
# same format as retryperiod
|
||||
after: '2 days'
|
||||
# let's say reaction is quitting. does it run all those pending commands which had an `after` duration set?
|
||||
# if you want reaction to run those pending commands before exiting, you can set this:
|
||||
# onexit: true
|
||||
# (defaults to false)
|
||||
# here it is not useful because we will flush and delete the chain containing the bans anyway
|
||||
# (with the stop commands)
|
||||
mail:
|
||||
cmd: ['sendmail', '...', '<ip>']
|
||||
# some commands, such as alerting commands, are "oneshot".
|
||||
# this means they'll be run only once, and won't be executed again when reaction is restarted
|
||||
oneshot: true
|
||||
|
||||
# persistence
|
||||
# tldr; when an `after` action is set in a filter, such filter acts as a 'jail',
|
||||
# which is persisted after reboots.
|
||||
#
|
||||
# when a filter is triggered, there are 2 flows:
|
||||
#
|
||||
# if none of its actions have an `after` directive set:
|
||||
# no action will be replayed.
|
||||
#
|
||||
# else (if at least one action has an `after` directive set):
|
||||
# if reaction stops while `after` actions are pending:
|
||||
# and reaction starts again while those actions would still be pending:
|
||||
# reaction executes the past actions (actions without after or with then+after < now)
|
||||
# and plans the execution of future actions (actions with then+after > now)
|
Loading…
Add table
Add a link
Reference in a new issue