APT doesn't mind a repository with either "/" or "./" as suite/distribution,
such as
deb https://example.com/debian ./
in that case, the 'dists' part of the URL and the trailing slash (which would
be encoded as '_') is dropped in the file name in '/var/lib/apt/lists/'.
Other suite values with a trailing or leading '/' are rejected with an error by APT:
E: Malformed entry 1 in sources file /etc/apt/sources.list.d/test.list (absolute Suite Component)
E: The list of sources could not be read.
so this should be the only special case requiring handling.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
let encoded_uri = uri_to_filename(uri);
let filename = if detached { "Release" } else { "InRelease" };
- path.push(format!(
- "{}_dists_{}_{}",
- encoded_uri,
- suite.replace('/', "_"), // e.g. for buster/updates
- filename,
- ));
+ if suite == "/" {
+ path.push(format!("{encoded_uri}_{filename}"));
+ } else if suite == "./" {
+ path.push(format!("{encoded_uri}_._{filename}"));
+ } else {
+ path.push(format!(
+ "{}_dists_{}_{}",
+ encoded_uri,
+ suite.replace('/', "_"), // e.g. for buster/updates
+ filename,
+ ));
+ }
path
}