mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-07 20:33:23 +00:00
core: use std::string instead of strndup()
Allows us to remove the strndup.h header. This code will be even more simple, once core is fully converted away from C-strings. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
177a1a6706
commit
e7a6de3894
6 changed files with 11 additions and 42 deletions
|
@ -245,7 +245,6 @@ HEADERS += \
|
||||||
core/sample.h \
|
core/sample.h \
|
||||||
core/selection.h \
|
core/selection.h \
|
||||||
core/sha1.h \
|
core/sha1.h \
|
||||||
core/strndup.h \
|
|
||||||
core/string-format.h \
|
core/string-format.h \
|
||||||
core/subsurfacestartup.h \
|
core/subsurfacestartup.h \
|
||||||
core/subsurfacesysinfo.h \
|
core/subsurfacesysinfo.h \
|
||||||
|
|
|
@ -167,7 +167,6 @@ set(SUBSURFACE_CORE_LIB_SRCS
|
||||||
ssrf.h
|
ssrf.h
|
||||||
statistics.c
|
statistics.c
|
||||||
statistics.h
|
statistics.h
|
||||||
strndup.h
|
|
||||||
string-format.h
|
string-format.h
|
||||||
string-format.cpp
|
string-format.cpp
|
||||||
strtod.c
|
strtod.c
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
#include "subsurface-string.h"
|
#include "subsurface-string.h"
|
||||||
#include "format.h"
|
#include "format.h"
|
||||||
#include "membuffer.h"
|
#include "membuffer.h"
|
||||||
#include "strndup.h"
|
|
||||||
#include "qthelper.h"
|
#include "qthelper.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "errorhelper.h"
|
#include "errorhelper.h"
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
#include "dive.h"
|
#include "dive.h"
|
||||||
#include "divelog.h"
|
#include "divelog.h"
|
||||||
#include "errorhelper.h"
|
#include "errorhelper.h"
|
||||||
|
#include "subsurface-string.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "sample.h"
|
#include "sample.h"
|
||||||
#include "strndup.h"
|
|
||||||
|
|
||||||
// Convert bytes into an INT
|
// Convert bytes into an INT
|
||||||
#define array_uint16_le(p) ((unsigned int) (p)[0] \
|
#define array_uint16_le(p) ((unsigned int) (p)[0] \
|
||||||
|
@ -175,28 +175,23 @@ static void parse_dives(int log_version, const unsigned char *buf, unsigned int
|
||||||
|
|
||||||
// Dive location, assemble Location and Place
|
// Dive location, assemble Location and Place
|
||||||
unsigned int len, place_len;
|
unsigned int len, place_len;
|
||||||
char *location;
|
std::string location;
|
||||||
len = array_uint32_le(buf + ptr);
|
len = array_uint32_le(buf + ptr);
|
||||||
ptr += 4;
|
ptr += 4;
|
||||||
place_len = array_uint32_le(buf + ptr + len);
|
place_len = array_uint32_le(buf + ptr + len);
|
||||||
|
|
||||||
if (len && place_len) {
|
if (len && place_len) {
|
||||||
location = (char *)malloc(len + place_len + 4);
|
location = std::string((char *)buf + ptr, len) + ", " +
|
||||||
memset(location, 0, len + place_len + 4);
|
std::string((char *)buf + ptr + len + 4, place_len);
|
||||||
memcpy(location, buf + ptr, len);
|
|
||||||
memcpy(location + len, ", ", 2);
|
|
||||||
memcpy(location + len + 2, buf + ptr + len + 4, place_len);
|
|
||||||
} else if (len) {
|
} else if (len) {
|
||||||
location = strndup((char *)buf + ptr, len);
|
location = std::string((char *)buf + ptr, len);
|
||||||
} else if (place_len) {
|
} else if (place_len) {
|
||||||
location = strndup((char *)buf + ptr + len + 4, place_len);
|
location = std::string((char *)buf + ptr + len + 4, place_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Store the location only if we have one */
|
/* Store the location only if we have one */
|
||||||
if (len || place_len) {
|
if (!location.empty())
|
||||||
add_dive_to_dive_site(dive, find_or_create_dive_site_with_name(location, sites));
|
add_dive_to_dive_site(dive, find_or_create_dive_site_with_name(location.c_str(), sites));
|
||||||
free(location);
|
|
||||||
}
|
|
||||||
|
|
||||||
ptr += len + 4 + place_len;
|
ptr += len + 4 + place_len;
|
||||||
|
|
||||||
|
@ -205,9 +200,9 @@ static void parse_dives(int log_version, const unsigned char *buf, unsigned int
|
||||||
ptr += 4;
|
ptr += 4;
|
||||||
|
|
||||||
// Blank notes are better than the default text
|
// Blank notes are better than the default text
|
||||||
if (len && strncmp((char *)buf + ptr, "Comment ...", 11)) {
|
std::string notes((char *)buf + ptr, len);
|
||||||
dive->notes = strndup((char *)buf + ptr, len);
|
if (!starts_with(notes, "Comment ..."))
|
||||||
}
|
dive->notes = strdup(notes.c_str());
|
||||||
ptr += len;
|
ptr += len;
|
||||||
|
|
||||||
dive->id = array_uint32_le(buf + ptr);
|
dive->id = array_uint32_le(buf + ptr);
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "membuffer.h"
|
#include "membuffer.h"
|
||||||
#include "picture.h"
|
#include "picture.h"
|
||||||
#include "strndup.h"
|
|
||||||
#include "git-access.h"
|
#include "git-access.h"
|
||||||
#include "qthelper.h"
|
#include "qthelper.h"
|
||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0
|
|
||||||
#ifndef STRNDUP_H
|
|
||||||
#define STRNDUP_H
|
|
||||||
#if __WIN32__
|
|
||||||
static char *strndup (const char *s, size_t n)
|
|
||||||
{
|
|
||||||
char *cpy;
|
|
||||||
size_t len = strlen(s);
|
|
||||||
if (n < len)
|
|
||||||
len = n;
|
|
||||||
if ((cpy = (char *)malloc(len + 1)) !=
|
|
||||||
NULL) {
|
|
||||||
cpy[len] =
|
|
||||||
'\0';
|
|
||||||
memcpy(cpy,
|
|
||||||
s,
|
|
||||||
len);
|
|
||||||
}
|
|
||||||
return cpy;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* STRNDUP_H */
|
|
Loading…
Add table
Reference in a new issue