+static int mi_partial_session(const char *session_name)
+{
+ int ret;
+ assert(writer);
+ assert(session_name);
+
+ /* Open session element */
+ ret = mi_lttng_writer_open_element(writer, config_element_session);
+ if (ret) {
+ goto end;
+ }
+
+ ret = mi_lttng_writer_write_element_string(writer, config_element_name,
+ session_name);
+ if (ret) {
+ goto end;
+ }
+
+ /* Closing session element */
+ ret = mi_lttng_writer_close_element(writer);
+end:
+ return ret;
+}
+
+/*
+ * Mi print of save command
+ */
+static int mi_save_print(const char *session_name)
+{
+ int ret;
+ assert(writer);
+
+ if (opt_save_all) {
+ /* We use a wildcard to represent all sessions */
+ session_name = "*";
+ }
+
+ /* Print save element */
+ ret = mi_lttng_writer_open_element(writer, mi_lttng_element_save);
+ if (ret) {
+ goto end;
+ }
+
+ /* Print session element */
+ ret = mi_partial_session(session_name);
+ if (ret) {
+ goto end;
+ }
+
+ /* Path element */
+ if (opt_output_path) {
+ ret = mi_lttng_writer_write_element_string(writer, config_element_path,
+ opt_output_path);
+ if (ret) {
+ goto end;
+ }
+ }
+
+ /* Close save element */
+ ret = mi_lttng_writer_close_element(writer);
+end:
+ return ret;
+}
+