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; }
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); }
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); }
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); }
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; }