Res += 10;
if (Path.find("/debian/") != string::npos)
Res -= 10;
+
+ // check for symlinks in the patch leading to the actual file
+ // a symlink gets a big penalty
+ struct stat Buf;
+ string statPath = flNotFile(Path);
+ string cdromPath = _config->FindDir("Acquire::cdrom::mount","/cdrom/");
+ while(statPath != cdromPath && statPath != "./") {
+ statPath.resize(statPath.size()-1); // remove the trailing '/'
+ if (lstat(statPath.c_str(),&Buf) == 0) {
+ if(S_ISLNK(Buf.st_mode)) {
+ Res -= 60;
+ break;
+ }
+ }
+ statPath = flNotFile(statPath); // descent
+ }
+
return Res;
}
}
if(log) {
msg.str("");
- ioprintf(msg, _("Stored Label: %s \n"),
+ ioprintf(msg, _("Stored label: %s \n"),
Database.Find("CD::"+ident).c_str());
log->Update(msg.str());
}
log->Update("["+ID+"]\n");
if(log)
- log->Update(_("Scanning Disc for index files..\n"),STEP_SCAN);
+ log->Update(_("Scanning disc for index files..\n"),STEP_SCAN);
// Get the CD structure
vector<string> List;
Database.Set("CD::" + ID,Name);
if(log) {
msg.str("");
- ioprintf(msg, _("This Disc is called: \n'%s'\n"), Name.c_str());
+ ioprintf(msg, _("This disc is called: \n'%s'\n"), Name.c_str());
log->Update(msg.str());
}
// Print the sourcelist entries
if(log)
- log->Update(_("Source List entries for this Disc are:\n"));
+ log->Update(_("Source list entries for this disc are:\n"));
for (vector<string>::iterator I = List.begin(); I != List.end(); I++)
{