Lines Matching full:env
47 void main_configure_client(struct env *);
49 void main_start_update(struct env *);
50 void main_trash_update(struct env *);
51 void main_end_update(struct env *);
52 int main_create_user_groups(struct env *);
53 void purge_config(struct env *);
126 main_start_update(struct env *env)
128 env->update_trashed = 0;
131 env->sc_user_line_len = 0;
132 env->sc_group_line_len = 0;
133 if ((env->sc_user_names_t = calloc(1,
134 sizeof(*env->sc_user_names_t))) == NULL ||
135 (env->sc_group_names_t = calloc(1,
136 sizeof(*env->sc_group_names_t))) == NULL)
138 RB_INIT(env->sc_user_names_t);
139 RB_INIT(env->sc_group_names_t);
148 main_trash_update(struct env *env)
153 env->update_trashed = 1;
155 while ((ue = RB_ROOT(env->sc_user_names_t)) != NULL) {
157 env->sc_user_names_t, ue);
162 free(env->sc_user_names_t);
163 env->sc_user_names_t = NULL;
164 while ((ge = RB_ROOT(env->sc_group_names_t))
167 env->sc_group_names_t, ge);
171 free(env->sc_group_names_t);
172 env->sc_group_names_t = NULL;
176 main_create_user_groups(struct env *env)
187 RB_FOREACH(ue, user_name_tree, env->sc_user_names_t) {
224 RB_FOREACH(ge, group_name_tree, env->sc_group_names_t) {
244 if ((ue = RB_FIND(user_name_tree, env->sc_user_names_t,
274 main_end_update(struct env *env)
279 if (env->update_trashed)
284 if (main_create_user_groups(env) == -1) {
285 main_trash_update(env);
289 if (env->sc_user_names == NULL) {
290 env->sc_user_names = env->sc_user_names_t;
291 env->sc_user_lines = NULL;
292 env->sc_user_names_t = NULL;
294 env->sc_group_names = env->sc_group_names_t;
295 env->sc_group_lines = NULL;
296 env->sc_group_names_t = NULL;
298 flatten_entries(env);
305 while ((ue = RB_ROOT(env->sc_user_names)) != NULL) {
306 RB_REMOVE(user_name_tree, env->sc_user_names,
311 free(env->sc_user_names);
312 free(env->sc_user_lines);
314 env->sc_user_names = env->sc_user_names_t;
315 env->sc_user_lines = NULL;
316 env->sc_user_names_t = NULL;
318 while ((ge = RB_ROOT(env->sc_group_names)) != NULL) {
320 env->sc_group_names, ge);
323 free(env->sc_group_names);
324 free(env->sc_group_lines);
326 env->sc_group_names = env->sc_group_names_t;
327 env->sc_group_lines = NULL;
328 env->sc_group_names_t = NULL;
331 flatten_entries(env);
338 RB_INIT(&env->sc_user_uids);
339 RB_INIT(&env->sc_group_gids);
340 RB_FOREACH(ue, user_name_tree, env->sc_user_names)
342 &env->sc_user_uids, ue);
343 RB_FOREACH(ge, group_name_tree, env->sc_group_names)
345 &env->sc_group_gids, ge);
354 struct env *env = p;
355 struct imsgev *iev = env->sc_iev;
386 main_start_update(env);
392 if (env->update_trashed)
406 if (RB_INSERT(user_name_tree, env->sc_user_names_t,
411 env->sc_user_line_len += len;
418 if (env->update_trashed)
432 if (RB_INSERT(group_name_tree, env->sc_group_names_t,
437 env->sc_group_line_len += len;
441 main_trash_update(env);
444 main_end_update(env);
465 main_configure_client(struct env *env)
468 struct imsgev *iev = env->sc_iev;
470 imsg_compose_event(iev, IMSG_CONF_START, 0, 0, -1, env, sizeof(*env));
471 TAILQ_FOREACH(idm, &env->sc_idms, idm_entry) {
481 struct env *env = p;
483 main_configure_client(env);
487 purge_config(struct env *env)
491 while ((idm = TAILQ_FIRST(&env->sc_idms)) != NULL) {
492 TAILQ_REMOVE(&env->sc_idms, idm, idm_entry);
503 struct env env;
549 RB_INIT(&env.sc_user_uids);
550 RB_INIT(&env.sc_group_gids);
552 if (parse_config(&env, conffile, opts))
580 signal_set(&ev_sigint, SIGINT, main_sig_handler, &env);
581 signal_set(&ev_sigterm, SIGTERM, main_sig_handler, &env);
582 signal_set(&ev_sighup, SIGHUP, main_sig_handler, &env);
583 signal_set(&ev_sigchld, SIGCHLD, main_sig_handler, &env);
590 if ((env.sc_iev = calloc(1, sizeof(*env.sc_iev))) == NULL)
592 if (imsgbuf_init(&env.sc_iev->ibuf, pipe_main2client[0]) == -1)
594 env.sc_iev->handler = main_dispatch_client;
596 env.sc_iev->events = EV_READ;
597 env.sc_iev->data = &env;
598 event_set(&env.sc_iev->ev, env.sc_iev->ibuf.fd, env.sc_iev->events,
599 env.sc_iev->handler, &env);
600 event_add(&env.sc_iev->ev, NULL);
602 yp_init(&env);
620 evtimer_set(&ev_timer, main_init_timer, &env);