Move fromhexstr() to str_util

This commit is contained in:
Vitaliy Filippov
2026-02-20 21:18:29 +03:00
parent 467d51a48c
commit 4c53fcdf39
6 changed files with 25 additions and 23 deletions
-1
View File
@@ -175,7 +175,6 @@ struct disk_tool_t
void disk_tool_simple_offsets(json11::Json cfg, bool json_output);
uint64_t sscanf_json(const char *fmt, const json11::Json & str);
void fromhexstr(const std::string & from, int bytes, uint8_t *to);
int disable_cache(const std::string & dev);
uint64_t get_atomic_write_size(const std::string & dev);
uint64_t get_device_size(const std::string & dev, bool should_exist = false);
+1
View File
@@ -4,6 +4,7 @@
#include <unistd.h>
#include "disk_tool.h"
#include "str_util.h"
#include "malloc_or_die.h"
int disk_tool_t::dump_journal()
+1
View File
@@ -5,6 +5,7 @@
#include "rw_blocking.h"
#include "osd_id.h"
#include "json_util.h"
#include "str_util.h"
#include "malloc_or_die.h"
int disk_tool_t::process_meta(std::function<void(blockstore_meta_header_v3_t *)> hdr_fn,
-22
View File
@@ -22,28 +22,6 @@ uint64_t sscanf_json(const char *fmt, const json11::Json & str)
return value;
}
static int fromhex(char c)
{
if (c >= '0' && c <= '9')
return (c-'0');
else if (c >= 'a' && c <= 'f')
return (c-'a'+10);
else if (c >= 'A' && c <= 'F')
return (c-'A'+10);
return -1;
}
void fromhexstr(const std::string & from, int bytes, uint8_t *to)
{
for (int i = 0; i < from.size() && i < bytes; i++)
{
int x = fromhex(from[2*i]), y = fromhex(from[2*i+1]);
if (x < 0 || y < 0)
break;
to[i] = x*16 + y;
}
}
// returns 1 = check error, 0 = write through, -1 = write back
// (similar to 1 = warning, -1 = error, 0 = success in disable_cache)
static int check_queue_cache(std::string dev, std::string parent_dev)
+21
View File
@@ -534,3 +534,24 @@ std::string urldecode(const std::string & orig)
}
return res;
}
void fromhexstr(const std::string & from, size_t bytes, uint8_t *to)
{
for (size_t i = 0; i < from.size() && i < bytes; i++)
{
uint8_t x = hextochar(from[2*i]), y = hextochar(from[2*i+1]);
if (x < 0 || y < 0)
break;
to[i] = x*16 + y;
}
}
std::vector<uint8_t> hexdecode(const std::string & str)
{
std::vector<uint8_t> res;
if (str.empty())
return res;
res.resize(str.size()/2);
fromhexstr(str, str.size()/2, res.data());
return res;
}
+2
View File
@@ -35,5 +35,7 @@ std::string realpath_str(std::string path, bool nofail = true);
std::string format_datetime(uint64_t unixtime);
bool is_zero(void *buf, size_t size);
std::string urldecode(const std::string & orig);
void fromhexstr(const std::string & from, size_t bytes, uint8_t *to);
std::vector<uint8_t> hexdecode(const std::string & str);
#pragma GCC visibility pop