+int create_live_local_session(char **session_path, char **session_name, int print)
+{
+ int ret;
+ char *name;
+ int sudo = 0;
+
+ ret = check_requirements(&sudo);
+
+ name = random_session_name();
+ if (!name) {
+ ret = -1;
+ goto end;
+ }
+
+ ret = check_session_name(name, sudo);
+ if (ret < 0) {
+ goto end_free;
+ }
+
+ ret = live_local_session(name, sudo);
+ if (ret < 0) {
+ goto end_free;
+ }
+
+ ret = enable_events(name, sudo);
+ if (ret < 0) {
+ goto end_free;
+ }
+
+ ret = add_contexts(name, sudo);
+ if (ret < 0) {
+ goto end_free;
+ }
+
+ ret = start(name, sudo, 0, print);
+ if (ret < 0) {
+ goto end_free;
+ }
+
+ if (session_path)
+ *session_path = live_path(name);
+ if (session_name) {
+ *session_name = name;
+ goto end;
+ }
+
+end_free:
+ free(name);
+end:
+ return ret;
+}