uid-range: optimize to load uid_map file

If uid_map contains many lines, then the previous logic takes O(n^2 log n),
This makes O(n log n).
This commit is contained in:
Yu Watanabe
2022-09-16 20:52:36 +09:00
parent b5739767da
commit f6c13f9f95
2 changed files with 27 additions and 36 deletions
+4 -1
View File
@@ -8,7 +8,10 @@ typedef struct UidRange {
uid_t start, nr;
} UidRange;
int uid_range_add(UidRange **p, size_t *n, uid_t start, uid_t nr);
int uid_range_add_internal(UidRange **p, size_t *n, uid_t start, uid_t nr, bool coalesce);
static inline int uid_range_add(UidRange **p, size_t *n, uid_t start, uid_t nr) {
return uid_range_add_internal(p, n, start, nr, true);
}
int uid_range_add_str(UidRange **p, size_t *n, const char *s);
int uid_range_next_lower(const UidRange *p, size_t n, uid_t *uid);