+ bool has_extra_name = strlen(BT_VERSION_EXTRA_NAME) > 0;
+ bool has_extra_description = strlen(BT_VERSION_EXTRA_DESCRIPTION) > 0;
+ bool has_extra_patch_names = strlen(BT_VERSION_EXTRA_PATCHES) > 0;
+ bool has_extra = has_extra_name || has_extra_description ||
+ has_extra_patch_names;
+
+ printf("%sBabeltrace %s%s",
+ bt_common_color_bold(),
+ VERSION,
+ bt_common_color_reset());
+
+ if (strlen(BT_VERSION_NAME) > 0) {
+ printf(" \"%s%s%s%s\"",
+ bt_common_color_fg_bright_blue(),
+ bt_common_color_bold(),
+ BT_VERSION_NAME,
+ bt_common_color_reset());
+ }
+
+ if (strlen(BT_VERSION_GIT) > 0) {
+ printf(" [%s%s%s]",
+ bt_common_color_fg_yellow(),
+ BT_VERSION_GIT,
+ bt_common_color_reset());
+ }
+
+ printf("\n");
+
+ if (strlen(BT_VERSION_DESCRIPTION) > 0) {
+ unsigned int columns;
+ GString *descr;
+
+ if (bt_common_get_term_size(&columns, NULL) < 0) {
+ /* Width not found: default to 80 */
+ columns = 80;
+ }
+
+ descr = bt_common_fold(BT_VERSION_DESCRIPTION, columns, 0);
+ BT_ASSERT(descr);
+ printf("\n%s\n", descr->str);
+ g_string_free(descr, TRUE);
+ }
+
+ if (has_extra) {
+ printf("\n");
+
+ if (has_extra_name) {
+ printf("%sExtra name%s: %s\n",
+ bt_common_color_fg_cyan(),
+ bt_common_color_reset(),
+ BT_VERSION_EXTRA_NAME);
+ }
+
+ if (has_extra_description) {
+ printf("%sExtra description%s:\n ",
+ bt_common_color_fg_cyan(),
+ bt_common_color_reset());
+ print_and_indent(BT_VERSION_EXTRA_DESCRIPTION);
+ }
+
+ if (has_extra_patch_names) {
+ printf("%sExtra patch names%s:\n ",
+ bt_common_color_fg_cyan(),
+ bt_common_color_reset());
+ print_and_indent(BT_VERSION_EXTRA_PATCHES);
+ }