]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
rec: Switch to `pdns::UniqueFilePtr`
authorRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 18 Mar 2024 09:21:26 +0000 (10:21 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 18 Mar 2024 09:21:26 +0000 (10:21 +0100)
15 files changed:
pdns/recursordist/aggressive_nsec.cc
pdns/recursordist/aggressive_nsec.hh
pdns/recursordist/negcache.cc
pdns/recursordist/pdns_recursor.cc
pdns/recursordist/rec_channel_rec.cc
pdns/recursordist/recpacketcache.cc
pdns/recursordist/recursor_cache.cc
pdns/recursordist/reczones.cc
pdns/recursordist/rpzloader.cc
pdns/recursordist/settings/cxxsupport.cc
pdns/recursordist/syncres.cc
pdns/recursordist/test-aggressive_nsec_cc.cc
pdns/recursordist/test-negcache_cc.cc
pdns/recursordist/test-rpzloader_cc.cc
pdns/recursordist/test-settings.cc

index 9cd729a0b807673773249247ff20fdd81775902d..76d39ee021aa5418a3bfaa55293bac356edf7a77 100644 (file)
@@ -914,7 +914,7 @@ bool AggressiveNSECCache::getDenial(time_t now, const DNSName& name, const QType
   return true;
 }
 
-size_t AggressiveNSECCache::dumpToFile(std::unique_ptr<FILE, int (*)(FILE*)>& fp, const struct timeval& now)
+size_t AggressiveNSECCache::dumpToFile(pdns::UniqueFilePtr& fp, const struct timeval& now)
 {
   size_t ret = 0;
 
index 6c7dfbb709023383208f1e092f0115505ff3f99d..75665df1f79d7669ffa4fe6deab579ed72426cd5 100644 (file)
@@ -95,7 +95,7 @@ public:
   static bool isSmallCoveringNSEC3(const DNSName& owner, const std::string& nextHash);
 
   void prune(time_t now);
-  size_t dumpToFile(std::unique_ptr<FILE, int (*)(FILE*)>& fp, const struct timeval& now);
+  size_t dumpToFile(pdns::UniqueFilePtr& fp, const struct timeval& now);
 
 private:
   struct ZoneEntry
index 5bea1a06b934290dbead810ee040370fc0bd7af7..cdec13249b401a87b80d229fb264f011baef351c 100644 (file)
@@ -286,7 +286,7 @@ size_t NegCache::doDump(int fd, size_t maxCacheEntries, time_t now)
   if (newfd == -1) {
     return 0;
   }
-  auto fp = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto fp = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!fp) {
     close(newfd);
     return 0;
index 56c9954643640ec42bd918a62fd0dfcd440e0cf9..068ae7a84f5e81124855ddc5f435959268802468 100644 (file)
@@ -867,7 +867,7 @@ static void dumpTrace(const string& trace, const timeval& timev)
     return;
   }
   setNonBlocking(traceFd);
-  auto filep = std::unique_ptr<FILE, decltype(&fclose)>(fdopen(traceFd, "a"), &fclose);
+  auto filep = pdns::UniqueFilePtr(fdopen(traceFd, "a"));
   if (!filep) {
     int err = errno;
     SLOG(g_log << Logger::Error << "Could not write to trace file: " << stringerror(err) << endl,
index 94f7ec453e35430915c1a5020ebbf5e23cee805e..2e407cd0a1e97bc9bd2498ed9b7d675f31f8d0ff 100644 (file)
@@ -326,7 +326,7 @@ static uint64_t dumpAggressiveNSECCache(int fd)
   if (newfd == -1) {
     return 0;
   }
-  auto fp = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto fp = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!fp) {
     return 0;
   }
@@ -480,7 +480,7 @@ static RecursorControlChannel::Answer doDumpRPZ(int s, T begin, T end)
     return {1, "No RPZ zone named " + zoneName + "\n"};
   }
 
-  auto fp = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(fdw, "w"), fclose);
+  auto fp = pdns::UniqueFilePtr(fdopen(fdw, "w"));
   if (!fp) {
     int err = errno;
     return {1, "converting file descriptor: " + stringerror(err) + "\n"};
index c372ee186221887dde67fff030d8e17b277da1e6..9005bb62f41d01c57f389c18b0796ed0d3a3679f 100644 (file)
@@ -264,7 +264,7 @@ uint64_t RecursorPacketCache::doDump(int file)
   if (fdupped == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, decltype(&fclose)>(fdopen(fdupped, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(fdupped, "w"));
   if (!filePtr) {
     close(fdupped);
     return 0;
index fd40434011916e582ac6a125c35c292b922f9717..b888bf2ef14566756bdff083c942a37082261a1f 100644 (file)
@@ -777,7 +777,7 @@ uint64_t MemRecursorCache::doDump(int fileDesc, size_t maxCacheEntries)
   if (newfd == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!filePtr) { // dup probably failed
     close(newfd);
     return 0;
index fa763cd9ad704821ba47889c532a50be000b8d8b..ced34549a8e68b69a7b321efd6b35f3e25ed2009 100644 (file)
@@ -361,7 +361,7 @@ static void processForwardZonesFile(shared_ptr<SyncRes::domainmap_t>& newMap, sh
   else {
     SLOG(g_log << Logger::Warning << "Reading zone forwarding information from '" << filename << "'" << endl,
          log->info(Logr::Notice, "Reading zone forwarding information", "file", Logging::Loggable(filename)));
-    auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fopen(filename.c_str(), "r"), fclose);
+    auto filePtr = pdns::UniqueFilePtr(fopen(filename.c_str(), "r"));
     if (!filePtr) {
       int err = errno;
       throw PDNSException("Error opening forward-zones-file '" + filename + "': " + stringerror(err));
@@ -508,7 +508,7 @@ static void processAllowNotifyForFile(shared_ptr<notifyset_t>& newSet, Logr::log
   else {
     SLOG(g_log << Logger::Warning << "Reading NOTIFY-allowed zones from '" << filename << "'" << endl,
          log->info(Logr::Notice, "Reading NOTIFY-allowed zones from file", "file", Logging::Loggable(filename)));
-    auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fopen(filename.c_str(), "r"), fclose);
+    auto filePtr = pdns::UniqueFilePtr(fopen(filename.c_str(), "r"));
     if (!filePtr) {
       throw PDNSException("Error opening allow-notify-for-file '" + filename + "': " + stringerror());
     }
index fcf04fd18322ef0935ddbff630f84820ad556db6..478631363e8fdcc6262aa156eae3de60cc4aacc5 100644 (file)
@@ -388,7 +388,7 @@ static bool dumpZoneToDisk(Logr::log_t logger, const DNSName& zoneName, const st
     return false;
   }
 
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(fileDesc, "w+"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(fileDesc, "w+"));
   if (!filePtr) {
     int err = errno;
     close(fileDesc);
index 8a9e331ff52e1cad22932575adbdcf21df98e5d6..81e064ab790354f89c4095815ebc0edd0570b363 100644 (file)
@@ -58,7 +58,7 @@
 
 void pdns::settings::rec::oldStyleForwardsFileToBridgeStruct(const std::string& file, ::rust::Vec<ForwardZone>& vec)
 {
-  auto filePtr = std::unique_ptr<FILE, decltype(&fclose)>(fopen(file.c_str(), "r"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fopen(file.c_str(), "r"));
   if (!filePtr) {
     throw PDNSException("Error opening forward-zones-file '" + file + "': " + stringerror());
   }
index f824f89432044d6ee4e177303ecfcbfe30908e80..282944f54453634e25717f32fa52c681fd5e977a 100644 (file)
@@ -1162,7 +1162,7 @@ uint64_t SyncRes::doEDNSDump(int fileDesc)
   if (newfd == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!filePtr) {
     close(newfd);
     return 0;
@@ -1214,7 +1214,7 @@ uint64_t SyncRes::doDumpNSSpeeds(int fileDesc)
   if (newfd == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!filePtr) {
     close(newfd);
     return 0;
@@ -1295,7 +1295,7 @@ uint64_t SyncRes::doDumpThrottleMap(int fileDesc)
   if (newfd == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!filePtr) {
     close(newfd);
     return 0;
@@ -1342,7 +1342,7 @@ uint64_t SyncRes::doDumpFailedServers(int fileDesc)
   if (newfd == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!filePtr) {
     close(newfd);
     return 0;
@@ -1382,7 +1382,7 @@ uint64_t SyncRes::doDumpNonResolvingNS(int fileDesc)
   if (newfd == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!filePtr) {
     close(newfd);
     return 0;
@@ -1422,7 +1422,7 @@ uint64_t SyncRes::doDumpSavedParentNSSets(int fileDesc)
   if (newfd == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!filePtr) {
     close(newfd);
     return 0;
@@ -1467,7 +1467,7 @@ uint64_t SyncRes::doDumpDoTProbeMap(int fileDesc)
   if (newfd == -1) {
     return 0;
   }
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(fdopen(newfd, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(newfd, "w"));
   if (!filePtr) {
     close(newfd);
     return 0;
index 7290c7319424971f21208802ea73e2b47fd2a006..e15993c8a754faf92a8a02d7542bbea55a50e874 100644 (file)
@@ -1265,7 +1265,7 @@ BOOST_AUTO_TEST_CASE(test_aggressive_nsec_dump)
 
   BOOST_CHECK_EQUAL(cache->getEntriesCount(), 3U);
 
-  auto filePtr = std::unique_ptr<FILE, int (*)(FILE*)>(tmpfile(), fclose);
+  auto filePtr = pdns::UniqueFilePtr(tmpfile());
   if (!filePtr) {
     BOOST_FAIL("Temporary file could not be opened");
   }
index f6ce64c4a60b32f3a2eddade9e03552ebf879620..44834b631512b38ca44e7928b09c6654af76d78f 100644 (file)
@@ -525,9 +525,10 @@ BOOST_AUTO_TEST_CASE(test_dumpToFile)
   cache.add(genNegCacheEntry(DNSName("www1.powerdns.com"), DNSName("powerdns.com"), now));
   cache.add(genNegCacheEntry(DNSName("www2.powerdns.com"), DNSName("powerdns.com"), now));
 
-  auto fp = std::unique_ptr<FILE, int (*)(FILE*)>(tmpfile(), fclose);
-  if (!fp)
+  auto fp = pdns::UniqueFilePtr(tmpfile());
+  if (!fp) {
     BOOST_FAIL("Temporary file could not be opened");
+  }
 
   cache.doDump(fileno(fp.get()), 0, now.tv_sec);
 
index ba19c66ba230b0f2f5735041a56b7c0355a20f8a..d1a9bf42f8c223b74e4f76f2bbc0671909606fd3 100644 (file)
@@ -45,7 +45,7 @@ static string makeFile(const string& lines)
   std::array<char, 20> temp{"/tmp/rpzXXXXXXXXXX"};
   int fileDesc = mkstemp(temp.data());
   BOOST_REQUIRE(fileDesc > 0);
-  auto filePtr = std::unique_ptr<FILE, decltype(&fclose)>(fdopen(fileDesc, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(fileDesc, "w"));
   BOOST_REQUIRE(filePtr);
   size_t written = fwrite(lines.data(), 1, lines.length(), filePtr.get());
   BOOST_REQUIRE(written == lines.length());
index f94dbf6c1dc05050e51b94cb7dbb3e1d3fe7ddb2..91cc367853363a178de42ff0270fc2db42dda71a 100644 (file)
@@ -256,7 +256,7 @@ example1.com= 1.2.3.4, 5.6.7.8; 8.9.0.1
   std::string temp("/tmp/test-settingsXXXXXXXXXX");
   int fileDesc = mkstemp(temp.data());
   BOOST_REQUIRE(fileDesc > 0);
-  auto filePtr = std::unique_ptr<FILE, decltype(&fclose)>(fdopen(fileDesc, "w"), fclose);
+  auto filePtr = pdns::UniqueFilePtr(fdopen(fileDesc, "w"));
   BOOST_REQUIRE(filePtr != nullptr);
   size_t written = fwrite(fileContent.data(), 1, fileContent.length(), filePtr.get());
   BOOST_REQUIRE(written == fileContent.length());