コード例 #1
0
ファイル: tinto.c プロジェクト: chigoncalves/tinto
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;
}
コード例 #2
0
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;
}
コード例 #3
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);
}
コード例 #4
0
ファイル: wf_generate.c プロジェクト: ChunHungLiu/xenomai
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;
}
コード例 #5
0
ファイル: tinto.c プロジェクト: roomcays/tinto-panel
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);
}
コード例 #6
0
ファイル: wf_generate.c プロジェクト: ChunHungLiu/xenomai
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;
}
コード例 #7
0
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);
}