temporary make std::print and std::format optional

This commit is contained in:
DH 2025-10-04 14:06:47 +03:00
parent d2b9b7c1f6
commit 5904079a87
26 changed files with 231 additions and 130 deletions

View file

@ -1,7 +1,7 @@
#include "debug.hpp"
#include "print.hpp"
#include <fstream>
#include <list>
#include <print>
#include <thread>
#include <vector>
@ -73,13 +73,13 @@ void rx::waitForDebugger() {
return;
}
std::println(stderr, "waiting for debugger, pid {}", ::getpid());
rx::println(stderr, "waiting for debugger, pid {}", ::getpid());
while (!isDebuggerPresent()) {
std::this_thread::sleep_for(std::chrono::seconds(1));
}
std::println(stderr, "debugger was attached");
rx::println(stderr, "debugger was attached");
std::this_thread::sleep_for(std::chrono::seconds(3));
breakpoint();
}

View file

@ -1,8 +1,8 @@
#include "hexdump.hpp"
#include "FileLock.hpp"
#include "print.hpp"
#include <cstdio>
#include <cstring>
#include <print>
#include <string>
void rx::hexdump(std::span<const std::byte> bytes) {
@ -18,13 +18,13 @@ void rx::hexdump(std::span<const std::byte> bytes) {
}
rx::ScopedFileLock stderrLock(stderr);
std::print(stderr, "{} ", std::string(sizeWidth, ' '));
rx::print(stderr, "{} ", std::string(sizeWidth, ' '));
for (unsigned i = 0; i < 16; ++i) {
std::print(stderr, " {:02x}", i);
rx::print(stderr, " {:02x}", i);
}
std::print(stderr, "\n{} ", std::string(sizeWidth, ' '));
rx::print(stderr, "\n{} ", std::string(sizeWidth, ' '));
for (unsigned i = 0; i < 16; ++i) {
std::print(stderr, " --");
rx::print(stderr, " --");
}
std::byte zeros[16]{};
@ -38,7 +38,7 @@ void rx::hexdump(std::span<const std::byte> bytes) {
if (std::memcmp(bytes.data() + i, zeros, 16) == 0) {
if (!dotsPrinted) {
dotsPrinted = true;
std::print(stderr, "\n...");
rx::print(stderr, "\n...");
}
i += 15;
continue;
@ -46,22 +46,21 @@ void rx::hexdump(std::span<const std::byte> bytes) {
}
if (!dotsPrinted) {
std::print(stderr, " | ");
rx::print(stderr, " | ");
for (std::size_t j = i - 16; j < i; ++j) {
auto c = unsigned(bytes[j]);
std::print(stderr, "{:c}",
(std::isprint(c) && c != '\n') ? c : '.');
rx::print(stderr, "{:c}", (std::isprint(c) && c != '\n') ? c : '.');
}
}
}
std::println(stderr, "");
std::print(stderr, "{:0{}x} ", i, sizeWidth);
rx::println(stderr, "");
rx::print(stderr, "{:0{}x} ", i, sizeWidth);
wasAllZeros = true;
dotsPrinted = false;
}
std::print(stderr, " {:02x}", unsigned(bytes[i]));
rx::print(stderr, " {:02x}", unsigned(bytes[i]));
if (bytes[i] != std::byte{0}) {
wasAllZeros = false;
@ -70,17 +69,17 @@ void rx::hexdump(std::span<const std::byte> bytes) {
if (!bytes.empty()) {
for (std::size_t i = 0; i < (16 - (bytes.size() % 16)) % 16; ++i) {
std::print(stderr, " ");
rx::print(stderr, " ");
}
std::print(stderr, " | ");
rx::print(stderr, " | ");
for (std::size_t j = bytes.size() -
std::min(bytes.size(),
(bytes.size() % 16 ? bytes.size() % 16 : 16));
j < bytes.size(); ++j) {
auto c = unsigned(bytes[j]);
std::print(stderr, "{:c}", (std::isprint(c) && c != '\n') ? c : '.');
rx::print(stderr, "{:c}", (std::isprint(c) && c != '\n') ? c : '.');
}
}
std::println(stderr, "");
rx::println(stderr, "");
}

View file

@ -1,9 +1,9 @@
#include "mem.hpp"
#include "print.hpp"
#ifdef __linux__
#include <cstdio>
#include <print>
#include <sys/mman.h>
#include <unistd.h>
@ -41,7 +41,7 @@ void rx::mem::printStats() {
char *line = nullptr;
std::size_t size = 0;
while (getline(&line, &size, maps) > 0) {
std::print("{}", line);
rx::print("{}", line);
}
free(line);