Lines Matching full:env
49 void main_configure_client(struct env *);
51 void main_start_update(struct env *);
52 void main_trash_update(struct env *);
53 void main_end_update(struct env *);
54 int main_create_user_groups(struct env *);
55 void purge_config(struct env *);
56 void reconfigure(struct env *);
127 main_start_update(struct env *env) in main_start_update() argument
129 env->update_trashed = 0; in main_start_update()
132 env->sc_user_line_len = 0; in main_start_update()
133 env->sc_group_line_len = 0; in main_start_update()
134 if ((env->sc_user_names_t = calloc(1, in main_start_update()
135 sizeof(*env->sc_user_names_t))) == NULL || in main_start_update()
136 (env->sc_group_names_t = calloc(1, in main_start_update()
137 sizeof(*env->sc_group_names_t))) == NULL) in main_start_update()
139 RB_INIT(env->sc_user_names_t); in main_start_update()
140 RB_INIT(env->sc_group_names_t); in main_start_update()
149 main_trash_update(struct env *env) in main_trash_update() argument
154 env->update_trashed = 1; in main_trash_update()
156 while ((ue = RB_ROOT(env->sc_user_names_t)) != NULL) { in main_trash_update()
158 env->sc_user_names_t, ue); in main_trash_update()
163 free(env->sc_user_names_t); in main_trash_update()
164 env->sc_user_names_t = NULL; in main_trash_update()
165 while ((ge = RB_ROOT(env->sc_group_names_t)) in main_trash_update()
168 env->sc_group_names_t, ge); in main_trash_update()
172 free(env->sc_group_names_t); in main_trash_update()
173 env->sc_group_names_t = NULL; in main_trash_update()
177 main_create_user_groups(struct env *env) in main_create_user_groups() argument
188 RB_FOREACH(ue, user_name_tree, env->sc_user_names_t) { in main_create_user_groups()
224 RB_FOREACH(ge, group_name_tree, env->sc_group_names_t) { in main_create_user_groups()
244 if ((ue = RB_FIND(user_name_tree, env->sc_user_names_t, in main_create_user_groups()
274 main_end_update(struct env *env) in main_end_update() argument
279 if (env->update_trashed) in main_end_update()
284 if (main_create_user_groups(env) == -1) { in main_end_update()
285 main_trash_update(env); in main_end_update()
289 if (env->sc_user_names == NULL) { in main_end_update()
290 env->sc_user_names = env->sc_user_names_t; in main_end_update()
291 env->sc_user_lines = NULL; in main_end_update()
292 env->sc_user_names_t = NULL; in main_end_update()
294 env->sc_group_names = env->sc_group_names_t; in main_end_update()
295 env->sc_group_lines = NULL; in main_end_update()
296 env->sc_group_names_t = NULL; in main_end_update()
298 flatten_entries(env); in main_end_update()
305 while ((ue = RB_ROOT(env->sc_user_names)) != NULL) { in main_end_update()
306 RB_REMOVE(user_name_tree, env->sc_user_names, in main_end_update()
311 free(env->sc_user_names); in main_end_update()
312 free(env->sc_user_lines); in main_end_update()
314 env->sc_user_names = env->sc_user_names_t; in main_end_update()
315 env->sc_user_lines = NULL; in main_end_update()
316 env->sc_user_names_t = NULL; in main_end_update()
318 while ((ge = RB_ROOT(env->sc_group_names)) != NULL) { in main_end_update()
320 env->sc_group_names, ge); in main_end_update()
323 free(env->sc_group_names); in main_end_update()
324 free(env->sc_group_lines); in main_end_update()
326 env->sc_group_names = env->sc_group_names_t; in main_end_update()
327 env->sc_group_lines = NULL; in main_end_update()
328 env->sc_group_names_t = NULL; in main_end_update()
331 flatten_entries(env); in main_end_update()
338 RB_INIT(&env->sc_user_uids); in main_end_update()
339 RB_INIT(&env->sc_group_gids); in main_end_update()
340 RB_FOREACH(ue, user_name_tree, env->sc_user_names) in main_end_update()
342 &env->sc_user_uids, ue); in main_end_update()
343 RB_FOREACH(ge, group_name_tree, env->sc_group_names) in main_end_update()
345 &env->sc_group_gids, ge); in main_end_update()
354 struct env *env = p; in main_dispatch_client() local
355 struct imsgev *iev = env->sc_iev; in main_dispatch_client()
385 main_start_update(env); in main_dispatch_client()
391 if (env->update_trashed) in main_dispatch_client()
405 if (RB_INSERT(user_name_tree, env->sc_user_names_t, in main_dispatch_client()
410 env->sc_user_line_len += len; in main_dispatch_client()
417 if (env->update_trashed) in main_dispatch_client()
431 if (RB_INSERT(group_name_tree, env->sc_group_names_t, in main_dispatch_client()
436 env->sc_group_line_len += len; in main_dispatch_client()
440 main_trash_update(env); in main_dispatch_client()
443 main_end_update(env); in main_dispatch_client()
465 main_configure_client(struct env *env) in main_configure_client() argument
468 struct imsgev *iev = env->sc_iev; in main_configure_client()
470 imsg_compose_event(iev, IMSG_CONF_START, 0, 0, -1, env, sizeof(*env)); in main_configure_client()
471 TAILQ_FOREACH(idm, &env->sc_idms, idm_entry) { in main_configure_client()
481 struct env *env = p; in main_init_timer() local
483 main_configure_client(env); in main_init_timer()
487 purge_config(struct env *env) in purge_config() argument
491 while ((idm = TAILQ_FIRST(&env->sc_idms)) != NULL) { in purge_config()
492 TAILQ_REMOVE(&env->sc_idms, idm, idm_entry); in purge_config()
503 struct env env; in main() local
547 RB_INIT(&env.sc_user_uids); in main()
548 RB_INIT(&env.sc_group_gids); in main()
550 if (parse_config(&env, conffile, opts)) in main()
578 signal_set(&ev_sigint, SIGINT, main_sig_handler, &env); in main()
579 signal_set(&ev_sigterm, SIGTERM, main_sig_handler, &env); in main()
580 signal_set(&ev_sighup, SIGHUP, main_sig_handler, &env); in main()
581 signal_set(&ev_sigchld, SIGCHLD, main_sig_handler, &env); in main()
588 if ((env.sc_iev = calloc(1, sizeof(*env.sc_iev))) == NULL) in main()
590 imsg_init(&env.sc_iev->ibuf, pipe_main2client[0]); in main()
591 env.sc_iev->handler = main_dispatch_client; in main()
593 env.sc_iev->events = EV_READ; in main()
594 env.sc_iev->data = &env; in main()
595 event_set(&env.sc_iev->ev, env.sc_iev->ibuf.fd, env.sc_iev->events, in main()
596 env.sc_iev->handler, &env); in main()
597 event_add(&env.sc_iev->ev, NULL); in main()
599 yp_init(&env); in main()
614 evtimer_set(&ev_timer, main_init_timer, &env); in main()