Using ioctl() instead of the `COLUMNS` environment variable because
`COLUMNS` is in fact a shell variable which is not exported.
The function is not supported on Windows yet.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Change-Id: I84942830f0392ff1aca3e1aff54fffc534ddda05
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1621
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
#ifndef __MINGW32__
#include <pwd.h>
+#include <sys/ioctl.h>
#endif
#define SYSTEM_PLUGIN_PATH INSTALL_LIBDIR "/babeltrace2/plugins"
return folded;
}
+
+#ifdef __MINGW32__
+BT_HIDDEN
+int bt_common_get_term_size(unsigned int *width, unsigned int *height)
+{
+ /* Not supported on Windows yet */
+ return -1;
+}
+#else /* __MINGW32__ */
+BT_HIDDEN
+int bt_common_get_term_size(unsigned int *width, unsigned int *height)
+{
+ int ret = 0;
+ struct winsize winsize;
+
+ if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize) < 0) {
+ ret = -1;
+ goto end;
+ }
+
+ if (width) {
+ *width = (unsigned int) winsize.ws_col;
+ }
+
+ if (height) {
+ *height = (unsigned int) winsize.ws_row;
+ }
+
+end:
+ return ret;
+}
+#endif /* __MINGW32__ */
GString *bt_common_fold(const char *str, unsigned int total_length,
unsigned int indent);
+/*
+ * Writes the terminal's width to `*width`, its height to `*height`,
+ * and returns 0 on success, or returns -1 on error.
+ */
+BT_HIDDEN
+int bt_common_get_term_size(unsigned int *width, unsigned int *height);
+
/*
* Wraps read() function to handle EINTR and partial reads.
* On success, it returns `count` received as parameter. On error, it returns a