static void source_agent_env(enum agent id) { struct agent_data_t data; int ret = envoy_get_agent(id, &data, AGENT_ENVIRON); if (ret < 0) warn("failed to fetch envoy agent"); switch (data.status) { case ENVOY_STOPPED: case ENVOY_STARTED: case ENVOY_RUNNING: break; case ENVOY_FAILED: warnx("agent failed to start, check envoyd's log"); case ENVOY_BADUSER: warnx("connection rejected, user is unauthorized to use this agent"); } if (data.type == AGENT_GPG_AGENT) { _cleanup_gpg_ struct gpg_t *agent = gpg_agent_connection(data.gpg, NULL); gpg_update_tty(agent); } if (data.gpg[0]) { putenvf("GPG_AGENT_INFO=%s", data.gpg); } else { unsetenv("GPG_AGENT_INFO"); } putenvf("SSH_AUTH_SOCK=%s", data.sock); }
static void source_env(struct agent_data_t *data) { if (data->type == AGENT_GPG_AGENT) { _cleanup_gpg_ struct gpg_t *agent = gpg_agent_connection(data->gpg); if (!agent) warn("failed to connect to GPG_AUTH_SOCK"); else gpg_update_tty(agent); } putenvf("SSH_AUTH_SOCK=%s", data->sock); }