aboutsummaryrefslogtreecommitdiff
path: root/tools/gator/daemon/DynBuf.h
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2014-08-22 13:33:17 -0500
committerMark Brown <broonie@linaro.org>2014-08-22 13:33:17 -0500
commitc27744f4eb311589f693e9c67c7f778b77f89d26 (patch)
treeb8a013d826f85ab7737b338d6e5b4e7eab3c3ea3 /tools/gator/daemon/DynBuf.h
parent586197edd648635f892870b1c4f726496a8dcb6c (diff)
parent43bc6d5b076e30d55b59daedeb205063cb6e54a2 (diff)
Merge remote-tracking branch 'lsk/v3.14/topic/gator' into linux-linaro-lsk-v3.14lsk-v3.14-14.08
Diffstat (limited to 'tools/gator/daemon/DynBuf.h')
-rw-r--r--tools/gator/daemon/DynBuf.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/tools/gator/daemon/DynBuf.h b/tools/gator/daemon/DynBuf.h
new file mode 100644
index 000000000000..2f4554ab2e49
--- /dev/null
+++ b/tools/gator/daemon/DynBuf.h
@@ -0,0 +1,52 @@
+/**
+ * Copyright (C) ARM Limited 2013-2014. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef DYNBUF_H
+#define DYNBUF_H
+
+#include <stdlib.h>
+
+class DynBuf {
+public:
+ DynBuf() : capacity(0), length(0), buf(NULL) {}
+ ~DynBuf() {
+ reset();
+ }
+
+ inline void reset() {
+ capacity = 0;
+ length = 0;
+ if (buf != NULL) {
+ free(buf);
+ buf = NULL;
+ }
+ }
+
+ bool read(const char *const path);
+ // On error instead of printing the error and returning false, this returns -errno
+ int readlink(const char *const path);
+ __attribute__ ((format(printf, 2, 3)))
+ bool printf(const char *format, ...);
+
+ size_t getLength() const { return length; }
+ const char *getBuf() const { return buf; }
+ char *getBuf() { return buf; }
+
+private:
+ int resize(const size_t minCapacity);
+
+ size_t capacity;
+ size_t length;
+ char *buf;
+
+ // Intentionally undefined
+ DynBuf(const DynBuf &);
+ DynBuf &operator=(const DynBuf &);
+};
+
+#endif // DYNBUF_H