mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
core: make fp_get_data return an std::string
No need for manual memory management. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
8d96b7557d
commit
898ecd2df5
4 changed files with 17 additions and 12 deletions
|
@ -286,12 +286,20 @@ extern "C" uint32_t fp_get_diveid(struct fingerprint_table *table, unsigned int
|
||||||
return table->fingerprints[i].fdiveid;
|
return table->fingerprints[i].fdiveid;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" char *fp_get_data(struct fingerprint_table *table, unsigned int i)
|
static char to_hex_digit(unsigned char d)
|
||||||
|
{
|
||||||
|
return d <= 9 ? d + '0' : d - 10 + 'a';
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string fp_get_data(struct fingerprint_table *table, unsigned int i)
|
||||||
{
|
{
|
||||||
if (!table || i >= table->fingerprints.size())
|
if (!table || i >= table->fingerprints.size())
|
||||||
return 0;
|
return std::string();
|
||||||
struct fingerprint_record *fpr = &table->fingerprints[i];
|
struct fingerprint_record *fpr = &table->fingerprints[i];
|
||||||
// fromRawData() avoids one copy of the raw_data
|
std::string res(' ', fpr->fsize * 2);
|
||||||
QByteArray hex = QByteArray::fromRawData((char *)fpr->raw_data, fpr->fsize).toHex();
|
for (unsigned int i = 0; i < fpr->fsize; ++i) {
|
||||||
return strdup(hex.constData());
|
res[2 * i] = to_hex_digit((fpr->raw_data[i] >> 4) & 0xf);
|
||||||
|
res[2 * i + 1] = to_hex_digit(fpr->raw_data[i] & 0xf);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,6 @@ extern uint32_t fp_get_model(struct fingerprint_table *table, unsigned int i);
|
||||||
extern uint32_t fp_get_serial(struct fingerprint_table *table, unsigned int i);
|
extern uint32_t fp_get_serial(struct fingerprint_table *table, unsigned int i);
|
||||||
extern uint32_t fp_get_deviceid(struct fingerprint_table *table, unsigned int i);
|
extern uint32_t fp_get_deviceid(struct fingerprint_table *table, unsigned int i);
|
||||||
extern uint32_t fp_get_diveid(struct fingerprint_table *table, unsigned int i);
|
extern uint32_t fp_get_diveid(struct fingerprint_table *table, unsigned int i);
|
||||||
extern char *fp_get_data(struct fingerprint_table *table, unsigned int i);
|
|
||||||
|
|
||||||
extern int is_default_dive_computer_device(const char *);
|
extern int is_default_dive_computer_device(const char *);
|
||||||
|
|
||||||
|
@ -100,6 +99,8 @@ struct fingerprint_table {
|
||||||
std::vector<fingerprint_record> fingerprints;
|
std::vector<fingerprint_record> fingerprints;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::string fp_get_data(struct fingerprint_table *table, unsigned int i);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // DEVICE_H
|
#endif // DEVICE_H
|
||||||
|
|
|
@ -881,14 +881,12 @@ static void save_one_device(struct membuffer *b, const struct device *d)
|
||||||
|
|
||||||
static void save_one_fingerprint(struct membuffer *b, int i)
|
static void save_one_fingerprint(struct membuffer *b, int i)
|
||||||
{
|
{
|
||||||
char *fp_data = fp_get_data(&fingerprint_table, i);
|
|
||||||
put_format(b, "fingerprint model=%08x serial=%08x deviceid=%08x diveid=%08x data=\"%s\"\n",
|
put_format(b, "fingerprint model=%08x serial=%08x deviceid=%08x diveid=%08x data=\"%s\"\n",
|
||||||
fp_get_model(&fingerprint_table, i),
|
fp_get_model(&fingerprint_table, i),
|
||||||
fp_get_serial(&fingerprint_table, i),
|
fp_get_serial(&fingerprint_table, i),
|
||||||
fp_get_deviceid(&fingerprint_table, i),
|
fp_get_deviceid(&fingerprint_table, i),
|
||||||
fp_get_diveid(&fingerprint_table, i),
|
fp_get_diveid(&fingerprint_table, i),
|
||||||
fp_data);
|
fp_get_data(&fingerprint_table, i).c_str());
|
||||||
free(fp_data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void save_settings(git_repository *repo, struct dir *tree)
|
static void save_settings(git_repository *repo, struct dir *tree)
|
||||||
|
|
|
@ -620,14 +620,12 @@ static void save_one_device(struct membuffer *b, const struct device *d)
|
||||||
|
|
||||||
static void save_one_fingerprint(struct membuffer *b, int i)
|
static void save_one_fingerprint(struct membuffer *b, int i)
|
||||||
{
|
{
|
||||||
char *data = fp_get_data(&fingerprint_table, i);
|
|
||||||
put_format(b, "<fingerprint model='%08x' serial='%08x' deviceid='%08x' diveid='%08x' data='%s'/>\n",
|
put_format(b, "<fingerprint model='%08x' serial='%08x' deviceid='%08x' diveid='%08x' data='%s'/>\n",
|
||||||
fp_get_model(&fingerprint_table, i),
|
fp_get_model(&fingerprint_table, i),
|
||||||
fp_get_serial(&fingerprint_table, i),
|
fp_get_serial(&fingerprint_table, i),
|
||||||
fp_get_deviceid(&fingerprint_table, i),
|
fp_get_deviceid(&fingerprint_table, i),
|
||||||
fp_get_diveid(&fingerprint_table, i),
|
fp_get_diveid(&fingerprint_table, i),
|
||||||
data);
|
fp_get_data(&fingerprint_table, i).c_str());
|
||||||
free(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int save_dives(const char *filename)
|
extern "C" int save_dives(const char *filename)
|
||||||
|
|
Loading…
Add table
Reference in a new issue