commit
e483856a61
@ -0,0 +1,41 @@
|
|||||||
|
// ********************************************************* -*- C++ -*-
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2004-2018 Exiv2 authors
|
||||||
|
*
|
||||||
|
* This program is part of the Exiv2 distribution.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
@file helper_functions.cpp
|
||||||
|
@brief A collection of helper functions
|
||||||
|
@author Dan Čermák (D4N)
|
||||||
|
<a href="mailto:dan.cermak@cgc-instruments.com">dan.cermak@cgc-instruments.com</a>
|
||||||
|
@date 25-May-18, D4N: created
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "helper_functions.hpp"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
|
||||||
|
std::string string_from_unterminated(const char* data, size_t data_length)
|
||||||
|
{
|
||||||
|
const char* termination = std::find(data, data + data_length, 0);
|
||||||
|
// if find returned the end iterator => no \0 found
|
||||||
|
const size_t string_length = termination == data + data_length ? data_length : termination - data;
|
||||||
|
|
||||||
|
return std::string(data, string_length);
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
// ********************************************************* -*- C++ -*-
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2004-2018 Exiv2 authors
|
||||||
|
*
|
||||||
|
* This program is part of the Exiv2 distribution.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
@file helper_functions.hpp
|
||||||
|
@brief A collection of helper functions
|
||||||
|
@author Dan Čermák (D4N)
|
||||||
|
<a href="mailto:dan.cermak@cgc-instruments.com">dan.cermak@cgc-instruments.com</a>
|
||||||
|
@date 25-May-18, D4N: created
|
||||||
|
*/
|
||||||
|
#ifndef HELPER_FUNCTIONS_HPP
|
||||||
|
#define HELPER_FUNCTIONS_HPP
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
/*!
|
||||||
|
@brief Convert a (potentially not null terminated) array into a
|
||||||
|
std::string.
|
||||||
|
|
||||||
|
Convert a C style string that may or may not be null terminated safely
|
||||||
|
into a std::string. The string's termination is either set at the first \0
|
||||||
|
or after data_length characters.
|
||||||
|
*/
|
||||||
|
std::string string_from_unterminated(const char* data, size_t data_length);
|
||||||
|
|
||||||
|
#endif // HELPER_FUNCTIONS_HPP
|
@ -0,0 +1,21 @@
|
|||||||
|
#include "helper_functions.hpp"
|
||||||
|
|
||||||
|
#include "gtestwrapper.h"
|
||||||
|
|
||||||
|
TEST(string_from_unterminated, terminatedArray)
|
||||||
|
{
|
||||||
|
const char data[5] = {'a', 'b', 'c', 0, 'd'};
|
||||||
|
const std::string res = string_from_unterminated(data, 5);
|
||||||
|
|
||||||
|
ASSERT_EQ(res.size(), 3);
|
||||||
|
ASSERT_STREQ(res.c_str(), "abc");
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(string_from_unterminated, unterminatedArray)
|
||||||
|
{
|
||||||
|
const char data[4] = {'a', 'b', 'c', 'd'};
|
||||||
|
const std::string res = string_from_unterminated(data, 4);
|
||||||
|
|
||||||
|
ASSERT_EQ(res.size(), 4);
|
||||||
|
ASSERT_STREQ(res.c_str(), "abcd");
|
||||||
|
}
|
Loading…
Reference in New Issue