From 004d8b751f469495a710fe925b3cb1607aad15d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20=C3=96hrstr=C3=B6m?= Date: Mon, 12 Feb 2024 01:16:34 +0100 Subject: [PATCH] Do not try to load the builtin driver if --driver= has been used already. --- Makefile | 3 ++- src/drivers.cc | 6 ++++++ src/meters.h | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f448b94..c98b11d 100644 --- a/Makefile +++ b/Makefile @@ -456,7 +456,8 @@ collect_copyrights: 3rdparty/xmq/build/default/release/xmq: $(wildcard 3rdparty/xmq/src/main/c/* 3rdparty/xmq/src/main/c/parts/*) @mkdir -p 3rdparty @(cd 3rdparty; git clone --depth 1 https://github.com/libxmq/xmq.git; cd xmq; ./configure) - @if [ "$$(cat 3rdparty/xmq/build/default/spec.mk | grep CC)" = "CC:=gcc" ]; then (cd 3rdparty/xmq; make) ; else rm -f $@ ; mkdir -p $$(dirname $@); touch $@ ; echo "Could not build xmq." ; fi + @cat cat 3rdparty/xmq/build/default/spec.mk + @if [ "$$(cat 3rdparty/xmq/build/default/spec.mk | grep CC)" = "CC:=gcc" ]; then (cd 3rdparty/xmq; make VERBOSE=) ; else rm -f $@ ; mkdir -p $$(dirname $@); touch $@ ; echo "Could not build xmq." ; fi build/xmq: 3rdparty/xmq/build/default/release/xmq @cp $< $@ diff --git a/src/drivers.cc b/src/drivers.cc index 7189ccd..aedfe06 100644 --- a/src/drivers.cc +++ b/src/drivers.cc @@ -70,6 +70,12 @@ bool loadBuiltinDriver(string driver_name) // Check that there is such a builtin driver. if (builtins_name_lookup_.count(driver_name) == 0) return false; + if (lookupDriver(driver_name)) + { + // A driver has already been loaded! Skip loading the builtin driver. + return true; + } + BuiltinDriver *driver = builtins_name_lookup_[driver_name]; if (driver->loaded) return true; diff --git a/src/meters.h b/src/meters.h index 056630a..9f1ee9e 100644 --- a/src/meters.h +++ b/src/meters.h @@ -231,6 +231,7 @@ public: bool registerDriver(function setup); // Lookup (and load if necessary) driver from memory or disk. +DriverInfo *lookupDriver(string name); bool lookupDriverInfo(const string& driver, DriverInfo *di = NULL); // Return the best driver match for a telegram. DriverInfo pickMeterDriver(Telegram *t);