src: Enabling -Werror in debug mode and some style updates
Several important warnings are still getting suppressed, because of
CryptoPP library
Change-Id: I8fb3d938544ecc38c65529262504dc753124bafd
diff --git a/src/encoding/tlv.hpp b/src/encoding/tlv.hpp
index 9cb1a0f..441bc99 100644
--- a/src/encoding/tlv.hpp
+++ b/src/encoding/tlv.hpp
@@ -195,7 +195,7 @@
if (end - begin < 2)
return false;
- uint16_t value = *reinterpret_cast<const uint16_t*>(&*begin); // kind of dangerous... but should be efficient
+ uint16_t value = *reinterpret_cast<const uint16_t*>(&*begin);
begin += 2;
number = be16toh(value);
}
@@ -204,7 +204,7 @@
if (end - begin < 4)
return false;
- uint32_t value = *reinterpret_cast<const uint32_t*>(&*begin); // kind of dangerous... but should be efficient
+ uint32_t value = *reinterpret_cast<const uint32_t*>(&*begin);
begin += 4;
number = be32toh(value);
}
@@ -227,8 +227,8 @@
readType(InputIterator& begin, const InputIterator& end, uint32_t& type)
{
uint64_t number;
- bool ok = readVarNumber(begin, end, number);
- if (number > std::numeric_limits<uint32_t>::max())
+ bool isOk = readVarNumber(begin, end, number);
+ if (!isOk || number > std::numeric_limits<uint32_t>::max())
{
return false;
}
@@ -255,7 +255,7 @@
if (end - begin < 2)
throw Error("Insufficient data during TLV processing");
- uint16_t value = *reinterpret_cast<const uint16_t*>(&*begin); // kind of dangerous... but should be efficient
+ uint16_t value = *reinterpret_cast<const uint16_t*>(&*begin);
begin += 2;
return be16toh(value);
}
@@ -264,7 +264,7 @@
if (end - begin < 4)
throw Error("Insufficient data during TLV processing");
- uint32_t value = *reinterpret_cast<const uint32_t*>(&*begin); // kind of dangerous... but should be efficient
+ uint32_t value = *reinterpret_cast<const uint32_t*>(&*begin);
begin += 4;
return be32toh(value);
}
@@ -423,7 +423,7 @@
if (end - begin < 2)
throw Error("Insufficient data during TLV processing");
- uint16_t value = *reinterpret_cast<const uint16_t*>(&*begin); // kind of dangerous... but should be efficient
+ uint16_t value = *reinterpret_cast<const uint16_t*>(&*begin);
begin += 2;
return be16toh(value);
}
@@ -432,7 +432,7 @@
if (end - begin < 4)
throw Error("Insufficient data during TLV processing");
- uint32_t value = *reinterpret_cast<const uint32_t*>(&*begin); // kind of dangerous... but should be efficient
+ uint32_t value = *reinterpret_cast<const uint32_t*>(&*begin);
begin += 4;
return be32toh(value);
}
diff --git a/src/interest.cpp b/src/interest.cpp
index 229e0fb..a49ee1f 100644
--- a/src/interest.cpp
+++ b/src/interest.cpp
@@ -27,20 +27,24 @@
bool
Interest::matchesName(const Name &name) const
{
+ if (name.size() < m_name.size())
+ return false;
+
if (!m_name.isPrefixOf(name))
return false;
if (getMinSuffixComponents() >= 0 &&
// Add 1 for the implicit digest.
- !(name.size() + 1 - m_name.size() >= getMinSuffixComponents()))
+ !(name.size() + 1 - m_name.size() >= static_cast<size_t>(getMinSuffixComponents())))
return false;
if (getMaxSuffixComponents() >= 0 &&
// Add 1 for the implicit digest.
- !(name.size() + 1 - m_name.size() <= getMaxSuffixComponents()))
+ !(name.size() + 1 - m_name.size() <= static_cast<size_t>(getMaxSuffixComponents())))
return false;
- if (!getExclude().empty() && name.size() > m_name.size() &&
+ if (!getExclude().empty() &&
+ name.size() > m_name.size() &&
getExclude().isExcluded(name[m_name.size()]))
return false;
diff --git a/src/name-component.cpp b/src/name-component.cpp
deleted file mode 100644
index 78f32c9..0000000
--- a/src/name-component.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/**
- * Copyright (C) 2013 Regents of the University of California.
- * @author: Jeff Thompson <jefft0@remap.ucla.edu>
- * @author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- * @author: Zhenkai Zhu <zhenkai@cs.ucla.edu>
- * See COPYING for copyright and distribution information.
- */
-
-#include "common.hpp"
-
-#include "name-component.hpp"
-
-#include "util/time.hpp"
-#include "util/string-helper.hpp"
-
-namespace ndn {
-namespace name {
-
-Component
-Component::fromEscapedString(const char *escapedString, size_t beginOffset, size_t endOffset)
-{
- std::string trimmedString(escapedString + beginOffset, escapedString + endOffset);
- trim(trimmedString);
- std::string value = unescape(trimmedString);
-
- if (value.find_first_not_of(".") == std::string::npos) {
- // Special case for component of only periods.
- if (value.size() <= 2)
- // Zero, one or two periods is illegal. Ignore this component.
- return Component();
- else
- // Remove 3 periods.
- return Component((const uint8_t *)&value[3], value.size() - 3);
- }
- else
- return Component((const uint8_t *)&value[0], value.size());
-}
-
-void
-Component::toEscapedString(std::ostream& result) const
-{
- const uint8_t *valuePtr = value();
- size_t valueSize = value_size();
-
- bool gotNonDot = false;
- for (unsigned i = 0; i < valueSize; ++i) {
- if (valuePtr[i] != 0x2e) {
- gotNonDot = true;
- break;
- }
- }
- if (!gotNonDot) {
- // Special case for component of zero or more periods. Add 3 periods.
- result << "...";
- for (size_t i = 0; i < valueSize; ++i)
- result << '.';
- }
- else {
- // In case we need to escape, set to upper case hex and save the previous flags.
- std::ios::fmtflags saveFlags = result.flags(std::ios::hex | std::ios::uppercase);
-
- for (size_t i = 0; i < valueSize; ++i) {
- uint8_t x = valuePtr[i];
- // Check for 0-9, A-Z, a-z, (+), (-), (.), (_)
- if ((x >= 0x30 && x <= 0x39) || (x >= 0x41 && x <= 0x5a) ||
- (x >= 0x61 && x <= 0x7a) || x == 0x2b || x == 0x2d ||
- x == 0x2e || x == 0x5f)
- result << x;
- else {
- result << '%';
- if (x < 16)
- result << '0';
- result << (unsigned int)x;
- }
- }
-
- // Restore.
- result.flags(saveFlags);
- }
-}
-
-int
-Component::compare(const Component& other) const
-{
- // Imitate ndn_Exclude_compareComponents.
- if (value_size() < other.value_size())
- return -1;
- if (value_size() > other.value_size())
- return 1;
-
- if (value_size() == 0)
- return 0;
-
- // The components are equal length. Just do a byte compare.
- return std::memcmp(value(), other.value(), value_size());
-}
-
-// const Block &
-// wireEncode() const
-// {
-
-// }
-
-} // namespace name
-} // namespace ndn
diff --git a/src/name-component.hpp b/src/name-component.hpp
index 238c2be..9ea09c5 100644
--- a/src/name-component.hpp
+++ b/src/name-component.hpp
@@ -13,6 +13,7 @@
#include "common.hpp"
#include "encoding/block.hpp"
#include "encoding/encoding-buffer.hpp"
+#include "util/string-helper.hpp"
namespace ndn {
namespace name {
@@ -24,101 +25,77 @@
{
public:
/// @brief Error that can be thrown from the block
- struct Error : public std::runtime_error { Error(const std::string &what) : std::runtime_error(what) {} };
-
+ struct Error : public std::runtime_error {
+ Error(const std::string& what) : std::runtime_error(what) {}
+ };
+
/**
* Create a new Name::Component with a null value.
*/
- Component()
- : Block(Tlv::NameComponent)
- {
- }
+ Component();
/**
* @brief Directly create component from wire block
*
- * ATTENTION wire MUST BE of type Tlv::Component. Any other value would cause an exception
+ * @throws Error if wire.type() is not Tlv::Component
*/
- Component(const Block& wire)
- : Block(wire)
- {
- if (type() != Tlv::NameComponent)
- throw Error("Constructing name component from non name component TLV wire block");
- }
-
+ Component(const Block& wire);
+
/**
* Create a new Name::Component, taking another pointer to the Blob value.
* @param value A blob with a pointer to an immutable array. The pointer is copied.
*/
- Component(const ConstBufferPtr &buffer)
- : Block (Tlv::NameComponent, buffer)
- {
- }
-
+ Component(const ConstBufferPtr& buffer);
+
/**
* Create a new Name::Component, copying the given value.
* @param value The value byte array.
*/
- Component(const Buffer& value)
- : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(value)))
- {
- }
+ Component(const Buffer& value);
/**
* Create a new Name::Component, copying the given value.
* @param value Pointer to the value byte array.
* @param valueLen Length of value.
*/
- Component(const uint8_t *value, size_t valueLen)
- : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(value, valueLen)))
- {
- }
+ Component(const uint8_t *value, size_t valueLen);
template<class InputIterator>
- Component(InputIterator begin, InputIterator end)
- : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(begin, end)))
- {
- }
+ Component(InputIterator begin, InputIterator end);
explicit
- Component(const char *str)
- : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(str, ::strlen(str))))
- {
- }
+ Component(const char *str);
explicit
- Component(const std::string& str)
- : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(str.begin(), str.end())))
- {
- }
-
+ Component(const std::string& str);
+
/**
* @brief Fast encoding or block size estimation
*/
template<bool T>
size_t
- wireEncode(EncodingImpl<T> &block) const;
-
+ wireEncode(EncodingImpl<T>& block) const;
+
/**
* Make a Blob value by decoding the escapedString between beginOffset and endOffset according to the NDN URI Scheme.
- * If the escaped string is "", "." or ".." then return a Blob with a null pointer,
+ * If the escaped string is "", "." or ".." then return a Blob with a null pointer,
* which means the component should be skipped in a URI name.
* @param escapedString The escaped string. It does not need to be null-terminated because we only scan to endOffset.
* @param beginOffset The offset in escapedString of the beginning of the portion to decode.
* @param endOffset The offset in escapedString of the end of the portion to decode.
* @return The Blob value. If the escapedString is not a valid escaped component, then the Blob is a null pointer.
*/
- static Component
+ static Component
fromEscapedString(const char *escapedString, size_t beginOffset, size_t endOffset);
/**
* Make a Blob value by decoding the escapedString according to the NDN URI Scheme.
- * If the escaped string is "", "." or ".." then return a Blob with a null pointer,
+ * If the escaped string is "", "." or ".." then return a Blob with a null pointer,
* which means the component should be skipped in a URI name.
* @param escapedString The null-terminated escaped string.
* @return The Blob value. If the escapedString is not a valid escaped component, then the Blob is a null pointer.
*/
- static Component
+ static Component
fromEscapedString(const char *escapedString)
{
return fromEscapedString(escapedString, 0, ::strlen(escapedString));
@@ -126,12 +103,12 @@
/**
* Make a Blob value by decoding the escapedString according to the NDN URI Scheme.
- * If the escaped string is "", "." or ".." then return a Blob with a null pointer,
+ * If the escaped string is "", "." or ".." then return a Blob with a null pointer,
* which means the component should be skipped in a URI name.
* @param escapedString The escaped string.
* @return The Blob value. If the escapedString is not a valid escaped component, then the Blob is a null pointer.
*/
- static Component
+ static Component
fromEscapedString(const std::string& escapedString)
{
return fromEscapedString(escapedString.c_str());
@@ -143,9 +120,9 @@
* @param value the buffer with the value to escape
* @param result the string stream to write to.
*/
- void
+ void
toEscapedString(std::ostream& result) const;
-
+
/**
* Convert the value by escaping characters according to the NDN URI Scheme.
* This also adds "..." to a value with zero or more ".".
@@ -171,7 +148,7 @@
{
return toEscapedString();
}
-
+
/**
* @brief Interpret this name component as nonNegativeInteger
*
@@ -202,7 +179,7 @@
* @param number The non-negative number
* @return The component value.
*/
- static Component
+ static Component
fromNumber(uint64_t number);
/**
@@ -228,14 +205,14 @@
{
return !hasValue();
}
-
+
/**
* Check if this is the same component as other.
* @param other The other Component to compare with.
* @return true if the components are equal, otherwise false.
*/
bool
- operator == (const Component& other) const { return equals(other); }
+ operator==(const Component& other) const { return equals(other); }
/**
* Check if this is not the same component as other.
@@ -243,8 +220,8 @@
* @return true if the components are not equal, otherwise false.
*/
bool
- operator != (const Component& other) const { return !equals(other); }
-
+ operator!=(const Component& other) const { return !equals(other); }
+
/**
* Compare this to the other Component using NDN canonical ordering.
* @param other The other Component to compare with.
@@ -255,24 +232,6 @@
*/
int
compare(const Component& other) const;
-
- /**
- * Return true if this is less than or equal to the other Component in the NDN canonical ordering.
- * @param other The other Component to compare with.
- *
- * @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
- */
- bool
- operator <= (const Component& other) const { return compare(other) <= 0; }
-
- /**
- * Return true if this is less than the other Component in the NDN canonical ordering.
- * @param other The other Component to compare with.
- *
- * @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
- */
- bool
- operator < (const Component& other) const { return compare(other) < 0; }
/**
* Return true if this is less than or equal to the other Component in the NDN canonical ordering.
@@ -281,7 +240,25 @@
* @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
*/
bool
- operator >= (const Component& other) const { return compare(other) >= 0; }
+ operator<=(const Component& other) const { return compare(other) <= 0; }
+
+ /**
+ * Return true if this is less than the other Component in the NDN canonical ordering.
+ * @param other The other Component to compare with.
+ *
+ * @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
+ */
+ bool
+ operator<(const Component& other) const { return compare(other) < 0; }
+
+ /**
+ * Return true if this is less than or equal to the other Component in the NDN canonical ordering.
+ * @param other The other Component to compare with.
+ *
+ * @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
+ */
+ bool
+ operator>=(const Component& other) const { return compare(other) >= 0; }
/**
* Return true if this is greater than the other Component in the NDN canonical ordering.
@@ -290,21 +267,137 @@
* @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
*/
bool
- operator > (const Component& other) const { return compare(other) > 0; }
+ operator>(const Component& other) const { return compare(other) > 0; }
- //
+ //
// !!! MUST NOT INCLUDE ANY DATA HERE !!!
//
// This class is just a helper and is directly reinterpret_cast'ed from Block
};
-inline std::ostream &
-operator << (std::ostream &os, const Component &component)
+inline std::ostream&
+operator << (std::ostream& os, const Component& component)
{
component.toEscapedString(os);
return os;
}
+inline
+Component::Component()
+ : Block(Tlv::NameComponent)
+{
+}
+
+inline
+Component::Component(const Block& wire)
+ : Block(wire)
+{
+ if (type() != Tlv::NameComponent)
+ throw Error("Constructing name component from non name component TLV wire block");
+}
+
+inline
+Component::Component(const ConstBufferPtr& buffer)
+ : Block (Tlv::NameComponent, buffer)
+{
+}
+
+inline
+Component::Component(const Buffer& value)
+ : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(value)))
+{
+}
+
+inline
+Component::Component(const uint8_t *value, size_t valueLen)
+ : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(value, valueLen)))
+{
+}
+
+template<class InputIterator>
+inline
+Component::Component(InputIterator begin, InputIterator end)
+ : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(begin, end)))
+{
+}
+
+inline
+Component::Component(const char *str)
+ : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(str, ::strlen(str))))
+{
+}
+
+inline
+Component::Component(const std::string& str)
+ : Block (Tlv::NameComponent, ConstBufferPtr(new Buffer(str.begin(), str.end())))
+{
+}
+
+
+inline Component
+Component::fromEscapedString(const char* escapedString, size_t beginOffset, size_t endOffset)
+{
+ std::string trimmedString(escapedString + beginOffset, escapedString + endOffset);
+ trim(trimmedString);
+ std::string value = unescape(trimmedString);
+
+ if (value.find_first_not_of(".") == std::string::npos) {
+ // Special case for component of only periods.
+ if (value.size() <= 2)
+ // Zero, one or two periods is illegal. Ignore this component.
+ return Component();
+ else
+ // Remove 3 periods.
+ return Component((const uint8_t *)&value[3], value.size() - 3);
+ }
+ else
+ return Component((const uint8_t *)&value[0], value.size());
+}
+
+
+inline void
+Component::toEscapedString(std::ostream& result) const
+{
+ const uint8_t *valuePtr = value();
+ size_t valueSize = value_size();
+
+ bool gotNonDot = false;
+ for (unsigned i = 0; i < valueSize; ++i) {
+ if (valuePtr[i] != 0x2e) {
+ gotNonDot = true;
+ break;
+ }
+ }
+ if (!gotNonDot) {
+ // Special case for component of zero or more periods. Add 3 periods.
+ result << "...";
+ for (size_t i = 0; i < valueSize; ++i)
+ result << '.';
+ }
+ else {
+ // In case we need to escape, set to upper case hex and save the previous flags.
+ std::ios::fmtflags saveFlags = result.flags(std::ios::hex | std::ios::uppercase);
+
+ for (size_t i = 0; i < valueSize; ++i) {
+ uint8_t x = valuePtr[i];
+ // Check for 0-9, A-Z, a-z, (+), (-), (.), (_)
+ if ((x >= 0x30 && x <= 0x39) || (x >= 0x41 && x <= 0x5a) ||
+ (x >= 0x61 && x <= 0x7a) || x == 0x2b || x == 0x2d ||
+ x == 0x2e || x == 0x5f)
+ result << x;
+ else {
+ result << '%';
+ if (x < 16)
+ result << '0';
+ result << (unsigned int)x;
+ }
+ }
+
+ // Restore.
+ result.flags(saveFlags);
+ }
+}
+
inline Component
Component::fromNumber(uint64_t number)
@@ -334,6 +427,23 @@
return toNumber();
}
+inline int
+Component::compare(const Component& other) const
+{
+ // Imitate ndn_Exclude_compareComponents.
+ if (value_size() < other.value_size())
+ return -1;
+ if (value_size() > other.value_size())
+ return 1;
+
+ if (value_size() == 0)
+ return 0;
+
+ // The components are equal length. Just do a byte compare.
+ return std::memcmp(value(), other.value(), value_size());
+}
+
+
template<bool T>
inline size_t
Component::wireEncode(EncodingImpl<T>& block) const
diff --git a/src/name.cpp b/src/name.cpp
deleted file mode 100644
index cb8759b..0000000
--- a/src/name.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/**
- * Copyright (C) 2013 Regents of the University of California.
- * @author: Jeff Thompson <jefft0@remap.ucla.edu>
- * @author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- * See COPYING for copyright and distribution information.
- */
-
-#include "common.hpp"
-
-#include "name.hpp"
-
-#include <algorithm>
-#include <cstring>
-
-#include "util/time.hpp"
-#include "util/string-helper.hpp"
-
-namespace ndn {
-
-void
-Name::set(const char *uri_cstr)
-{
- clear();
-
- std::string uri = uri_cstr;
- trim(uri);
- if (uri.size() == 0)
- return;
-
- size_t iColon = uri.find(':');
- if (iColon != std::string::npos) {
- // Make sure the colon came before a '/'.
- size_t iFirstSlash = uri.find('/');
- if (iFirstSlash == std::string::npos || iColon < iFirstSlash) {
- // Omit the leading protocol such as ndn:
- uri.erase(0, iColon + 1);
- trim(uri);
- }
- }
-
- // Trim the leading slash and possibly the authority.
- if (uri[0] == '/') {
- if (uri.size() >= 2 && uri[1] == '/') {
- // Strip the authority following "//".
- size_t iAfterAuthority = uri.find('/', 2);
- if (iAfterAuthority == std::string::npos)
- // Unusual case: there was only an authority.
- return;
- else {
- uri.erase(0, iAfterAuthority + 1);
- trim(uri);
- }
- }
- else {
- uri.erase(0, 1);
- trim(uri);
- }
- }
-
- size_t iComponentStart = 0;
-
- // Unescape the components.
- while (iComponentStart < uri.size()) {
- size_t iComponentEnd = uri.find("/", iComponentStart);
- if (iComponentEnd == std::string::npos)
- iComponentEnd = uri.size();
-
- Component component = Component::fromEscapedString(&uri[0], iComponentStart, iComponentEnd);
- // Ignore illegal components. This also gets rid of a trailing '/'.
- if (!component.empty())
- append(Component(component));
-
- iComponentStart = iComponentEnd + 1;
- }
-}
-
-Name&
-Name::append(const Name& name)
-{
- if (&name == this)
- // Copying from this name, so need to make a copy first.
- return append(Name(name));
-
- for (size_t i = 0; i < name.size(); ++i)
- append(name.at(i));
-
- return *this;
-}
-
-Name
-Name::getSubName(size_t iStartComponent, size_t nComponents) const
-{
- Name result;
-
- size_t iEnd = iStartComponent + nComponents;
- for (size_t i = iStartComponent; i < iEnd && i < size(); ++i)
- result.append(at(i));
-
- return result;
-}
-
-Name
-Name::getSubName(size_t iStartComponent) const
-{
- Name result;
-
- for (size_t i = iStartComponent; i < size(); ++i)
- result.append(at(i));
-
- return result;
-}
-
-bool
-Name::equals(const Name& name) const
-{
- if (size() != name.size())
- return false;
-
- for (size_t i = 0; i < size(); ++i) {
- if (at(i) != name.at(i))
- return false;
- }
-
- return true;
-}
-
-bool
-Name::isPrefixOf(const Name& name) const
-{
- // This name is longer than the name we are checking it against.
- if (size() > name.size())
- return false;
-
- // Check if at least one of given components doesn't match.
- for (size_t i = 0; i < size(); ++i) {
- if (at(i) != name.at(i))
- return false;
- }
-
- return true;
-}
-
-
-int
-Name::compare(const Name& other) const
-{
- for (size_t i = 0; i < size() && i < other.size(); ++i) {
- int comparison = at(i).compare(other.at(i));
- if (comparison == 0)
- // The components at this index are equal, so check the next components.
- continue;
-
- // Otherwise, the result is based on the components at this index.
- return comparison;
- }
-
- // The components up to min(this.size(), other.size()) are equal, so the shorter name is less.
- if (size() < other.size())
- return -1;
- else if (size() > other.size())
- return 1;
- else
- return 0;
-}
-
-std::ostream&
-operator << (std::ostream& os, const Name& name)
-{
- if (name.empty())
- {
- os << "/";
- }
- else
- {
- for (Name::const_iterator i = name.begin(); i != name.end(); i++) {
- os << "/";
- i->toEscapedString(os);
- }
- }
-
- return os;
-}
-
-} // namespace ndn
diff --git a/src/name.hpp b/src/name.hpp
index aea084b..5a8dfcf 100644
--- a/src/name.hpp
+++ b/src/name.hpp
@@ -26,7 +26,11 @@
class Name : public ptr_lib::enable_shared_from_this<Name> {
public:
/// @brief Error that can be thrown from the block
- struct Error : public name::Component::Error { Error(const std::string &what) : name::Component::Error(what) {} };
+ class Error : public name::Component::Error {
+ public:
+ Error(const std::string& what)
+ : name::Component::Error(what) {}
+ };
typedef name::Component Component;
@@ -65,7 +69,7 @@
* @endcode
*/
explicit
- Name(const Block &wire)
+ Name(const Block& wire)
{
m_nameBlock = wire;
m_nameBlock.parse();
@@ -94,13 +98,13 @@
*/
template<bool T>
size_t
- wireEncode(EncodingImpl<T> &block) const;
+ wireEncode(EncodingImpl<T>& block) const;
- const Block &
+ const Block&
wireEncode() const;
void
- wireDecode(const Block &wire);
+ wireDecode(const Block& wire);
/**
* @brief Check if already has wire
@@ -130,7 +134,7 @@
* @return This name so that you can chain calls to append.
*/
Name&
- append(const uint8_t *value, size_t valueLength)
+ append(const uint8_t* value, size_t valueLength)
{
m_nameBlock.push_back(Component(value, valueLength));
return *this;
@@ -148,26 +152,15 @@
return *this;
}
- // /**
- // * Append a new component, copying from value.
- // * @return This name so that you can chain calls to append.
- // */
- // Name&
- // append(const Buffer& value)
- // {
- // m_nameBlock.push_back(value);
- // return *this;
- // }
-
Name&
- append(const ConstBufferPtr &value)
+ append(const ConstBufferPtr& value)
{
m_nameBlock.push_back(value);
return *this;
}
Name&
- append(const Component &value)
+ append(const Component& value)
{
m_nameBlock.push_back(value);
return *this;
@@ -181,14 +174,14 @@
* converted from string, each having different outcomes
*/
Name&
- append(const char *value)
+ append(const char* value)
{
m_nameBlock.push_back(Component(value));
return *this;
}
Name&
- append(const Block &value)
+ append(const Block& value)
{
if (value.type() == Tlv::NameComponent)
m_nameBlock.push_back(value);
@@ -310,12 +303,6 @@
bool
isPrefixOf(const Name& name) const;
- bool
- match(const Name& name) const
- {
- return isPrefixOf(name);
- }
-
//
// vector equivalent interface.
//
@@ -348,7 +335,7 @@
}
const Component&
- operator [] (ssize_t i) const
+ operator[](ssize_t i) const
{
return get(i);
}
@@ -364,7 +351,8 @@
const Component&
at(ssize_t i) const
{
- if ((i >= 0 && i >= size()) || (i < 0 && i < -size()))
+ if ((i >= 0 && static_cast<size_t>(i) >= size()) ||
+ (i < 0 && static_cast<size_t>(-i) > size()))
throw Error("Requested component does not exist (out of bounds)");
return get(i);
@@ -395,7 +383,7 @@
* @param component The component of type T.
*/
template<class T> void
- push_back(const T &component)
+ push_back(const T& component)
{
append(component);
}
@@ -406,7 +394,7 @@
* @return true if the names are equal, otherwise false.
*/
bool
- operator == (const Name &name) const { return equals(name); }
+ operator==(const Name& name) const { return equals(name); }
/**
* Check if this name has the same component count and components as the given name.
@@ -414,7 +402,7 @@
* @return true if the names are not equal, otherwise false.
*/
bool
- operator != (const Name &name) const { return !equals(name); }
+ operator!=(const Name& name) const { return !equals(name); }
/**
* Return true if this is less than or equal to the other Name in the NDN canonical ordering.
@@ -423,7 +411,7 @@
* @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
*/
bool
- operator <= (const Name& other) const { return compare(other) <= 0; }
+ operator<=(const Name& other) const { return compare(other) <= 0; }
/**
* Return true if this is less than the other Name in the NDN canonical ordering.
@@ -432,7 +420,7 @@
* @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
*/
bool
- operator < (const Name& other) const { return compare(other) < 0; }
+ operator<(const Name& other) const { return compare(other) < 0; }
/**
* Return true if this is less than or equal to the other Name in the NDN canonical ordering.
@@ -441,7 +429,7 @@
* @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
*/
bool
- operator >= (const Name& other) const { return compare(other) >= 0; }
+ operator>=(const Name& other) const { return compare(other) >= 0; }
/**
* Return true if this is greater than the other Name in the NDN canonical ordering.
@@ -450,7 +438,7 @@
* @see http://named-data.net/doc/ndn-tlv/name.html#canonical-order
*/
bool
- operator > (const Name& other) const { return compare(other) > 0; }
+ operator>(const Name& other) const { return compare(other) > 0; }
//
// Iterator interface to name components.
@@ -498,14 +486,21 @@
mutable Block m_nameBlock;
};
-std::ostream&
-operator<<(std::ostream& os, const Name& name);
-
-inline Name&
-Name::appendVersion()
+inline std::ostream&
+operator<<(std::ostream& os, const Name& name)
{
- appendNumber(time::toUnixTimestamp(time::system_clock::now()).count());
- return *this;
+ if (name.empty())
+ {
+ os << "/";
+ }
+ else
+ {
+ for (Name::const_iterator i = name.begin(); i != name.end(); i++) {
+ os << "/";
+ i->toEscapedString(os);
+ }
+ }
+ return os;
}
inline std::string
@@ -526,25 +521,181 @@
return is;
}
+
+inline void
+Name::set(const char* uri_cstr)
+{
+ clear();
+
+ std::string uri = uri_cstr;
+ trim(uri);
+ if (uri.size() == 0)
+ return;
+
+ size_t iColon = uri.find(':');
+ if (iColon != std::string::npos) {
+ // Make sure the colon came before a '/'.
+ size_t iFirstSlash = uri.find('/');
+ if (iFirstSlash == std::string::npos || iColon < iFirstSlash) {
+ // Omit the leading protocol such as ndn:
+ uri.erase(0, iColon + 1);
+ trim(uri);
+ }
+ }
+
+ // Trim the leading slash and possibly the authority.
+ if (uri[0] == '/') {
+ if (uri.size() >= 2 && uri[1] == '/') {
+ // Strip the authority following "//".
+ size_t iAfterAuthority = uri.find('/', 2);
+ if (iAfterAuthority == std::string::npos)
+ // Unusual case: there was only an authority.
+ return;
+ else {
+ uri.erase(0, iAfterAuthority + 1);
+ trim(uri);
+ }
+ }
+ else {
+ uri.erase(0, 1);
+ trim(uri);
+ }
+ }
+
+ size_t iComponentStart = 0;
+
+ // Unescape the components.
+ while (iComponentStart < uri.size()) {
+ size_t iComponentEnd = uri.find("/", iComponentStart);
+ if (iComponentEnd == std::string::npos)
+ iComponentEnd = uri.size();
+
+ Component component = Component::fromEscapedString(&uri[0], iComponentStart, iComponentEnd);
+ // Ignore illegal components. This also gets rid of a trailing '/'.
+ if (!component.empty())
+ append(Component(component));
+
+ iComponentStart = iComponentEnd + 1;
+ }
+}
+
+inline Name&
+Name::append(const Name& name)
+{
+ if (&name == this)
+ // Copying from this name, so need to make a copy first.
+ return append(Name(name));
+
+ for (size_t i = 0; i < name.size(); ++i)
+ append(name.at(i));
+
+ return *this;
+}
+
+inline Name&
+Name::appendVersion()
+{
+ appendNumber(time::toUnixTimestamp(time::system_clock::now()).count());
+ return *this;
+}
+
+inline Name
+Name::getSubName(size_t iStartComponent, size_t nComponents) const
+{
+ Name result;
+
+ size_t iEnd = iStartComponent + nComponents;
+ for (size_t i = iStartComponent; i < iEnd && i < size(); ++i)
+ result.append(at(i));
+
+ return result;
+}
+
+inline Name
+Name::getSubName(size_t iStartComponent) const
+{
+ Name result;
+
+ for (size_t i = iStartComponent; i < size(); ++i)
+ result.append(at(i));
+
+ return result;
+}
+
+inline bool
+Name::equals(const Name& name) const
+{
+ if (size() != name.size())
+ return false;
+
+ for (size_t i = 0; i < size(); ++i) {
+ if (at(i) != name.at(i))
+ return false;
+ }
+
+ return true;
+}
+
+inline bool
+Name::isPrefixOf(const Name& name) const
+{
+ // This name is longer than the name we are checking it against.
+ if (size() > name.size())
+ return false;
+
+ // Check if at least one of given components doesn't match.
+ for (size_t i = 0; i < size(); ++i) {
+ if (at(i) != name.at(i))
+ return false;
+ }
+
+ return true;
+}
+
+
+inline int
+Name::compare(const Name& other) const
+{
+ for (size_t i = 0; i < size() && i < other.size(); ++i) {
+ int comparison = at(i).compare(other.at(i));
+ if (comparison == 0)
+ // The components at this index are equal, so check the next components.
+ continue;
+
+ // Otherwise, the result is based on the components at this index.
+ return comparison;
+ }
+
+ // The components up to min(this.size(), other.size()) are equal, so the shorter name is less.
+ if (size() < other.size())
+ return -1;
+ else if (size() > other.size())
+ return 1;
+ else
+ return 0;
+}
+
+
+
template<bool T>
inline size_t
Name::wireEncode(EncodingImpl<T>& blk) const
{
size_t total_len = 0;
- for (const_reverse_iterator i = rbegin ();
- i != rend ();
+ for (const_reverse_iterator i = rbegin();
+ i != rend();
++i)
{
- total_len += i->wireEncode (blk);
+ total_len += i->wireEncode(blk);
}
- total_len += blk.prependVarNumber (total_len);
- total_len += blk.prependVarNumber (Tlv::Name);
+ total_len += blk.prependVarNumber(total_len);
+ total_len += blk.prependVarNumber(Tlv::Name);
return total_len;
}
-inline const Block &
+inline const Block&
Name::wireEncode() const
{
if (m_nameBlock.hasWire())
@@ -563,7 +714,7 @@
}
inline void
-Name::wireDecode(const Block &wire)
+Name::wireDecode(const Block& wire)
{
if (wire.type() != Tlv::Name)
throw Tlv::Error("Unexpected TLV type when decoding Name");
diff --git a/src/security/identity-certificate.cpp b/src/security/identity-certificate.cpp
index 5fddbfc..b4d5cb5 100644
--- a/src/security/identity-certificate.cpp
+++ b/src/security/identity-certificate.cpp
@@ -17,9 +17,8 @@
bool
IdentityCertificate::isCorrectName(const Name& name)
{
- int i = name.size() - 1;
-
string idString("ID-CERT");
+ int i = name.size() - 1;
for (; i >= 0; i--) {
if(name.get(i).toEscapedString() == idString)
break;
@@ -28,7 +27,7 @@
if (i < 0)
return false;
- int keyIdx = 0;
+ size_t keyIdx = 0;
string keyString("KEY");
for (; keyIdx < name.size(); keyIdx++) {
if(name.get(keyIdx).toEscapedString() == keyString)
@@ -59,11 +58,11 @@
Name
IdentityCertificate::certificateNameToPublicKeyName(const Name& certificateName)
{
- int i = certificateName.size() - 1;
string idString("ID-CERT");
bool foundIdString = false;
- for (; i >= 0; i--) {
- if (certificateName.get(i).toEscapedString() == idString)
+ size_t idCertComponentIndex = certificateName.size() - 1;
+ for (; idCertComponentIndex + 1 > 0; --idCertComponentIndex) {
+ if (certificateName.get(idCertComponentIndex).toEscapedString() == idString)
{
foundIdString = true;
break;
@@ -73,11 +72,12 @@
if(!foundIdString)
throw Error("Incorrect identity certificate name " + certificateName.toUri());
- Name tmpName = certificateName.getSubName(0, i);
+ Name tmpName = certificateName.getSubName(0, idCertComponentIndex);
string keyString("KEY");
bool foundKeyString = false;
- for (i = 0; i < tmpName.size(); i++) {
- if (tmpName.get(i).toEscapedString() == keyString)
+ size_t keyComponentIndex = 0;
+ for (; keyComponentIndex < tmpName.size(); keyComponentIndex++) {
+ if (tmpName.get(keyComponentIndex).toEscapedString() == keyString)
{
foundKeyString = true;
break;
@@ -86,8 +86,11 @@
if(!foundKeyString)
throw Error("Incorrect identity certificate name " + certificateName.toUri());
-
- return tmpName.getSubName(0, i).append(tmpName.getSubName(i + 1, tmpName.size() - i - 1));
+
+ return tmpName
+ .getSubName(0, keyComponentIndex)
+ .append(tmpName.getSubName(keyComponentIndex + 1,
+ tmpName.size() - keyComponentIndex - 1));
}
} // namespace ndn
diff --git a/src/security/sec-public-info-sqlite3.cpp b/src/security/sec-public-info-sqlite3.cpp
index aeb34dd..393355f 100644
--- a/src/security/sec-public-info-sqlite3.cpp
+++ b/src/security/sec-public-info-sqlite3.cpp
@@ -337,8 +337,8 @@
// sqlite3_stmt *statement;
// sqlite3_prepare_v2(m_database,
-// "INSERT OR REPLACE INTO Certificate (cert_name, cert_issuer, identity_name, key_identifier, not_before, not_after, certificate_data)\
-// values (?, ?, ?, ?, datetime(?, 'unixepoch'), datetime(?, 'unixepoch'), ?)",
+// "INSERT OR REPLACE INTO Certificate (cert_name, cert_issuer, identity_name, key_identifier, not_before, not_after, certificate_data) "
+// "VALUES (?, ?, ?, ?, datetime(?, 'unixepoch'), datetime(?, 'unixepoch'), ?)",
// -1, &statement, 0);
// _LOG_DEBUG("certName: " << certificateName);
diff --git a/src/security/validator.cpp b/src/security/validator.cpp
index 82de103..be166e5 100644
--- a/src/security/validator.cpp
+++ b/src/security/validator.cpp
@@ -249,7 +249,7 @@
const uint8_t* p1 = buffer->buf();
const uint8_t* p2 = sigValue.value();
- for(int i = 0; i < crypto::SHA256_DIGEST_SIZE; i++)
+ for(size_t i = 0; i < crypto::SHA256_DIGEST_SIZE; i++)
if(p1[i] != p2[i])
return false;
return true;
diff --git a/src/util/regex/regex-backref-matcher.hpp b/src/util/regex/regex-backref-matcher.hpp
index 5ae5f35..e2eabe8 100644
--- a/src/util/regex/regex-backref-matcher.hpp
+++ b/src/util/regex/regex-backref-matcher.hpp
@@ -30,9 +30,6 @@
protected:
virtual void
compile();
-
-private:
- int m_refNum;
};
} // namespace ndn
diff --git a/src/util/regex/regex-component-matcher.hpp b/src/util/regex/regex-component-matcher.hpp
index b102316..50cb8de 100644
--- a/src/util/regex/regex-component-matcher.hpp
+++ b/src/util/regex/regex-component-matcher.hpp
@@ -72,7 +72,7 @@
m_pseudoMatcher.clear();
m_pseudoMatcher.push_back(ptr_lib::make_shared<RegexPseudoMatcher>());
- for (int i = 1; i < m_componentRegex.mark_count(); i++)
+ for (size_t i = 1; i < m_componentRegex.mark_count(); i++)
{
ptr_lib::shared_ptr<RegexPseudoMatcher> pMatcher = ptr_lib::make_shared<RegexPseudoMatcher>();
m_pseudoMatcher.push_back(pMatcher);
@@ -102,7 +102,7 @@
std::string targetStr = name.get(offset).toEscapedString();
if(boost::regex_match(targetStr, subResult, m_componentRegex))
{
- for (int i = 1; i < m_componentRegex.mark_count(); i++)
+ for (size_t i = 1; i < m_componentRegex.mark_count(); i++)
{
m_pseudoMatcher[i]->resetMatchResult();
m_pseudoMatcher[i]->setMatchResult(subResult[i]);
diff --git a/src/util/regex/regex-component-set-matcher.hpp b/src/util/regex/regex-component-set-matcher.hpp
index ffb4c6d..857c59e 100644
--- a/src/util/regex/regex-component-set-matcher.hpp
+++ b/src/util/regex/regex-component-set-matcher.hpp
@@ -107,9 +107,9 @@
inline void
RegexComponentSetMatcher::compileSingleComponent()
{
- int end = extractComponent(1);
+ size_t end = extractComponent(1);
- if(m_expr.size() != end)
+ if (m_expr.size() != end)
{
throw RegexMatcher::Error(std::string("Error: RegexComponentSetMatcher.compileSingleComponent: ")
+ m_expr);
diff --git a/src/util/regex/regex-matcher.hpp b/src/util/regex/regex-matcher.hpp
index baa8bf3..0d34311 100644
--- a/src/util/regex/regex-matcher.hpp
+++ b/src/util/regex/regex-matcher.hpp
@@ -66,7 +66,7 @@
private:
bool
- recursiveMatch(const int& mId, const Name& name, const int& offset, const int& len);
+ recursiveMatch(size_t mId, const Name& name, size_t offset, size_t len);
protected:
@@ -124,7 +124,7 @@
}
inline bool
-RegexMatcher::recursiveMatch(const int& mId, const Name& name, const int& offset, const int& len)
+RegexMatcher::recursiveMatch(size_t mId, const Name& name, size_t offset, size_t len)
{
// _LOG_TRACE ("Enter RegexMatcher::recursiveMatch");
diff --git a/src/util/regex/regex-pattern-list-matcher.hpp b/src/util/regex/regex-pattern-list-matcher.hpp
index 84b5c46..3ae74f1 100644
--- a/src/util/regex/regex-pattern-list-matcher.hpp
+++ b/src/util/regex/regex-pattern-list-matcher.hpp
@@ -32,10 +32,10 @@
extractPattern(int index, int* next);
int
- extractSubPattern(const char left, const char right, int index);
+ extractSubPattern(const char left, const char right, size_t index);
int
- extractRepetition(int index);
+ extractRepetition(size_t index);
private:
@@ -121,10 +121,10 @@
}
inline int
-RegexPatternListMatcher::extractSubPattern(const char left, const char right, int index)
+RegexPatternListMatcher::extractSubPattern(const char left, const char right, size_t index)
{
- int lcount = 1;
- int rcount = 0;
+ size_t lcount = 1;
+ size_t rcount = 0;
while(lcount > rcount){
@@ -143,9 +143,9 @@
}
inline int
-RegexPatternListMatcher::extractRepetition(int index)
+RegexPatternListMatcher::extractRepetition(size_t index)
{
- int exprSize = m_expr.size();
+ size_t exprSize = m_expr.size();
if(index == exprSize)
return index;
diff --git a/src/util/regex/regex-top-matcher.cpp b/src/util/regex/regex-top-matcher.cpp
index 38f1a5a..d3b8271 100644
--- a/src/util/regex/regex-top-matcher.cpp
+++ b/src/util/regex/regex-top-matcher.cpp
@@ -95,8 +95,8 @@
else
expand = m_expand;
- int offset = 0;
- while(offset < expand.size())
+ size_t offset = 0;
+ while (offset < expand.size())
{
std::string item = getItemFromExpand(expand, offset);
if(item[0] == '<')
@@ -129,9 +129,9 @@
}
std::string
-RegexTopMatcher::getItemFromExpand(const std::string& expand, int & offset)
+RegexTopMatcher::getItemFromExpand(const std::string& expand, size_t& offset)
{
- int begin = offset;
+ size_t begin = offset;
if(expand[offset] == '\\')
{
@@ -155,8 +155,8 @@
if(offset >= expand.size())
throw RegexMatcher::Error("wrong format of expand string!");
- int left = 1;
- int right = 0;
+ size_t left = 1;
+ size_t right = 0;
while(right < left)
{
if(expand[offset] == '<')
@@ -196,7 +196,7 @@
RegexTopMatcher::convertSpecialChar(const std::string& str)
{
std::string newStr;
- for(int i = 0; i < str.size(); i++)
+ for(size_t i = 0; i < str.size(); i++)
{
char c = str[i];
switch(c)
diff --git a/src/util/regex/regex-top-matcher.hpp b/src/util/regex/regex-top-matcher.hpp
index fc4a0df..4d9c01e 100644
--- a/src/util/regex/regex-top-matcher.hpp
+++ b/src/util/regex/regex-top-matcher.hpp
@@ -43,7 +43,7 @@
private:
std::string
- getItemFromExpand(const std::string& expand, int & offset);
+ getItemFromExpand(const std::string& expand, size_t& offset);
static std::string
convertSpecialChar(const std::string& str);
diff --git a/src/util/scheduler.cpp b/src/util/scheduler.cpp
index 377800f..fc6492f 100644
--- a/src/util/scheduler.cpp
+++ b/src/util/scheduler.cpp
@@ -76,8 +76,7 @@
Scheduler::Scheduler(boost::asio::io_service& ioService)
- : m_ioService(ioService)
- , m_scheduledEvent(m_events.end())
+ : m_scheduledEvent(m_events.end())
, m_deadlineTimer(ioService)
, m_isEventExecuting(false)
{
diff --git a/src/util/scheduler.hpp b/src/util/scheduler.hpp
index b7364ce..cc8bcce 100644
--- a/src/util/scheduler.hpp
+++ b/src/util/scheduler.hpp
@@ -56,8 +56,6 @@
onEvent(const boost::system::error_code& code);
private:
- boost::asio::io_service& m_ioService;
-
struct EventInfo
{
EventInfo(const time::nanoseconds& after,
diff --git a/src/util/string-helper.hpp b/src/util/string-helper.hpp
index 14f499e..9e2329c 100644
--- a/src/util/string-helper.hpp
+++ b/src/util/string-helper.hpp
@@ -23,7 +23,7 @@
inline std::string
toHex(const uint8_t* array, size_t arraySize)
{
- if (!&array)
+ if (array == 0 || arraySize == 0)
return "";
std::ostringstream result;
diff --git a/tools/ndncatchunks3.cpp b/tools/ndncatchunks3.cpp
index 7b72614..59a75ad 100644
--- a/tools/ndncatchunks3.cpp
+++ b/tools/ndncatchunks3.cpp
@@ -26,12 +26,12 @@
Consumer(const std::string& data_name,
size_t pipe_size, size_t total_seg,
int scope = -1, bool mustBeFresh = true)
- : m_data_name (data_name)
- , m_pipe_size (pipe_size)
- , m_total_seg (total_seg)
- , m_next_seg (0)
- , m_total_size (0)
- , m_output (false)
+ : m_data_name(data_name)
+ , m_pipe_size(pipe_size)
+ , m_total_seg(total_seg)
+ , m_next_seg(0)
+ , m_total_size(0)
+ , m_output(false)
, m_scope(scope)
, m_mustBeFresh(mustBeFresh)
{
@@ -70,25 +70,25 @@
{
try
{
- for (int i = 0; i < m_pipe_size; i++)
- {
+ for (size_t i = 0; i < m_pipe_size; i++)
+ {
ndn::Interest interest(ndn::Name(m_data_name).appendSegment(m_next_seg++));
- interest.setInterestLifetime(ndn::time::milliseconds(4000));
- if (m_scope >= 0)
+ interest.setInterestLifetime(ndn::time::milliseconds(4000));
+ if (m_scope >= 0)
interest.setScope(m_scope);
- interest.setMustBeFresh(m_mustBeFresh);
+ interest.setMustBeFresh(m_mustBeFresh);
- m_face.expressInterest (interest,
- ndn::bind(&Consumer::on_data, this, _1, _2),
- ndn::bind(&Consumer::on_timeout, this, _1));
- }
+ m_face.expressInterest(interest,
+ ndn::bind(&Consumer::on_data, this, _1, _2),
+ ndn::bind(&Consumer::on_timeout, this, _1));
+ }
// processEvents will block until the requested data received or timeout occurs
m_face.processEvents();
}
catch (std::exception& e)
{
- std::cerr << "ERROR: " << e.what () << std::endl;
+ std::cerr << "ERROR: " << e.what() << std::endl;
}
}
@@ -103,7 +103,7 @@
std::cout.write(reinterpret_cast<const char*>(content.value()), content.value_size());
}
- m_total_size += content.value_size ();
+ m_total_size += content.value_size();
if (name[-1].toSegment() + 1 == m_total_seg)
{
@@ -119,9 +119,9 @@
interest.setInterestLifetime(ndn::time::milliseconds(4000));
interest.setMustBeFresh(m_mustBeFresh);
- m_face.expressInterest (interest,
- ndn::bind(&Consumer::on_data, this, _1, _2),
- ndn::bind(&Consumer::on_timeout, this, _1));
+ m_face.expressInterest(interest,
+ ndn::bind(&Consumer::on_data, this, _1, _2),
+ ndn::bind(&Consumer::on_timeout, this, _1));
}
}
@@ -153,25 +153,25 @@
int opt;
while ((opt = getopt(argc, argv, "op:c:")) != -1)
{
- switch (opt)
- {
+ switch(opt)
+ {
case 'p':
- pipe_size = atoi (optarg);
- if (pipe_size <= 0)
- pipe_size = 1;
- std::cerr << "main (): set pipe size = " << pipe_size << std::endl;
- break;
- case 'c':
- total_seg = atoi (optarg);
- if (total_seg <= 0)
- total_seg = 1;
- std::cerr << "main (): set total seg = " << total_seg << std::endl;
- break;
- case 'o':
- output = true;
- break;
+ pipe_size = atoi(optarg);
+ if (pipe_size <= 0)
+ pipe_size = 1;
+ std::cerr << "main(): set pipe size = " << pipe_size << std::endl;
+ break;
+ case 'c':
+ total_seg = atoi(optarg);
+ if (total_seg <= 0)
+ total_seg = 1;
+ std::cerr << "main(): set total seg = " << total_seg << std::endl;
+ break;
+ case 'o':
+ output = true;
+ break;
default:
- return usage(argv[0]);
+ return usage(argv[0]);
}
}
@@ -185,12 +185,12 @@
return usage(argv[0]);
}
- Consumer consumer (name, pipe_size, total_seg);
+ Consumer consumer(name, pipe_size, total_seg);
if (output)
- consumer.enable_output ();
+ consumer.enable_output();
- consumer.run ();
+ consumer.run();
return 0;
}
diff --git a/tools/ndnputchunks3.cpp b/tools/ndnputchunks3.cpp
index 3822ae0..bb6435b 100644
--- a/tools/ndnputchunks3.cpp
+++ b/tools/ndnputchunks3.cpp
@@ -129,7 +129,7 @@
{
std::cerr << "ERROR: " << e.what() << std::endl;
// and keep going
- sleep (1);
+ sleep(1);
}
}
}
diff --git a/tools/ndnsec-cert-dump.hpp b/tools/ndnsec-cert-dump.hpp
index cbafc61..2adca8d 100644
--- a/tools/ndnsec-cert-dump.hpp
+++ b/tools/ndnsec-cert-dump.hpp
@@ -20,13 +20,13 @@
bool isKeyName = false;
bool isIdentityName = false;
bool isCertName = true;
- bool isFileName = false;
+ // bool isFileName = false;
bool isPretty = false;
bool isStdOut = true;
bool isRepoOut = false;
std::string repoHost = "127.0.0.1";
std::string repoPort = "7376";
- bool isDnsOut = false;
+ // bool isDnsOut = false;
po::options_description desc("General Usage\n ndnsec cert-dump [-h] [-p] [-d] [-r [-H repo-host] [-P repor-port] ] [-i|k|f] name\nGeneral options");
desc.add_options()
@@ -38,7 +38,7 @@
("repo-output,r", "optional, if specified, certificate is dumped (published) to repo")
("repo-host,H", po::value<std::string>(&repoHost)->default_value("localhost"), "optional, the repo host if repo-output is specified")
("repo-port,P", po::value<std::string>(&repoPort)->default_value("7376"), "optional, the repo port if repo-output is specified")
- ("dns-output,d", "optional, if specified, certificate is dumped (published) to DNS")
+ // ("dns-output,d", "optional, if specified, certificate is dumped (published) to DNS")
("name,n", po::value<std::string>(&name), "certificate name, for example, /ndn/edu/ucla/KEY/cs/alice/ksk-1234567890/ID-CERT/%FD%FF%FF%FF%FF%FF%FF%FF")
;
@@ -75,7 +75,7 @@
else if (vm.count("file"))
{
isCertName = false;
- isFileName = true;
+ // isFileName = true;
}
if (vm.count("pretty"))
@@ -88,7 +88,7 @@
}
else if(vm.count("dns-output"))
{
- isDnsOut = true;
+ // isDnsOut = true;
isStdOut = false;
std::cerr << "Error: DNS output is not supported yet!" << std::endl;
return 1;
diff --git a/tools/ndnsec-cert-gen.hpp b/tools/ndnsec-cert-gen.hpp
index 8b6e460..363dd57 100644
--- a/tools/ndnsec-cert-gen.hpp
+++ b/tools/ndnsec-cert-gen.hpp
@@ -19,8 +19,6 @@
using namespace ndn;
namespace po = boost::program_options;
- typedef boost::posix_time::ptime Time;
-
std::string notBeforeStr;
std::string notAfterStr;
std::string sName;
@@ -199,7 +197,7 @@
certificate.setNotAfter(notAfter);
certificate.setPublicKeyInfo(selfSignedCertificate->getPublicKeyInfo());
certificate.addSubjectDescription(subDescryptName);
- for(int i = 0; i < otherSubDescrypt.size(); i++)
+ for (size_t i = 0; i < otherSubDescrypt.size(); i++)
certificate.addSubjectDescription(otherSubDescrypt[i]);
certificate.encode();
diff --git a/tools/ndnsec-cert-install.hpp b/tools/ndnsec-cert-install.hpp
index 1d3347f..12c036c 100644
--- a/tools/ndnsec-cert-install.hpp
+++ b/tools/ndnsec-cert-install.hpp
@@ -95,7 +95,7 @@
bool systemDefault = true;
bool identityDefault = false;
bool keyDefault = false;
- bool noDefault = false;
+ // bool noDefault = false;
bool any = false;
po::options_description desc("General Usage\n ndnsec cert-install [-h] [-I|K|N] cert-file\nGeneral options");
@@ -148,7 +148,7 @@
}
else if (vm.count("no-default"))
{
- noDefault = true;
+ // noDefault = true;
systemDefault = false;
}
diff --git a/tools/ndnsec-delete.hpp b/tools/ndnsec-delete.hpp
index bced204..2536344 100644
--- a/tools/ndnsec-delete.hpp
+++ b/tools/ndnsec-delete.hpp
@@ -16,7 +16,7 @@
using namespace ndn;
namespace po = boost::program_options;
- bool deleteId = true;
+ // bool deleteId = true;
bool deleteKey = false;
bool deleteCert = false;
std::string name;
@@ -55,12 +55,12 @@
if(vm.count("delete_cert"))
{
deleteCert = true;
- deleteId = false;
+ // deleteId = false;
}
else if(vm.count("delete_key"))
{
deleteKey = true;
- deleteId = false;
+ // deleteId = false;
}
try
diff --git a/tools/ndnsec-list.hpp b/tools/ndnsec-list.hpp
index b9724d6..3ebe2ca 100644
--- a/tools/ndnsec-list.hpp
+++ b/tools/ndnsec-list.hpp
@@ -56,11 +56,11 @@
{
std::vector<Name> defaultList;
keyChain.getAllIdentities(defaultList, true);
- for(int i = 0; i < defaultList.size(); i++)
+ for(size_t i = 0; i < defaultList.size(); i++)
std::cout << "* " << defaultList[i] << std::endl;
std::vector<Name> otherList;
keyChain.getAllIdentities(otherList, false);
- for(int i = 0; i < otherList.size(); i++)
+ for(size_t i = 0; i < otherList.size(); i++)
std::cout << " " << otherList[i] << std::endl;
return 0;
}
@@ -68,31 +68,31 @@
{
std::vector<Name> defaultIdList;
keyChain.getAllIdentities(defaultIdList, true);
- for(int i = 0; i < defaultIdList.size(); i++)
+ for(size_t i = 0; i < defaultIdList.size(); i++)
{
std::cout << "* " << defaultIdList[i] << std::endl;
std::vector<Name> defaultKeyList;
keyChain.getAllKeyNamesOfIdentity(defaultIdList[i], defaultKeyList, true);
- for(int j = 0; j < defaultKeyList.size(); j++)
+ for(size_t j = 0; j < defaultKeyList.size(); j++)
std::cout << " +->* " << defaultKeyList[j] << std::endl;
std::vector<Name> otherKeyList;
keyChain.getAllKeyNamesOfIdentity(defaultIdList[i], otherKeyList, false);
- for(int j = 0; j < otherKeyList.size(); j++)
+ for(size_t j = 0; j < otherKeyList.size(); j++)
std::cout << " +-> " << otherKeyList[j] << std::endl;
std::cout << std::endl;
}
std::vector<Name> otherIdList;
keyChain.getAllIdentities(otherIdList, false);
- for(int i = 0; i < otherIdList.size(); i++)
+ for(size_t i = 0; i < otherIdList.size(); i++)
{
std::cout << " " << otherIdList[i] << std::endl;
std::vector<Name> defaultKeyList;
keyChain.getAllKeyNamesOfIdentity(otherIdList[i], defaultKeyList, true);
- for(int j = 0; j < defaultKeyList.size(); j++)
+ for(size_t j = 0; j < defaultKeyList.size(); j++)
std::cout << " +->* " << defaultKeyList[j] << std::endl;
std::vector<Name> otherKeyList;
keyChain.getAllKeyNamesOfIdentity(otherIdList[i], otherKeyList, false);
- for(int j = 0; j < otherKeyList.size(); j++)
+ for(size_t j = 0; j < otherKeyList.size(); j++)
std::cout << " +-> " << otherKeyList[j] << std::endl;
std::cout << std::endl;
}
@@ -102,35 +102,35 @@
{
std::vector<Name> defaultIdList;
keyChain.getAllIdentities(defaultIdList, true);
- for(int i = 0; i < defaultIdList.size(); i++)
+ for(size_t i = 0; i < defaultIdList.size(); i++)
{
std::cout << "* " << defaultIdList[i] << std::endl;
std::vector<Name> defaultKeyList;
keyChain.getAllKeyNamesOfIdentity(defaultIdList[i], defaultKeyList, true);
- for(int j = 0; j < defaultKeyList.size(); j++)
+ for(size_t j = 0; j < defaultKeyList.size(); j++)
{
std::cout << " +->* " << defaultKeyList[j] << std::endl;
std::vector<Name> defaultCertList;
keyChain.getAllCertificateNamesOfKey(defaultKeyList[j], defaultCertList, true);
- for(int k = 0; k < defaultCertList.size(); k++)
+ for(size_t k = 0; k < defaultCertList.size(); k++)
std::cout << " +->* " << defaultCertList[k] << std::endl;
std::vector<Name> otherCertList;
keyChain.getAllCertificateNamesOfKey(defaultKeyList[j], otherCertList, false);
- for(int k = 0; k < otherCertList.size(); k++)
+ for(size_t k = 0; k < otherCertList.size(); k++)
std::cout << " +-> " << otherCertList[k] << std::endl;
}
std::vector<Name> otherKeyList;
keyChain.getAllKeyNamesOfIdentity(defaultIdList[i], otherKeyList, false);
- for(int j = 0; j < otherKeyList.size(); j++)
+ for(size_t j = 0; j < otherKeyList.size(); j++)
{
std::cout << " +-> " << otherKeyList[j] << std::endl;
std::vector<Name> defaultCertList;
keyChain.getAllCertificateNamesOfKey(otherKeyList[j], defaultCertList, true);
- for(int k = 0; k < defaultCertList.size(); k++)
+ for(size_t k = 0; k < defaultCertList.size(); k++)
std::cout << " +->* " << defaultCertList[k] << std::endl;
std::vector<Name> otherCertList;
keyChain.getAllCertificateNamesOfKey(otherKeyList[j], otherCertList, false);
- for(int k = 0; k < otherCertList.size(); k++)
+ for(size_t k = 0; k < otherCertList.size(); k++)
std::cout << " +-> " << otherCertList[k] << std::endl;
}
@@ -138,35 +138,35 @@
}
std::vector<Name> otherIdList;
keyChain.getAllIdentities(otherIdList, false);
- for(int i = 0; i < otherIdList.size(); i++)
+ for(size_t i = 0; i < otherIdList.size(); i++)
{
std::cout << " " << otherIdList[i] << std::endl;
std::vector<Name> defaultKeyList;
keyChain.getAllKeyNamesOfIdentity(otherIdList[i], defaultKeyList, true);
- for(int j = 0; j < defaultKeyList.size(); j++)
+ for(size_t j = 0; j < defaultKeyList.size(); j++)
{
std::cout << " +->* " << defaultKeyList[j] << std::endl;
std::vector<Name> defaultCertList;
keyChain.getAllCertificateNamesOfKey(defaultKeyList[j], defaultCertList, true);
- for(int k = 0; k < defaultCertList.size(); k++)
+ for(size_t k = 0; k < defaultCertList.size(); k++)
std::cout << " +->* " << defaultCertList[k] << std::endl;
std::vector<Name> otherCertList;
keyChain.getAllCertificateNamesOfKey(defaultKeyList[j], otherCertList, false);
- for(int k = 0; k < otherCertList.size(); k++)
+ for(size_t k = 0; k < otherCertList.size(); k++)
std::cout << " +-> " << otherCertList[k] << std::endl;
}
std::vector<Name> otherKeyList;
keyChain.getAllKeyNamesOfIdentity(otherIdList[i], otherKeyList, false);
- for(int j = 0; j < otherKeyList.size(); j++)
+ for(size_t j = 0; j < otherKeyList.size(); j++)
{
std::cout << " +-> " << otherKeyList[j] << std::endl;
std::vector<Name> defaultCertList;
keyChain.getAllCertificateNamesOfKey(otherKeyList[j], defaultCertList, true);
- for(int k = 0; k < defaultCertList.size(); k++)
+ for(size_t k = 0; k < defaultCertList.size(); k++)
std::cout << " +->* " << defaultCertList[k] << std::endl;
std::vector<Name> otherCertList;
keyChain.getAllCertificateNamesOfKey(otherKeyList[j], otherCertList, false);
- for(int k = 0; k < otherCertList.size(); k++)
+ for(size_t k = 0; k < otherCertList.size(); k++)
std::cout << " +-> " << otherCertList[k] << std::endl;
}
std::cout << std::endl;
diff --git a/wscript b/wscript
index d23de94..1f99ca5 100644
--- a/wscript
+++ b/wscript
@@ -46,26 +46,34 @@
conf.check_openssl()
- if conf.options.debug:
- conf.define ('_DEBUG', 1)
- flags = ['-O0',
- '-Wall',
- # '-Werror',
- '-Wno-unused-variable',
- '-g3',
- '-Wno-unused-private-field', # only clang supports
- '-fcolor-diagnostics', # only clang supports
- '-Qunused-arguments', # only clang supports
- '-Wno-tautological-compare', # suppress warnings from CryptoPP
- '-Wno-unused-function', # another annoying warning from CryptoPP
+ custom_cxxflags = (len(conf.env.CXXFLAGS) > 0)
- '-Wno-deprecated-declarations',
- ]
+ if not custom_cxxflags:
+ if conf.options.debug:
+ conf.define ('_DEBUG', 1)
- conf.add_supported_cxxflags (cxxflags = flags)
- else:
- flags = ['-O3', '-g', '-Wno-tautological-compare', '-Wno-unused-function', '-Wno-deprecated-declarations']
- conf.add_supported_cxxflags (cxxflags = flags)
+ conf.add_supported_cxxflags(cxxflags = [
+ '-O0', '-g3',
+ '-Werror',
+ '-fcolor-diagnostics', # only clang supports
+ ])
+ else:
+ if len(conf.env.CXXFLAGS) == 0:
+ conf.add_supported_cxxflags(cxxflags = ['-O2', '-g'])
+
+ conf.add_supported_cxxflags(cxxflags = [
+ '-Wall',
+
+ # to disable known warnings
+ '-Wno-unused-variable', # cryptopp
+ '-Wno-unused-function',
+ '-Wno-deprecated-declarations',
+ ])
+ elif conf.options.debug:
+ Logs.error("Selected debug mode, but CXXFLAGS is set to a custom value '%s'"
+ % " ".join(conf.env.CXXFLAGS))
+ conf.fatal("Unset CXXFLAGS or remove --debug option to proceed")
+ return 1
if Utils.unversioned_sys_platform () == "darwin":
conf.check_cxx(framework_name='CoreFoundation', uselib_store='OSX_COREFOUNDATION', mandatory=True)
@@ -95,7 +103,7 @@
conf.check(msg='Checking for type std::function',
type_name="std::function<void()>", header_name="functional", define_name='HAVE_STD_FUNCTION')
conf.define('HAVE_CXX11', 1)
-
+
USED_BOOST_LIBS = ['system', 'filesystem', 'date_time', 'iostreams', 'regex', 'program_options', 'chrono']
if conf.env['WITH_TESTS']:
USED_BOOST_LIBS += ['unit_test_framework']