void tinto_deinit (void) { cleanup_systray (); cleanup_tooltip (); cleanup_clock (); launcher_deinit (); #ifdef ENABLE_BATTERY cleanup_battery (); #endif panel_cleanup (); cleanup_config (); if (default_icon) { imlib_context_set_image (default_icon); imlib_free_image (); default_icon = NULL; } imlib_context_disconnect_display (); cleanup_server (); cleanup_timeout (); if (server.dsp) XCloseDisplay (server.dsp); server.dsp = NULL; }
static int policy_local_create(struct connman_session *session, connman_session_config_func_t cb, void *user_data) { struct cb_data *cbd = cb_data_new(cb, user_data); struct policy_config *policy; const char *owner; int err; DBG("session %p", session); policy = g_new0(struct policy_config, 1); policy->config = connman_session_create_default_config(); policy->session = session; cbd->data = policy; owner = connman_session_get_owner(session); err = connman_dbus_get_connection_unix_user(connection, owner, get_uid_reply, cbd); if (err < 0) { connman_error("Could not get UID"); cleanup_config(policy); g_free(cbd); return err; } return 0; }
static void failed_create(struct policy_config *policy, connman_session_config_func_t cb, void *user_data, int err) { (*cb)(policy->session, NULL, user_data, err); cleanup_config(policy); }
int main(int argc, char *argv[]) { int err = 0; struct config cfg; double *values = NULL; err = init_config(&cfg, argc, argv); if (err < 0) goto out; err = a4l_wf_check_config(&cfg.wf); if (err < 0) goto out; a4l_wf_set_sample_count(&cfg.wf); if (cfg.verbose) { char *types[] = {"sine", "sawtooth", "triangular", "steps"}; fprintf(stderr, "Waveform type: %s\n", types[cfg.wf.wf_kind]); fprintf(stderr, "Amplitude: %F\n", cfg.wf.wf_amplitude); fprintf(stderr, "Frequency: %F\n", cfg.wf.wf_frequency); fprintf(stderr, "Offset: %F\n", cfg.wf.wf_offset); fprintf(stderr, "Sampling frequency: %F\n", cfg.wf.spl_frequency); fprintf(stderr, "Samples count: %d\n", cfg.wf.spl_count); fprintf(stderr, "Output file: %s\n", cfg.filename); } values = malloc(cfg.wf.spl_count * sizeof(double)); if (!values) { err = -ENOMEM; fprintf(stderr, "Error: values allocations failed\n"); goto out; } a4l_wf_init_values(&cfg.wf, values); err = fwrite(values, sizeof(double), cfg.wf.spl_count, cfg.output); if (err != cfg.wf.spl_count) { err = -errno; perror("Error: output file write: )"); goto out; } if (cfg.verbose) { int i; fprintf(stderr, "Dumping values:\n"); for (i = 0; i < cfg.wf.spl_count; i++) fprintf(stderr, "[%d]: %F\n", i, values[i]); } out: cleanup_config(&cfg); return err; }
void cleanup() { cleanup_systray(); cleanup_tooltip(); cleanup_clock(); cleanup_launcher(); #ifdef ENABLE_BATTERY cleanup_battery(); #endif cleanup_panel(); cleanup_config(); if (default_icon) { imlib_context_set_image(default_icon); imlib_free_image(); } imlib_context_disconnect_display(); cleanup_server(); cleanup_timeout(); if (server.dsp) XCloseDisplay(server.dsp); }
static int init_config(struct config *cfg, int argc, char *argv[]) { int err = 0; memset(cfg, 0, sizeof(struct config)); cfg->wf.wf_kind = WAVEFORM_SINE; cfg->wf.wf_frequency = 500.0; cfg->wf.wf_amplitude = 1.0; cfg->wf.wf_offset = 0.0; cfg->wf.spl_frequency = 1000.0; cfg->wf.spl_count = 0; while ((err = getopt_long(argc, argv, "vt:f:a:o:s:O:h", opts, NULL)) >= 0) { switch (err) { case 'v': cfg->verbose = 1; break; case 't': err = select_type(&cfg->wf, optarg); if (err < 0) goto out; break; case 'f': errno = 0; cfg->wf.wf_frequency = strtod(optarg, NULL); if (errno) { err = -errno; goto bad_conversion; } break; case 'a': errno = 0; cfg->wf.wf_amplitude = strtod(optarg, NULL); if (errno) { err = -errno; goto bad_conversion; } break; case 'o': errno = 0; cfg->wf.wf_offset = strtod(optarg, NULL); if (errno) { err = -errno; goto bad_conversion; } break; case 's': errno = 0; cfg->wf.spl_frequency = strtod(optarg, NULL); if (errno) { err = -errno; goto bad_conversion; } break; case 'O': cfg->filename = optarg; break; case 'h': default: err = -EINVAL; do_print_usage(); goto out; } } err = 0; if (cfg->filename != NULL) { cfg->output = fopen(cfg->filename, "w"); if (cfg->output == NULL) { err = -errno; fprintf(stderr, "%s: %s\n", cfg->filename, strerror(errno)); goto out; } } else { cfg->output = stdout; cfg->filename = "stdout"; } if (isatty(fileno(cfg->output))) { err = -EINVAL; fprintf(stderr, "Error: output terminals are not allowed (%s)\n", cfg->filename); goto out; } out: if (err < 0) cleanup_config(cfg); return err; bad_conversion: fprintf(stderr, "Error: bad option(s) value(s)\n"); do_print_usage(); return err; }
static void get_uid_reply(unsigned int uid, void *user_data, int err) { struct cb_data *cbd = user_data; connman_session_config_func_t cb = cbd->cb; struct policy_config *policy = cbd->data; const char *owner; struct passwd *pwd; struct group *grp; gid_t *groups = NULL; int nrgroups, i; DBG("session %p uid %d", policy->session, uid); if (err < 0) { cleanup_config(policy); goto err; } pwd = getpwuid((uid_t)uid); if (!pwd) { if (errno != 0) err = -errno; else err = -EINVAL; goto err; } policy->uid = g_strdup(pwd->pw_name); nrgroups = 0; getgrouplist(pwd->pw_name, pwd->pw_gid, NULL, &nrgroups); groups = g_try_new0(gid_t, nrgroups); if (!groups) { err = -ENOMEM; goto err; } err = getgrouplist(pwd->pw_name, pwd->pw_gid, groups, &nrgroups); if (err < 0) goto err; for (i = 0; i < nrgroups; i++) { grp = getgrgid(groups[i]); if (!grp) { if (errno != 0) err = -errno; else err = -EINVAL; goto err; } policy->gids = g_slist_prepend(policy->gids, g_strdup(grp->gr_name)); } g_free(groups); owner = connman_session_get_owner(policy->session); err = connman_dbus_get_selinux_context(connection, owner, selinux_context_reply, cbd); if (err == 0) { /* * We are able to ask for a SELinux context. Let's defer the * creation of the session config until we get the answer * from D-Bus. */ return; } finish_create(policy, cb, cbd->user_data); g_free(cbd); return; err: failed_create(NULL, cb, cbd->user_data, err); g_free(cbd); g_free(groups); }