void cmd_cfs(void) { Filsys *fs; if(*cons.arg != ' ') { fs = &filesys[0]; /* default */ } else { if(skipbl(1)){ cprint("skipbl\n"); return; } if(!nextelem()) fs = &filesys[0]; /* default */ else fs = fsstr(elem); } if(fs == 0) { cprint("unknown file system %s\n", elem); return; } if(con_attach(FID1, "adm", fs->name)) panic("FID1 attach to root"); cur_fs = fs; }
static int json_end_map(void *ctx) { LOG("end of map\n"); if (!parsing_swallows && !parsing_rect && !parsing_window_rect && !parsing_geometry) { LOG("attaching\n"); con_attach(json_node, json_node->parent, true); json_node = json_node->parent; } if (parsing_rect) parsing_rect = false; if (parsing_window_rect) parsing_window_rect = false; if (parsing_geometry) parsing_geometry = false; return 1; }
/* * This function detaches 'con' from its parent and inserts it either before or * after 'target'. * */ static void insert_con_into(Con *con, Con *target, position_t position) { Con *parent = target->parent; /* We need to preserve the old con->parent. While it might still be used to * insert the entry before/after it, we call the on_remove_child callback * afterwards which might then close the con if it is empty. */ Con *old_parent = con->parent; con_detach(con); con_fix_percent(con->parent); /* When moving to a workspace, we respect the user’s configured * workspace_layout */ if (parent->type == CT_WORKSPACE) { Con *split = workspace_attach_to(parent); if (split != parent) { DLOG("Got a new split con, using that one instead\n"); con->parent = split; con_attach(con, split, false); DLOG("attached\n"); con->percent = 0.0; con_fix_percent(split); con = split; DLOG("ok, continuing with con %p instead\n", con); con_detach(con); } } con->parent = parent; if (position == BEFORE) { TAILQ_INSERT_BEFORE(target, con, nodes); TAILQ_INSERT_HEAD(&(parent->focus_head), con, focused); } else if (position == AFTER) { TAILQ_INSERT_AFTER(&(parent->nodes_head), target, con, nodes); TAILQ_INSERT_HEAD(&(parent->focus_head), con, focused); } /* Pretend the con was just opened with regards to size percent values. * Since the con is moved to a completely different con, the old value * does not make sense anyways. */ con->percent = 0.0; con_fix_percent(parent); CALL(old_parent, on_remove_child); }