Example #1
0
static int fillwaitedstates(const char *strstates, int *states)
{
	char *token, *saveptr = NULL;
	char *strstates_dup = strdup(strstates);
	int state;

	if (!strstates_dup)
		return -1;

	token = strtok_r(strstates_dup, "|", &saveptr);
	while (token) {

		state = lxc_str2state(token);
		if (state < 0) {
			free(strstates_dup);
			return -1;
		}

		states[state] = 1;

		token = strtok_r(NULL, "|", &saveptr);
	}
	free(strstates_dup);
	return 0;
}
Example #2
0
static int freezer_state(const char *name)
{
	char *nsgroup;
	char freezer[MAXPATHLEN];
	char status[MAXPATHLEN];
	FILE *file;
	int err;

	err = lxc_cgroup_path_get(&nsgroup, "freezer", name);
	if (err)
		return -1;

	err = snprintf(freezer, MAXPATHLEN, "%s/freezer.state", nsgroup);
	if (err < 0 || err >= MAXPATHLEN)
		return -1;

	file = fopen(freezer, "r");
	if (!file)
		return -1;

	err = fscanf(file, "%s", status);
	fclose(file);

	if (err == EOF) {
		SYSERROR("failed to read %s", freezer);
		return -1;
	}

	return lxc_str2state(status);
}
Example #3
0
File: freezer.c Project: NiR-/lxc
lxc_state_t freezer_state(const char *name, const char *lxcpath)
{
    char v[100];
    if (lxc_cgroup_get("freezer.state", v, 100, name, lxcpath) < 0)
        return -1;

    if (v[strlen(v)-1] == '\n')
        v[strlen(v)-1] = '\0';
    return lxc_str2state(v);
}
Example #4
0
File: freezer.c Project: hallyn/lxc
lxc_state_t freezer_state(const char *name, const char *lxcpath)
{
	int ret;
	char v[100];

	ret = lxc_cgroup_get("freezer.state", v, sizeof(v), name, lxcpath);
	if (ret < 0)
		return -1;

	v[99] = '\0';
	v[lxc_char_right_gc(v, strlen(v))] = '\0';

	return lxc_str2state(v);
}
Example #5
0
static lxc_state_t freezer_state(const char *name, const char *lxcpath)
{
	char *cgabspath = NULL;
	char freezer[MAXPATHLEN];
	char status[MAXPATHLEN];
	FILE *file;
	int ret;

	cgabspath = lxc_cgroup_get_hierarchy_abs_path("freezer", name, lxcpath);
	if (!cgabspath)
		return -1;

	ret = snprintf(freezer, MAXPATHLEN, "%s/freezer.state", cgabspath);
	if (ret < 0 || ret >= MAXPATHLEN)
		goto out;

	process_lock();
	file = fopen(freezer, "r");
	process_unlock();
	if (!file) {
		ret = -1;
		goto out;
	}

	ret = fscanf(file, "%s", status);
	process_lock();
	fclose(file);
	process_unlock();

	if (ret == EOF) {
		SYSERROR("failed to read %s", freezer);
		ret = -1;
		goto out;
	}

	ret = lxc_str2state(status);

out:
	free(cgabspath);
	return ret;
}