static void handle_message(struct tmate_decoder *decoder, msgpack_object obj) { struct tmate_unpacker _uk; struct tmate_unpacker *uk = &_uk; init_unpacker(uk, obj); switch (unpack_int(uk)) { case TMATE_NOTIFY: tmate_notify(uk); break; case TMATE_CLIENT_PANE_KEY: tmate_client_pane_key(uk); break; case TMATE_CLIENT_RESIZE: tmate_client_resize(uk); break; case TMATE_CLIENT_EXEC_CMD: tmate_client_exec_cmd(uk); break; case TMATE_CLIENT_ENV: tmate_client_env(uk); break; case TMATE_CLIENT_READY: tmate_client_ready(decoder, uk); break; default: decoder_error(); } }
static void mate_notify_message(struct client *c, int join) { char buf[100]; int count; static int multi_client; count = num_clients(); if (count > 1) multi_client = 1; if (multi_client) sprintf(buf, " -- %d mate%s %sconnected", count, count == 1 ? " is" : "s are", (join || !count) ? "" : "still "); tmate_notify("%s mate has %s the session (%s)%s", multi_client ? "A" : "Your", join ? "joined" : "left", c->ip_address, multi_client ? buf : ""); }