Lines Matching refs:info
31 static bool parse_gids(const char* path, size_t line_number, const char* gids, pkg_info* info) { in parse_gids() argument
36 info->gids.cnt = 1; in parse_gids()
38 if (*p == ',') ++info->gids.cnt; in parse_gids()
42 info->gids.gids = new gid_t[info->gids.cnt]; in parse_gids()
43 if (!info->gids.gids) return false; in parse_gids()
55 if (i >= info->gids.cnt) return false; in parse_gids()
56 info->gids.gids[i++] = gid; in parse_gids()
65 static bool parse_line(const char* path, size_t line_number, const char* line, pkg_info* info) { in parse_line() argument
72 sscanf(line, "%ms %lu %d %ms %ms %ms %d %ld", &info->name, &uid, &debuggable, &info->data_dir, in parse_line()
73 &info->seinfo, &gid_list, &profileable_from_shell, &info->version_code); in parse_line()
76 bool gids_okay = parse_gids(path, line_number, gid_list, info); in parse_line()
92 info->uid = uid; in parse_line()
95 info->debuggable = debuggable; in parse_line()
96 info->profileable_from_shell = profileable_from_shell; in parse_line()
113 std::unique_ptr<pkg_info, decltype(&packagelist_free)> info( in packagelist_parse_file() local
115 if (!info) { in packagelist_parse_file()
120 if (!parse_line(path, line_number, line, info.get())) return false; in packagelist_parse_file()
122 if (!callback(info.release(), user_data)) break; in packagelist_parse_file()
132 void packagelist_free(pkg_info* info) { in packagelist_free() argument
133 if (!info) return; in packagelist_free()
135 free(info->name); in packagelist_free()
136 free(info->data_dir); in packagelist_free()
137 free(info->seinfo); in packagelist_free()
138 delete[] info->gids.gids; in packagelist_free()
139 free(info); in packagelist_free()