Browse Source

add support for multipl types in one line

debian/1.8.y
Michael Vogt 9 years ago
parent
commit
7f316a3fea
  1. 25
      apt-pkg/sourcelist.cc
  2. 8
      doc/sources.list.5.xml
  3. 13
      test/integration/test-apt-sources-deb822
  4. 8
      test/libapt/sourcelist_test.cc

25
apt-pkg/sourcelist.cc

@ -387,21 +387,26 @@ int pkgSourceList::ParseFileDeb822(string File)
// read step by step
while (Sources.Step(Tags) == true)
{
if(!Tags.Exists("Type"))
if(!Tags.Exists("Types"))
continue;
string const type = Tags.FindS("Type");
Type *Parse = Type::GetType(type.c_str());
if (Parse == 0)
string const types = Tags.FindS("Types");
std::vector<std::string> list_types = StringSplit(types, " ");
for (std::vector<std::string>::const_iterator I = list_types.begin();
I != list_types.end(); I++)
{
_error->Error(_("Type '%s' is not known on stanza %u in source list %s"),type.c_str(),i,Fd.Name().c_str());
return -1;
}
Type *Parse = Type::GetType((*I).c_str());
if (Parse == 0)
{
_error->Error(_("Type '%s' is not known on stanza %u in source list %s"), (*I).c_str(),i,Fd.Name().c_str());
return -1;
}
if (!Parse->ParseStanza(SrcList, Tags, i, Fd))
return -1;
if (!Parse->ParseStanza(SrcList, Tags, i, Fd))
return -1;
i++;
i++;
}
}
// we are done, return the number of stanzas read

8
doc/sources.list.5.xml

@ -83,7 +83,7 @@
<para>Alternatively a rfc822 style format is also supported:
<literallayout>
Type: deb
Types: deb deb-src
URIs: http://example.com
Suites: stable testing
Sections: component1 component2
@ -91,9 +91,9 @@
long long long
[option1]: [option1-value]
Type: deb-src
URIs: http://example.com
Suites: stable
Types: deb
URIs: http://another.example.com
Suites: experimental
Sections: component1 component2
Enabled: no
Description: short

13
test/integration/test-apt-sources-deb822

@ -17,9 +17,9 @@ testequalwithmsg "Old style sources.list works" "'http://ftp.debian.org/debian/d
BASE="# some comment
# that contains a : as well
#Type: meep
#Types: meep
Type: deb
Types: deb
URIs: http://ftp.debian.org/debian
Suites: stable
Sections: main
@ -68,7 +68,7 @@ echo "deb http://ftp.debian.org" > $SOURCES
testequalwithmsg "Invalid sources.list file gives proper error" "E: Malformed line 1 in source list $TMPWORKINGDIRECTORY/rootdir/etc/apt/sources.list (dist)
E: The list of sources could not be read." aptget update --print-uris
echo "Type: deb
echo "Types: deb
Suites: stable
" > $SOURCES
@ -88,3 +88,10 @@ testequalwithmsg "Multiple URIs work" "'http://ftp.de.debian.org/debian/dists/st
'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.bz2' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0 :
'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.bz2' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 :
'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0 " aptget update --print-uris
# multiple Type in one field
echo "$BASE" | sed -e 's#Types: deb#Types: deb deb-src#' > $SOURCES
testequalwithmsg "Multiple Types work" "'http://ftp.debian.org/debian/dists/stable/main/source/Sources.bz2' ftp.debian.org_debian_dists_stable_main_source_Sources 0 :
'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.bz2' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0 :
'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.bz2' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 :
'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0 " aptget update --print-uris

8
test/libapt/sourcelist_test.cc

@ -22,17 +22,17 @@ void remove_tmpfile(void)
int main(int argc, char *argv[])
{
const char contents[] = ""
"Type: deb\n"
"Types: deb\n"
"URIs: http://ftp.debian.org/debian\n"
"Suites: stable\n"
"Sections: main\n"
"Description: short\n"
" long description that can be very long\n"
"\n"
"Type: deb\n"
"Types: deb\n"
"URIs: http://ftp.debian.org/debian\n"
"Suite: unstable\n"
"Section: main non-free\n"
"Suites: unstable\n"
"Sections: main non-free\n"
;
FileFd fd;

Loading…
Cancel
Save