#include <apt-pkg/strutl.h>
#include <apt-pkg/fileutl.h>
#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/tagfile.h>
#include <apti18n.h>
#include <unistd.h>
#include <errno.h>
#include <string>
+#include <sstream>
#include <stdio.h>
/*}}}*/
}
/*}}}*/
+
+// AcqDiffIndex::AcqDiffIndex - Constructor
+// ---------------------------------------------------------------------
+/* Get the DiffIndex file first and see if there are patches availabe
+ * If so, create a pkgAcqIndexDiffs fetcher that will get and apply the
+ * patches. If anything goes wrong in that process, it will fall back to
+ * the original packages file
+ */
+pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner,
+ string URI,string URIDesc,string ShortDesc,
+ string ExpectedMD5)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5), Description(URIDesc)
+{
+
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ Desc.Description = URIDesc + "/DiffIndex";
+ Desc.Owner = this;
+ Desc.ShortDesc = ShortDesc;
+ Desc.URI = URI + ".diff/Index";
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(URI) + string(".DiffIndex");
+
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex: " << Desc.URI << std::endl;
+
+ // look for the current package file
+ CurrentPackagesFile = _config->FindDir("Dir::State::lists");
+ CurrentPackagesFile += URItoFileName(RealURI);
+
+ if(!FileExists(CurrentPackagesFile) ||
+ !_config->FindB("Acquire::Diffs",true)) {
+ // we don't have a pkg file or we don't want to queue
+ if(Debug)
+ std::clog << "No index file or canceld by user" << std::endl;
+ Failed("", NULL);
+ return;
+ }
+
+ if(Debug) {
+ std::clog << "pkgAcqIndexDiffs::pkgAcqIndexDiffs(): "
+ << CurrentPackagesFile << std::endl;
+ }
+
+ QueueURI(Desc);
+
+}
+
+// AcqIndex::Custom600Headers - Insert custom request headers /*{{{*/
+// ---------------------------------------------------------------------
+/* The only header we use is the last-modified header. */
+string pkgAcqDiffIndex::Custom600Headers()
+{
+ string Final = _config->FindDir("Dir::State::lists");
+ Final += URItoFileName(RealURI) + string(".IndexDiff");
+
+ if(Debug)
+ std::clog << "Custom600Header-IMS: " << Final << std::endl;
+
+ struct stat Buf;
+ if (stat(Final.c_str(),&Buf) != 0)
+ return "\nIndex-File: true";
+
+ return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
+}
+
+
+bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::ParseIndexDiff() " << IndexDiffFile
+ << std::endl;
+
+ pkgTagSection Tags;
+ string ServerSha1;
+ vector<DiffInfo> available_patches;
+
+ FileFd Fd(IndexDiffFile,FileFd::ReadOnly);
+ pkgTagFile TF(&Fd);
+ if (_error->PendingError() == true)
+ return false;
+
+ if(TF.Step(Tags) == true)
+ {
+ string local_sha1;
+ bool found = false;
+ DiffInfo d;
+ string size;
+
+ string tmp = Tags.FindS("SHA1-Current");
+ std::stringstream ss(tmp);
+ ss >> ServerSha1;
+
+ FileFd fd(CurrentPackagesFile, FileFd::ReadOnly);
+ SHA1Summation SHA1;
+ SHA1.AddFD(fd.Fd(), fd.Size());
+ local_sha1 = string(SHA1.Result());
+
+ if(local_sha1 == ServerSha1) {
+ if(Debug)
+ std::clog << "Package file is up-to-date" << std::endl;
+ // set found to true, this will queue a pkgAcqIndexDiffs with
+ // a empty availabe_patches
+ found = true;
+ } else {
+ if(Debug)
+ std::clog << "SHA1-Current: " << ServerSha1 << std::endl;
+
+ // check the historie and see what patches we need
+ string history = Tags.FindS("SHA1-History");
+ std::stringstream hist(history);
+ while(hist >> d.sha1 >> size >> d.file) {
+ d.size = atoi(size.c_str());
+ // read until the first match is found
+ if(d.sha1 == local_sha1)
+ found=true;
+ // from that point on, we probably need all diffs
+ if(found) {
+ if(Debug)
+ std::clog << "Need to get diff: " << d.file << std::endl;
+ available_patches.push_back(d);
+ }
+ }
+ }
+
+ // no information how to get the patches, bail out
+ if(!found) {
+ if(Debug)
+ std::clog << "Can't find a patch in the index file" << std::endl;
+ // Failed will queue a big package file
+ Failed("", NULL);
+ } else {
+ // queue the diffs
+ new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5, available_patches);
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << std::endl
+ << "Falling back to normal index file aquire" << std::endl;
+
+ new pkgAcqIndex(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5);
+
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+}
+
+void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message,Size,Md5Hash,Cnf);
+
+ string FinalFile;
+ FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
+
+ // sucess in downloading the index
+ // rename the index
+ FinalFile += string(".IndexDiff");
+ if(Debug)
+ std::clog << "Renaming: " << DestFile << " -> " << FinalFile
+ << std::endl;
+ Rename(DestFile,FinalFile);
+ chmod(FinalFile.c_str(),0644);
+ DestFile = FinalFile;
+
+ if(!ParseDiffIndex(DestFile))
+ return Failed("", NULL);
+
+ Complete = true;
+ Status = StatDone;
+ Dequeue();
+ return;
+}
+
+
+
+// AcqIndexDiffs::AcqIndexDiffs - Constructor
+// ---------------------------------------------------------------------
+/* The package diff is added to the queue. one object is constructed
+ * for each diff and the index
+ */
+pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner,
+ string URI,string URIDesc,string ShortDesc,
+ string ExpectedMD5, vector<DiffInfo> diffs)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5),
+ available_patches(diffs)
+{
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(URI);
+
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ Desc.Description = URIDesc;
+ Desc.Owner = this;
+ Desc.ShortDesc = ShortDesc;
+
+ if(available_patches.size() == 0) {
+ // we are done (yeah!)
+ Finish(true);
+ } else {
+ // get the next diff
+ State = StateFetchDiff;
+ QueueNextDiff();
+ }
+}
+
+
+void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl
+ << "Falling back to normal index file aquire" << std::endl;
+ new pkgAcqIndex(Owner, RealURI, Description,Desc.ShortDesc,
+ ExpectedMD5);
+ Finish();
+}
+
+
+// helper that cleans the item out of the fetcher queue
+void pkgAcqIndexDiffs::Finish(bool allDone)
+{
+ // we restore the original name, this is required, otherwise
+ // the file will be cleaned
+ if(allDone) {
+ DestFile = _config->FindDir("Dir::State::lists");
+ DestFile += URItoFileName(RealURI);
+
+ // do the final md5sum checking
+ MD5Summation sum;
+ FileFd Fd(DestFile, FileFd::ReadOnly);
+ sum.AddFD(Fd.Fd(), Fd.Size());
+ Fd.Close();
+ string MD5 = (string)sum.Result();
+
+ if (!ExpectedMD5.empty() && MD5 != ExpectedMD5)
+ {
+ Status = StatAuthError;
+ ErrorText = _("MD5Sum mismatch");
+ Rename(DestFile,DestFile + ".FAILED");
+ Dequeue();
+ return;
+ }
+
+ // this is for the "real" finish
+ Complete = true;
+ Status = StatDone;
+ Dequeue();
+ if(Debug)
+ std::clog << "\n\nallDone: " << DestFile << "\n" << std::endl;
+ return;
+ }
+
+ if(Debug)
+ std::clog << "Finishing: " << Desc.URI << std::endl;
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return;
+}
+
+
+
+bool pkgAcqIndexDiffs::QueueNextDiff()
+{
+
+ // calc sha1 of the just patched file
+ string FinalFile = _config->FindDir("Dir::State::lists");
+ FinalFile += URItoFileName(RealURI);
+
+ FileFd fd(FinalFile, FileFd::ReadOnly);
+ SHA1Summation SHA1;
+ SHA1.AddFD(fd.Fd(), fd.Size());
+ string local_sha1 = string(SHA1.Result());
+ if(Debug)
+ std::clog << "QueueNextDiff: "
+ << FinalFile << " (" << local_sha1 << ")"<<std::endl;
+
+ // remove all patches until the next matching patch is found
+ // this requires the Index file to be ordered
+ for(vector<DiffInfo>::iterator I=available_patches.begin();
+ available_patches.size() > 0 && I != available_patches.end()
+ && (*I).sha1 != local_sha1;
+ I++) {
+ available_patches.erase(I);
+ }
+
+ // error checking and falling back if no patch was found
+ if(available_patches.size() == 0) {
+ Failed("", NULL);
+ return false;
+ }
+
+ // queue the right diff
+ Desc.URI = string(RealURI) + ".diff/" + available_patches[0].file + ".gz";
+ Desc.Description = available_patches[0].file + string(".pdiff");
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(RealURI + ".diff/" + available_patches[0].file);
+
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::QueueNextDiff(): " << Desc.URI << std::endl;
+
+ QueueURI(Desc);
+
+ return true;
+}
+
+
+
+void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message,Size,Md5Hash,Cnf);
+
+ string FinalFile;
+ FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
+
+ // sucess in downloading a diff, enter ApplyDiff state
+ if(State == StateFetchDiff)
+ {
+
+ if(Debug)
+ std::clog << "Sending to gzip method: " << FinalFile << std::endl;
+
+ string FileName = LookupTag(Message,"Filename");
+ State = StateUnzipDiff;
+ Desc.URI = "gzip:" + FileName;
+ DestFile += ".decomp";
+ QueueURI(Desc);
+ Mode = "gzip";
+ return;
+ }
+
+ // sucess in downloading a diff, enter ApplyDiff state
+ if(State == StateUnzipDiff)
+ {
+
+ // rred excepts the patch as $FinalFile.ed
+ Rename(DestFile,FinalFile+".ed");
+
+ if(Debug)
+ std::clog << "Sending to rred method: " << FinalFile << std::endl;
+
+ State = StateApplyDiff;
+ Desc.URI = "rred:" + FinalFile;
+ QueueURI(Desc);
+ Mode = "rred";
+ return;
+ }
+
+
+ // success in download/apply a diff, queue next (if needed)
+ if(State == StateApplyDiff)
+ {
+ // remove the just applied patch
+ available_patches.erase(available_patches.begin());
+
+ // move into place
+ if(Debug)
+ {
+ std::clog << "Moving patched file in place: " << std::endl
+ << DestFile << " -> " << FinalFile << std::endl;
+ }
+ Rename(DestFile,FinalFile);
+
+ // see if there is more to download
+ if(available_patches.size() > 0) {
+ new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5, available_patches);
+ return Finish();
+ } else
+ return Finish(true);
+ }
+}
+
+
// AcqIndex::AcqIndex - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* The package file is added to the queue and a second class is
instantiated to fetch the revision file */
pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner,
string URI,string URIDesc,string ShortDesc,
- string ExpectedMD5, string comprExt) :
- Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5)
+ string ExpectedMD5, string comprExt)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5)
{
Decompression = false;
Erase = false;
}
// Queue Packages file
- new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
- (*Target)->ShortDesc, ExpectedIndexMD5);
+ new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
+ (*Target)->ShortDesc, ExpectedIndexMD5);
}
}
virtual ~Item();
};
+// item for index diffs
+
+struct DiffInfo {
+ string file;
+ string sha1;
+ unsigned long size;
+};
+
+class pkgAcqDiffIndex : public pkgAcquire::Item
+{
+ protected:
+ bool Debug;
+ pkgAcquire::ItemDesc Desc;
+ string RealURI;
+ string ExpectedMD5;
+ string CurrentPackagesFile;
+ string Description;
+
+ public:
+ // Specialized action members
+ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+ virtual void Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf);
+ virtual string DescURI() {return RealURI + "Index";};
+ virtual string Custom600Headers();
+
+ // helpers
+ bool ParseDiffIndex(string IndexDiffFile);
+
+ pkgAcqDiffIndex(pkgAcquire *Owner,string URI,string URIDesc,
+ string ShortDesct, string ExpectedMD5);
+};
+
+class pkgAcqIndexDiffs : public pkgAcquire::Item
+{
+ protected:
+ bool Debug;
+ pkgAcquire::ItemDesc Desc;
+ string RealURI;
+ string ExpectedMD5;
+
+ // this is the SHA-1 sum we expect after the patching
+ string Description;
+ vector<DiffInfo> available_patches;
+ enum {StateFetchIndex,StateFetchDiff,StateUnzipDiff,StateApplyDiff} State;
+
+ public:
+
+ // Specialized action members
+ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+ virtual void Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf);
+ virtual string DescURI() {return RealURI + "Index";};
+
+ // various helpers
+ bool QueueNextDiff();
+ bool ApplyDiff(string PatchFile);
+ void Finish(bool allDone=false);
+
+ pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc,
+ string ShortDesct, string ExpectedMD5,
+ vector<DiffInfo> diffs=vector<DiffInfo>());
+};
+
// Item class for index files
class pkgAcqIndex : public pkgAcquire::Item
{
unsigned long EndOfFile = Fd->Size();
if (EndOfFile > WorkSpace)
WorkSpace = EndOfFile;
- else
+ else if(WorkSpace > 0)
{
- Fd->Seek(WorkSpace);
+ Fd->Seek(WorkSpace - 1);
char C = 0;
Fd->Write(&C,sizeof(C));
}
// See the makefile
#define APT_PKG_MAJOR 3
-#define APT_PKG_MINOR 10
+#define APT_PKG_MINOR 11
#define APT_PKG_RELEASE 0
extern const char *pkgVersion;
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.41.1")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.41.0exp1")
PACKAGE="apt"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_SUBST(PACKAGE)
-apt (0.6.41.1) unstable; urgency=low
+apt (0.6.41.0exp1) experimental; urgency=low
* apt-pkg/cdrom.cc:
- unmount the cdrom when apt failed to locate any package files
* allow cdrom failures and fallback to other sources in that case
(closes: #44135)
* better error text when dpkg-source fails
- * Merge bubulle@debian.org--2005/apt--main--0 up to patch-104:
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-115:
- patch-99: Added Galician translation
- patch-100: Completed Danish translation (Closes: #325686)
- patch-104: French translation completed
- * applied frensh man-page update (thanks to Philippe Batailler)
+ - patch-109: Italian translation completed
+ - patch-112: Swedish translation update
+ - patch-115: Basque translation completed
+ * applied french man-page update (thanks to Philippe Batailler)
+ (closes: #316318, #327456)
+ * fix leak in the mmap code, thanks to Daniel Burrows for the
+ patch (closes: #250583)
+ * added support for package index diffs
+ * added support for i18n of the package descriptions
+ * build from mvo@debian.org--2005/apt--debian-experimental--0
+ (from http://people.debian.org/~mvo/arch)
- --
+ -- Michael Vogt <mvo@debian.org> Mon, 17 Oct 2005 17:16:45 +0200
apt (0.6.41) unstable; urgency=low
unsigned long TimeOut = 120;
bool Debug = false;
+
// CircleBuf::CircleBuf - Circular input buffer /*{{{*/
// ---------------------------------------------------------------------
/* */
// Woops, buffer is full
if (InP - OutP == Size)
return true;
-
+
// Write the buffer segment
int Res;
Res = read(Fd,Buf + (InP%Size),LeftRead());
SOURCE = ftp.cc rfc2553emu.cc connect.cc
include $(PROGRAM_H)
+# The rred method
+PROGRAM=rred
+SLIBS = -lapt-pkg $(SOCKETLIBS)
+LIB_MAKES = apt-pkg/makefile
+SOURCE = rred.cc
+include $(PROGRAM_H)
+
# The rsh method
PROGRAM=rsh
SLIBS = -lapt-pkg
--- /dev/null
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/acquire-method.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/hashes.h>
+
+#include <sys/stat.h>
+#include <unistd.h>
+#include <utime.h>
+#include <stdio.h>
+#include <errno.h>
+#include <apti18n.h>
+
+/* this method implements a patch functionality similar to "patch --ed" that is
+ * used by the "tiffany" incremental packages download stuff. it differs from
+ * "ed" insofar that it is way more restricted (and therefore secure). in the
+ * moment only the "c", "a" and "d" commands of ed are implemented (diff
+ * doesn't output any other). additionally the records must be reverse sorted
+ * by line number and may not overlap (diff *seems* to produce this kind of
+ * output).
+ * */
+
+const char *Prog;
+
+class RredMethod : public pkgAcqMethod
+{
+ bool Debug;
+ // the size of this doesn't really matter (except for performance)
+ const static int BUF_SIZE = 1024;
+ // the ed commands
+ enum Mode {MODE_CHANGED, MODE_DELETED, MODE_ADDED};
+ // return values
+ enum State {ED_OK, ED_ORDERING, ED_PARSER, ED_FAILURE};
+ // this applies a single hunk, it uses a tail recursion to
+ // reverse the hunks in the file
+ int ed_rec(FILE *ed_cmds, FILE *in_file, FILE *out_file, int line,
+ char *buffer, unsigned int bufsize, Hashes *hash);
+ // apply a patch file
+ int ed_file(FILE *ed_cmds, FILE *in_file, FILE *out_file, Hashes *hash);
+ // the methods main method
+ virtual bool Fetch(FetchItem *Itm);
+
+ public:
+
+ RredMethod() : pkgAcqMethod("1.1",SingleInstance | SendConfig) {};
+};
+
+int RredMethod::ed_rec(FILE *ed_cmds, FILE *in_file, FILE *out_file, int line,
+ char *buffer, unsigned int bufsize, Hashes *hash) {
+ int pos;
+ int startline;
+ int stopline;
+ int mode;
+ int written;
+ char *idx;
+
+ /* get the current command and parse it*/
+ if (fgets(buffer, bufsize, ed_cmds) == NULL) {
+ return line;
+ }
+ startline = strtol(buffer, &idx, 10);
+ if (startline < line) {
+ return ED_ORDERING;
+ }
+ if (*idx == ',') {
+ idx++;
+ stopline = strtol(idx, &idx, 10);
+ }
+ else {
+ stopline = startline;
+ }
+ if (*idx == 'c') {
+ mode = MODE_CHANGED;
+ if (Debug == true) {
+ std::clog << "changing from line " << startline
+ << " to " << stopline << std::endl;
+ }
+ }
+ else if (*idx == 'a') {
+ mode = MODE_ADDED;
+ if (Debug == true) {
+ std::clog << "adding after line " << startline << std::endl;
+ }
+ }
+ else if (*idx == 'd') {
+ mode = MODE_DELETED;
+ if (Debug == true) {
+ std::clog << "deleting from line " << startline
+ << " to " << stopline << std::endl;
+ }
+ }
+ else {
+ return ED_PARSER;
+ }
+ /* get the current position */
+ pos = ftell(ed_cmds);
+ /* if this is add or change then go to the next full stop */
+ if ((mode == MODE_CHANGED) || (mode == MODE_ADDED)) {
+ do {
+ fgets(buffer, bufsize, ed_cmds);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, ed_cmds);
+ buffer[0] = ' ';
+ }
+ } while (strncmp(buffer, ".", 1) != 0);
+ }
+ /* do the recursive call */
+ line = ed_rec(ed_cmds, in_file, out_file, line, buffer, bufsize,
+ hash);
+ /* pass on errors */
+ if (line < 0) {
+ return line;
+ }
+ /* apply our hunk */
+ fseek(ed_cmds, pos, SEEK_SET);
+ /* first wind to the current position */
+ if (mode != MODE_ADDED) {
+ startline -= 1;
+ }
+ while (line < startline) {
+ fgets(buffer, bufsize, in_file);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, in_file);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ line++;
+ }
+ /* include from ed script */
+ if ((mode == MODE_ADDED) || (mode == MODE_CHANGED)) {
+ do {
+ fgets(buffer, bufsize, ed_cmds);
+ if (strncmp(buffer, ".", 1) != 0) {
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, ed_cmds);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ }
+ else {
+ break;
+ }
+ } while (1);
+ }
+ /* ignore the corresponding number of lines from input */
+ if ((mode == MODE_DELETED) || (mode == MODE_CHANGED)) {
+ while (line < stopline) {
+ fgets(buffer, bufsize, in_file);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, in_file);
+ }
+ line++;
+ }
+ }
+ return line;
+}
+
+int RredMethod::ed_file(FILE *ed_cmds, FILE *in_file, FILE *out_file,
+ Hashes *hash) {
+ char buffer[BUF_SIZE];
+ int result;
+ int written;
+
+ /* we do a tail recursion to read the commands in the right order */
+ result = ed_rec(ed_cmds, in_file, out_file, 0, buffer, BUF_SIZE,
+ hash);
+
+ /* read the rest from infile */
+ if (result > 0) {
+ while (fgets(buffer, BUF_SIZE, in_file) != NULL) {
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ }
+ else {
+ return ED_FAILURE;
+ }
+ return ED_OK;
+}
+
+
+bool RredMethod::Fetch(FetchItem *Itm)
+{
+ Debug = _config->FindB("Debug::pkgAcquire::RRed",false);
+ URI Get = Itm->Uri;
+ string Path = Get.Host + Get.Path; // To account for relative paths
+ // Path contains the filename to patch
+ FetchResult Res;
+ Res.Filename = Itm->DestFile;
+ URIStart(Res);
+ // Res.Filename the destination filename
+
+ if (Debug == true)
+ std::clog << "Patching " << Path << " with " << Path
+ << ".ed and putting result into " << Itm->DestFile << std::endl;
+ // Open the source and destination files (the d'tor of FileFd will do
+ // the cleanup/closing of the fds)
+ FileFd From(Path,FileFd::ReadOnly);
+ FileFd Patch(Path+".ed",FileFd::ReadOnly);
+ FileFd To(Itm->DestFile,FileFd::WriteEmpty);
+ To.EraseOnFailure();
+ if (_error->PendingError() == true)
+ return false;
+
+ Hashes Hash;
+ FILE* fFrom = fdopen(From.Fd(), "r");
+ FILE* fPatch = fdopen(Patch.Fd(), "r");
+ FILE* fTo = fdopen(To.Fd(), "w");
+ // now do the actual patching
+ if (ed_file(fPatch, fFrom, fTo, &Hash) != ED_OK) {
+ _error->Errno("rred", _("Could not patch file"));
+ return false;
+ }
+
+ // write out the result
+ fflush(fFrom);
+ fflush(fPatch);
+ fflush(fTo);
+ From.Close();
+ Patch.Close();
+ To.Close();
+
+ // Transfer the modification times
+ struct stat Buf;
+ if (stat(Path.c_str(),&Buf) != 0)
+ return _error->Errno("stat",_("Failed to stat"));
+
+ struct utimbuf TimeBuf;
+ TimeBuf.actime = Buf.st_atime;
+ TimeBuf.modtime = Buf.st_mtime;
+ if (utime(Itm->DestFile.c_str(),&TimeBuf) != 0)
+ return _error->Errno("utime",_("Failed to set modification time"));
+
+ if (stat(Itm->DestFile.c_str(),&Buf) != 0)
+ return _error->Errno("stat",_("Failed to stat"));
+
+ // return done
+ Res.LastModified = Buf.st_mtime;
+ Res.Size = Buf.st_size;
+ Res.TakeHashes(Hash);
+ URIDone(Res);
+
+ return true;
+}
+
+int main(int argc, char *argv[])
+{
+ RredMethod Mth;
+
+ Prog = strrchr(argv[0],'/');
+ Prog++;
+
+ return Mth.Run();
+}
-# translation of apt-eu.po to Basque
+# translation of eu.po to librezale.org
+# translation of apt_po_eu.po to librezale.org
+# translation of apt-eu.po to Basque
# This file is put in the public domain.
# Hizkuntza Politikarako Sailburuordetza <hizkpol@ej-gv.es>, 2005.
+# Piarres Beobide <pi@beobide.net>, 2005.
#
msgid ""
msgstr ""
-"Project-Id-Version: apt-eu\n"
+"Project-Id-Version: eu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-22 23:07+0200\n"
-"PO-Revision-Date: 2005-04-20 20:05+0200\n"
-"Last-Translator: Hizkuntza Politikarako Sailburuordetza <hizkpol@ej-gv.es>\n"
-"Language-Team: Basque <itzulpena@euskalgnu.org>\n"
+"PO-Revision-Date: 2005-10-11 20:03+0200\n"
+"Last-Translator: Piarres Beobide <pi@beobide.net>\n"
+"Language-Team: librezale.org <librezale@librezale.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
+"X-Generator: KBabel 1.10.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"\n"
msgstr "%s (arrazoia: %s) "
#: cmdline/apt-get.cc:544
-#, fuzzy
msgid ""
"WARNING: The following essential packages will be removed.\n"
"This should NOT be done unless you know exactly what you are doing!"
#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
-msgstr ""
+msgstr "Egiaztapen abisua gainidazten.\n"
#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
#: cmdline/apt-get.cc:753
msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr ""
+msgstr "Barne errorea, InstallPackages apurturiko paketeez deitu da!"
#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr "Paketeak ezabatu beharra dute bain Ezabatzea ezgaiturik dago."
#: cmdline/apt-get.cc:773
-#, fuzzy
msgid "Internal error, Ordering didn't finish"
-msgstr "Barne errorea desbideratze bat gehitzean"
+msgstr "Barne errorea, ez da ordenatzeaz amaitu"
#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
#: cmdline/apt-get.cc:814
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
+"Hau bitxia.. Tamainak ez dira berdina, idatzi apt@packages.debian.org-ra "
+"berri emanez (ingelesez)"
#: cmdline/apt-get.cc:819
#, c-format
msgstr "Deskonprimitu ondoren, %sB libratuko dira diskoan.\n"
#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927
-#, fuzzy, c-format
+#, c-format
msgid "Couldn't determine free space in %s"
-msgstr "Ez daukazu nahikoa leku libre %s(e)n."
+msgstr "Ezin da %s(e)n duzun leku librea atzeman."
#: cmdline/apt-get.cc:847
#, c-format
msgstr "Bai, egin esandakoa!"
#: cmdline/apt-get.cc:866
-#, fuzzy, c-format
+#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
"To continue type in the phrase '%s'\n"
msgstr "Eginda"
#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
-#, fuzzy
msgid "Internal error, problem resolver broke stuff"
-msgstr "Barne Errorea, AllUpgade-k zerbait apurtu du"
+msgstr "Barne Errorea, arazo konpontzaileak zerbait apurtu du"
#: cmdline/apt-get.cc:1856
msgid "Must specify at least one package to fetch source for"
#: cmdline/apt-get.cc:2003
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
-msgstr ""
-"%s(e)n dagoeneko deskonprimitutako iturburua deskonprimitzea saltatzen\n"
+msgstr "%s(e)n dagoeneko deskonprimitutako iturburua deskonprimitzea saltatzen\n"
#: cmdline/apt-get.cc:2015
#, c-format
#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
+msgstr "Egiaztattu 'dpkg-dev' paketea instalaturik dagoen.\n"
#: cmdline/apt-get.cc:2033
#, c-format
#: cmdline/apt-get.cc:2068
msgid "Must specify at least one package to check builddeps for"
-msgstr ""
-"Gutxienez pakete bat zehaztu behar duzu eraikitze-mendekotasunak egiaztatzeko"
+msgstr "Gutxienez pakete bat zehaztu behar duzu eraikitze-mendekotasunak egiaztatzeko"
#: cmdline/apt-get.cc:2096
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
-msgstr ""
-"%2$s(r)en %1$s mendekotasuna ezin da bete, %3$s paketea ezin delako aurkitu"
+msgstr "%2$s(r)en %1$s mendekotasuna ezin da bete, %3$s paketea ezin delako aurkitu"
#: cmdline/apt-get.cc:2220
#, c-format
msgstr "edo falta diren mendekotasunen erroreak. Hori ondo dago; mezu honen"
#: dselect/install:103
-msgid ""
-"above this message are important. Please fix them and run [I]nstall again"
+msgid "above this message are important. Please fix them and run [I]nstall again"
msgstr ""
"aurreko erroreak dira garrantzitsuak. Konpondu eta exekutatu [I]nstall "
"berriro"
msgstr "Konfigurazio-fitxategi bikoiztua: %s/%s"
#: apt-inst/dirstream.cc:45 apt-inst/dirstream.cc:50 apt-inst/dirstream.cc:53
-#, fuzzy, c-format
+#, c-format
msgid "Failed to write file %s"
msgstr "Ezin izan da %s fitxategian idatzi"
#: apt-inst/deb/debfile.cc:52
#, c-format
msgid "This is not a valid DEB archive, it has no '%s' or '%s' member"
-msgstr ""
-"Hau ez da balioz DEB fitxategi bat, ez du ez '%s' ez '%s' atalik falta du"
+msgstr "Hau ez da balioz DEB fitxategi bat, ez du ez '%s' ez '%s' atalik falta du"
#: apt-inst/deb/debfile.cc:112
#, c-format
msgstr "Ezin izan da CDROMa %s(e)n muntatu; beharbada erabiltzen ariko da."
#: methods/cdrom.cc:169
-#, fuzzy
msgid "Disk not found."
-msgstr "Ez da fitxategia aurkitu"
+msgstr "Ez da diska aurkitu"
#: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
msgid "File not found"
#: methods/ftp.cc:698
msgid "Could not connect data socket, connection timed out"
-msgstr ""
-"Ezin izan da datu-socketa konektatu; konexioak denbora-muga gainditu du"
+msgstr "Ezin izan da datu-socketa konektatu; konexioak denbora-muga gainditu du"
#: methods/ftp.cc:704
msgid "Could not connect passive socket."
#: methods/connect.cc:93
#, c-format
msgid "Could not connect to %s:%s (%s), connection timed out"
-msgstr ""
-"Ezin izan da konektatu -> %s:%s (%s). Konexioak denbora-muga gainditu du"
+msgstr "Ezin izan da konektatu -> %s:%s (%s). Konexioak denbora-muga gainditu du"
#: methods/connect.cc:106
#, c-format
#: methods/gpgv.cc:92
msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr ""
+msgstr "E: Acquire::gpgv::Options arguimentu zerrenda luzeegia. Uzten."
#: methods/gpgv.cc:191
-msgid ""
-"Internal error: Good signature, but could not determine key fingerprint?!"
-msgstr ""
+msgid "Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr "Barne errorea: Sinadura zuzena, baina ezin da egiaztapen marka zehaztu"
#: methods/gpgv.cc:196
msgid "At least one invalid signature was encountered."
-msgstr ""
+msgstr "Beintza sinadura baliogabe bat aurkitu da."
#. FIXME String concatenation considered harmful.
#: methods/gpgv.cc:201
-#, fuzzy
msgid "Could not execute "
-msgstr "Ezin izan da %s blokeoa hartu"
+msgstr "Ezin izan da %s exekutatu"
#: methods/gpgv.cc:202
msgid " to verify signature (is gnupg installed?)"
-msgstr ""
+msgstr " sinadura egiaztatzeko (gnupg instalaturik al dago?)"
#: methods/gpgv.cc:206
msgid "Unknown error executing gpgv"
-msgstr ""
+msgstr "Errore ezezaguna gpgv exekutatzean"
#: methods/gpgv.cc:237
-#, fuzzy
msgid "The following signatures were invalid:\n"
-msgstr "Ondorengo pakete gehigarriak instalatuko dira:"
+msgstr "Ondorengo sinadurak baliogabeak dira:\n"
#: methods/gpgv.cc:244
msgid ""
"The following signatures couldn't be verified because the public key is not "
"available:\n"
msgstr ""
+"Ondorengo sinadurak ezin dira egiaztatu gako publikoa ez bait dago "
+"eskuragarri:\n"
#: methods/gzip.cc:57
#, c-format
#: apt-pkg/contrib/cmndline.cc:201 apt-pkg/contrib/cmndline.cc:207
#, c-format
msgid "Option %s: Configuration item specification must have an =<val>."
-msgstr ""
-"%s aukera: konfigurazio-elementuaren zehaztapenak =<val> eduki behar du."
+msgstr "%s aukera: konfigurazio-elementuaren zehaztapenak =<val> eduki behar du."
#: apt-pkg/contrib/cmndline.cc:237
#, c-format
#: apt-pkg/contrib/fileutl.cc:105
#, c-format
msgid "Not using locking for nfs mounted lock file %s"
-msgstr ""
-"Ez da blokeorik erabiltzen ari nfs %s muntatutako blokeo-fitxategiarentzat"
+msgstr "Ez da blokeorik erabiltzen ari nfs %s muntatutako blokeo-fitxategiarentzat"
#: apt-pkg/contrib/fileutl.cc:109
#, c-format
#: apt-pkg/algorithms.cc:241
#, c-format
-msgid ""
-"The package %s needs to be reinstalled, but I can't find an archive for it."
-msgstr ""
-"%s paketea berriro instalatu behar da, baina ezin dut artxiborik aurkitu."
+msgid "The package %s needs to be reinstalled, but I can't find an archive for it."
+msgstr "%s paketea berriro instalatu behar da, baina ezin dut artxiborik aurkitu."
#: apt-pkg/algorithms.cc:1059
msgid ""
#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
-msgstr ""
+msgstr "%li fitxategi deskargatzen %li -fitxategitik (%s falta da)"
#: apt-pkg/acquire-worker.cc:113
#, c-format
msgstr "%s metodoa ez da behar bezala abiarazi"
#: apt-pkg/acquire-worker.cc:377
-#, fuzzy, c-format
+#, c-format
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
-msgstr ""
-"Euskarri-aldaketa: sartu '%s'\n"
-"diskoa '%s' unitatean, eta sakatu Sartu\n"
+msgstr "Mesedez sa ''%s' izeneko diska '%s' gailuan eta enter sakatu"
#: apt-pkg/init.cc:119
#, c-format
#: apt-pkg/acquire-item.cc:811
#, c-format
-msgid ""
-"The package index files are corrupted. No Filename: field for package %s."
+msgid "The package index files are corrupted. No Filename: field for package %s."
msgstr ""
"Paketearen indize-fitxategiak hondatuta daude. 'Filename:' eremurik ez %s "
"paketearentzat."
#: apt-pkg/vendorlist.cc:66
#, c-format
msgid "Vendor block %s contains no fingerprint"
-msgstr "%s saltzaile blokeak ez du egiatzpen markarik"
+msgstr "%s saltzaile blokeak ez du egiaztapen markarik"
#: apt-pkg/cdrom.cc:507
#, c-format
#: apt-pkg/indexcopy.cc:269
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
-msgstr ""
-"%i erregistro, %i galdutako fitxategi eta %i okerreko fitxategi grabaturik.\n"
+msgstr "%i erregistro, %i galdutako fitxategi eta %i okerreko fitxategi grabaturik.\n"
#: apt-pkg/deb/dpkgpm.cc:358
-#, fuzzy, c-format
+#, c-format
msgid "Preparing %s"
-msgstr "%s irekitzen"
+msgstr "%s prestatzen"
#: apt-pkg/deb/dpkgpm.cc:359
-#, fuzzy, c-format
+#, c-format
msgid "Unpacking %s"
msgstr "%s irekitzen"
#: apt-pkg/deb/dpkgpm.cc:364
-#, fuzzy, c-format
+#, c-format
msgid "Preparing to configure %s"
-msgstr "%s konfigurazio-fitxategia irekitzen"
+msgstr "%s konfiguratzeko prestatzen"
#: apt-pkg/deb/dpkgpm.cc:365
-#, fuzzy, c-format
+#, c-format
msgid "Configuring %s"
-msgstr "Konektatzen -> %s..."
+msgstr "%s konfiguratzen"
#: apt-pkg/deb/dpkgpm.cc:366
-#, fuzzy, c-format
+#, c-format
msgid "Installed %s"
-msgstr " Instalatuta: "
+msgstr "%s Instalatuta"
#: apt-pkg/deb/dpkgpm.cc:371
#, c-format
msgid "Preparing for removal of %s"
-msgstr ""
+msgstr "%s kentzeko prestatzen"
#: apt-pkg/deb/dpkgpm.cc:372
-#, fuzzy, c-format
+#, c-format
msgid "Removing %s"
-msgstr "%s irekitzen"
+msgstr "%s kentzen"
#: apt-pkg/deb/dpkgpm.cc:373
-#, fuzzy, c-format
+#, c-format
msgid "Removed %s"
-msgstr "Gomendioa:"
+msgstr "%s kendurik"
#: apt-pkg/deb/dpkgpm.cc:378
#, c-format
msgid "Preparing for remove with config %s"
-msgstr ""
+msgstr "%s konfigurazioaz ezabatzeko prestatzen"
#: apt-pkg/deb/dpkgpm.cc:379
#, c-format
msgid "Removed with config %s"
-msgstr ""
+msgstr "%s konfigurazioaz kentzen"
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr "Konexioa behar baino lehenago itxi da"
-#~ msgid "Total Package Names : "
-#~ msgstr "Pakete-izenak guztira: "
-
-#~ msgid " Normal Packages: "
-#~ msgstr " Pakete normalak: "
-
-#~ msgid " Pure Virtual Packages: "
-#~ msgstr " Pakete birtual puruak: "
-
-#~ msgid " Single Virtual Packages: "
-#~ msgstr " Pakete birtual soilak: "
-
-#~ msgid " Mixed Virtual Packages: "
-#~ msgstr " Pakete birtual nahasiak: "
-
-#~ msgid "Total Distinct Versions: "
-#~ msgstr "Bertsio desberdinak guztira: "
-
-#~ msgid "Total Dependencies: "
-#~ msgstr "Mendekotasunak guztira: "
-
-#~ msgid "Total Ver/File relations: "
-#~ msgstr "Bertsio/fitxategi erlazioak guztira: "
-
-#~ msgid "Total Provides Mappings: "
-#~ msgstr "Hornidura-mapatzeak guztira: "
-
-#~ msgid "Total Globbed Strings: "
-#~ msgstr "Globalizatutako kateak guztira: "
-
-#~ msgid "Total Dependency Version space: "
-#~ msgstr "Mendekotasun-bertsioen lekua guztira: "
-
-#~ msgid "Total Slack space: "
-#~ msgstr "Slack lekua guztira: "
-
-#~ msgid "Total Space Accounted for: "
-#~ msgstr "Hartutako lekua guztira: "
-
-#~ msgid "Package Files:"
-#~ msgstr "Pakete-fitxategiak:"
-
-#~ msgid "Pinned Packages:"
-#~ msgstr "Orratzdun paketeak (pin):"
-
-#~ msgid " Package Pin: "
-#~ msgstr " Pakete-orratza (pin): "
-
-#~ msgid " Version Table:"
-#~ msgstr " Bertsio-taula:"
-
-#~ msgid "Error Processing directory %s"
-#~ msgstr "Errorea %s direktorioa prozesatzean"
-
-#~ msgid "Error Processing Contents %s"
-#~ msgstr "Errorea %s edukia prozesatzean"
-
-#~ msgid "Unknown Compresison Algorithm '%s'"
-#~ msgstr "Konpresio-algoritmo ezezaguna: '%s'"
-
-#~ msgid "Compress Child"
-#~ msgstr "Konprimitu umea"
-
-#~ msgid "Internal Error, Failed to create %s"
-#~ msgstr "Barne-errorea. Ezin izan da %s sortu"
-
-#~ msgid "Packages need to be removed but Remove is disabled."
-#~ msgstr ""
-#~ "Paketeak kendu egin behar dira, baina Kentzeko aukera desgaituta dago."
-
-#~ msgid "Do you want to continue? [Y/n] "
-#~ msgstr "Jarraitu nahi duzu? [B/e] "
-
-#~ msgid "Aborting Install."
-#~ msgstr "Instalazioa abortatzen."
-
-#~ msgid "Internal Error, AllUpgrade broke stuff"
-#~ msgstr "Barne-errorea, AllUpgrade-k zerbait hautsi du"
-
-#~ msgid "Calculating Upgrade... "
-#~ msgstr "Bertsio-berritzea kalkulatzen... "
-
-#~ msgid "Fetch Source %s\n"
-#~ msgstr "Lortu %s iturburua\n"
-
-#~ msgid "Supported Modules:"
-#~ msgstr "Onartutako moduluak:"
-
-#~ msgid "Merging Available information"
-#~ msgstr "Informazio erabilgarria batzen"
-
-#~ msgid "Tar Checksum failed, archive corrupted"
-#~ msgstr "Tar Checksum-ek huts egin du; artxiboa hondatuta dago"
-
-#~ msgid "Internal Error in AddDiversion"
-#~ msgstr "Barne-errorea AddDiversion-en"
-
-#~ msgid "Reading Package Lists"
-#~ msgstr "Pakete-zerrendak irakurtzen"
-
-#~ msgid "Internal Error getting a Package Name"
-#~ msgstr "Barne-errorea pakete-izen bat eskuratzean"
-
-#~ msgid "Reading File Listing"
-#~ msgstr "Fitxategi-zerrenda irakurtzen"
-
-#~ msgid "Internal Error getting a Node"
-#~ msgstr "Barne-errorea nodo bat eskuratzean"
-
-#~ msgid "Internal Error adding a diversion"
-#~ msgstr "Barne-errorea desbideratze bat gehitzean"
-
-#~ msgid "Reading File List"
-#~ msgstr "Fitxategi-zerrenda irakurtzen"
-
-#~ msgid "Failed to find a Package: Header, offset %lu"
-#~ msgstr "Ezin izan da aurkitu Paketea: Goiburua, desplazamendua %lu"
-
-#~ msgid "Internal Error, could not locate member %s"
-#~ msgstr "Barne-errorea; ezin izan da %s kidea lokalizatu"
-
-#~ msgid "Internal Error, could not locate member"
-#~ msgstr "Barne-errorea; ezin izan da kidea lokalizatu"
-
-#~ msgid "Unparsible control file"
-#~ msgstr "Kontrol-fitxategi analizaezina"
-
-#~ msgid ""
-#~ "Please use apt-cdrom to make this CD recognized by APT. apt-get update "
-#~ "cannot be used to add new CDs"
-#~ msgstr ""
-#~ "Erabili apt-cdrom, CD hau APTk identifika dezan. apt-get eguneratzea ezin "
-#~ "da erabili CD berriak gehitzeko"
-
-#~ msgid "Wrong CD"
-#~ msgstr "CD okerra"
-
-#~ msgid "Server refused our connection and said: %s"
-#~ msgstr "Zerbitzariak gure konexioa ezetsi du, eta hau esan du: %s"
-
-#~ msgid "Write Error"
-#~ msgstr "Idazketa-errorea"
-
-#~ msgid "The http server sent an invalid reply header"
-#~ msgstr "Http zerbitzariak erantzun-goiburu baliogabe bat bidali du"
-
-#~ msgid "The http server sent an invalid Content-Length header"
-#~ msgstr "Http zerbitzariak Content-Length goiburu baliogabe bat bidali du"
-
-#~ msgid "The http server sent an invalid Content-Range header"
-#~ msgstr "Http zerbitzariak Content-Range goiburu baliogabe bat bidali du"
-
-#~ msgid "This http server has broken range support"
-#~ msgstr "Http zerbitzari honek barruti-onarpena hautsita dauka"
-
-#~ msgid "Error reading from server Remote end closed connection"
-#~ msgstr "Errorea zerbitzaritik irakurtzean: Urruneko aldeak konexioa itxi du"
-
-#~ msgid "Bad header Data"
-#~ msgstr "Okerreko goiburu-datuak"
-
-#~ msgid "Syntax error %s:%u: Malformed Tag"
-#~ msgstr "Sintaxi-errorea, %s:%u: Etiketa gaizki osatuta"
-
-#~ msgid "Waited, for %s but it wasn't there"
-#~ msgstr "%s(r)en zain egon da, baina ez zegoen hor"
-
-#~ msgid "This APT does not support the Versioning System '%s'"
-#~ msgstr "APT honek ez du onartzen '%s' bertsio-sistema"
-
-#~ msgid "Building Dependency Tree"
-#~ msgstr "Mendekotasunen zuhaitza eraikitzen"
-
-#~ msgid "Candidate Versions"
-#~ msgstr "Hautagai dauden bertsioak"
-
-#~ msgid "Dependency Generation"
-#~ msgstr "Mendekotasunak sortzea"
-
-#~ msgid "Malformed line %lu in source list %s (Absolute dist)"
-#~ msgstr "Gaizki osatutako %lu lerroa %s iturburu-zerrendan (dist absolutua)"
-
-#~ msgid "Vendor block %s is invalid"
-#~ msgstr "%s hornitzaile-blokea ez da baliozkoa"
-
-#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
-#~ msgstr ""
-#~ "'%1$s' hornitzaile-id ezezaguna %3$s iturburu-zerrendako %2$u lerroan"
-
-#~ msgid "File Not Found"
-#~ msgstr "Ez da fitxategia aurkitu"
+# translation of fr.po to French
# Advanced Package Transfer - APT message translation catalog
# French messages
# Pierre Machard <pmachard@tuxfamily.org>, 2002,2003,2004.
#
msgid ""
msgstr ""
-"Project-Id-Version: apt\n"
+"Project-Id-Version: fr\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-22 23:07+0200\n"
-"PO-Revision-Date: 2005-09-22 23:30+0200\n"
+"PO-Revision-Date: 2005-09-23 08:37+0200\n"
"Last-Translator: Christian Perrier <bubulle@debian.org>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
"MIME-Version: 1.0\n"
#: cmdline/apt-extracttemplates.cc:310
msgid "Cannot get debconf version. Is debconf installed?"
-msgstr ""
-"Impossible d'obtenir la version de debconf. Est-ce que debconf est installé ?"
+msgstr "Impossible d'obtenir la version de debconf. Est-ce que debconf est installé ?"
#: ftparchive/apt-ftparchive.cc:167 ftparchive/apt-ftparchive.cc:341
msgid "Package extension list is too long"
#: ftparchive/apt-ftparchive.cc:835
#, c-format
msgid "Some files are missing in the package file group `%s'"
-msgstr ""
-"Quelques fichiers sont manquants dans le groupe de fichiers de paquets « %s »"
+msgstr "Quelques fichiers sont manquants dans le groupe de fichiers de paquets « %s »"
#: ftparchive/cachedb.cc:45
#, c-format
#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
-msgstr ""
-"Les paquets doivent être enlevés mais la désinstallation est désactivée."
+msgstr "Les paquets doivent être enlevés mais la désinstallation est désactivée."
#: cmdline/apt-get.cc:773
msgid "Internal error, Ordering didn't finish"
#: cmdline/apt-get.cc:827
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
-msgstr ""
-"Après dépaquetage, %so d'espace disque supplémentaires seront utilisés.\n"
+msgstr "Après dépaquetage, %so d'espace disque supplémentaires seront utilisés.\n"
#: cmdline/apt-get.cc:830
#, c-format
#: cmdline/apt-get.cc:988
msgid "--fix-missing and media swapping is not currently supported"
-msgstr ""
-"l'option --fix-missing et l'échange de support ne sont pas encore reconnus."
+msgstr "l'option --fix-missing et l'échange de support ne sont pas encore reconnus."
#: cmdline/apt-get.cc:993
msgid "Unable to correct missing packages."
#: cmdline/apt-get.cc:1131
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
-msgstr ""
-"La réinstallation de %s est impossible, il ne peut pas être téléchargé.\n"
+msgstr "La réinstallation de %s est impossible, il ne peut pas être téléchargé.\n"
#: cmdline/apt-get.cc:1139
#, c-format
#: cmdline/apt-get.cc:1526
msgid "You might want to run `apt-get -f install' to correct these:"
-msgstr ""
-"Vous pouvez lancer « apt-get -f install » pour corriger ces problèmes :"
+msgstr "Vous pouvez lancer « apt-get -f install » pour corriger ces problèmes :"
#: cmdline/apt-get.cc:1529
msgid ""
#: cmdline/apt-get.cc:2294
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
-msgstr ""
-"Les dépendances de compilation pour %s ne peuvent pas être satisfaites."
+msgstr "Les dépendances de compilation pour %s ne peuvent pas être satisfaites."
#: cmdline/apt-get.cc:2298
msgid "Failed to process build dependencies"
"seules les erreurs"
#: dselect/install:103
-msgid ""
-"above this message are important. Please fix them and run [I]nstall again"
+msgid "above this message are important. Please fix them and run [I]nstall again"
msgstr ""
"précédant ce message sont importantes. Veuillez les corriger et\n"
"démarrer l'[I]nstallation une nouvelle fois."
#: apt-inst/deb/debfile.cc:52
#, c-format
msgid "This is not a valid DEB archive, it has no '%s' or '%s' member"
-msgstr ""
-"Ce n'est pas une archive DEB valide, elle n'a pas de membre « %s » ou « %s »"
+msgstr "Ce n'est pas une archive DEB valide, elle n'a pas de membre « %s » ou « %s »"
#: apt-inst/deb/debfile.cc:112
#, c-format
#: methods/ftp.cc:265
#, c-format
msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-"La commande « %s » du script de connexion a échoué, le serveur a répondu : %s"
+msgstr "La commande « %s » du script de connexion a échoué, le serveur a répondu : %s"
#: methods/ftp.cc:291
#, c-format
#: methods/ftp.cc:698
msgid "Could not connect data socket, connection timed out"
-msgstr ""
-"Impossible de se connecter sur le port de données, délai de connexion dépassé"
+msgstr "Impossible de se connecter sur le port de données, délai de connexion dépassé"
#: methods/ftp.cc:704
msgid "Could not connect passive socket."
#: methods/gpgv.cc:92
msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr "E: liste d'arguments trop longue pour Acquire::gpgv::Options. Abandon."
+msgstr "E: liste de paramètres trop longue pour Acquire::gpgv::Options. Abandon."
#: methods/gpgv.cc:191
-msgid ""
-"Internal error: Good signature, but could not determine key fingerprint?!"
+msgid "Internal error: Good signature, but could not determine key fingerprint?!"
msgstr ""
"Erreur interne : signature correcte, mais il est impossible de déterminer "
"l'empreinte de la clé."
#: apt-pkg/sourcelist.cc:98
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
-msgstr ""
-"Ligne %lu mal formée dans la liste des sources %s (distribution absolue)"
+msgstr "Ligne %lu mal formée dans la liste des sources %s (distribution absolue)"
#: apt-pkg/sourcelist.cc:105
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
-msgstr ""
-"Ligne %lu mal formée dans la liste des sources %s (analyse de distribution)"
+msgstr "Ligne %lu mal formée dans la liste des sources %s (analyse de distribution)"
#: apt-pkg/sourcelist.cc:156
#, c-format
#: apt-pkg/sourcelist.cc:191
#, c-format
msgid "Type '%s' is not known on line %u in source list %s"
-msgstr ""
-"Le type « %s » est inconnu sur la ligne %u dans la liste des sources %s"
+msgstr "Le type « %s » est inconnu sur la ligne %u dans la liste des sources %s"
#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
-msgstr ""
-"Ligne %u mal formée dans la liste des sources %s (identifiant du fournisseur)"
+msgstr "Ligne %u mal formée dans la liste des sources %s (identifiant du fournisseur)"
#: apt-pkg/packagemanager.cc:402
#, c-format
#: apt-pkg/algorithms.cc:241
#, c-format
-msgid ""
-"The package %s needs to be reinstalled, but I can't find an archive for it."
+msgid "The package %s needs to be reinstalled, but I can't find an archive for it."
msgstr ""
"Le paquet %s doit être réinstallé, mais je ne parviens pas à trouver son "
"archive."
#: apt-pkg/srcrecords.cc:48
msgid "You must put some 'source' URIs in your sources.list"
-msgstr ""
-"Vous devez insérer quelques adresses « sources » dans votre sources.list"
+msgstr "Vous devez insérer quelques adresses « sources » dans votre sources.list"
#: apt-pkg/cachefile.cc:73
msgid "The package lists or status file could not be parsed or opened."
#: apt-pkg/pkgcachegen.cc:210
msgid "Wow, you exceeded the number of versions this APT is capable of."
-msgstr ""
-"Vous avez dépassé le nombre de versions que cet APT est capable de traiter."
+msgstr "Vous avez dépassé le nombre de versions que cet APT est capable de traiter."
#: apt-pkg/pkgcachegen.cc:213
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
msgid "IO Error saving source cache"
-msgstr ""
-"Erreur d'entrée/sortie lors de la sauvegarde du fichier de cache des sources"
+msgstr "Erreur d'entrée/sortie lors de la sauvegarde du fichier de cache des sources"
#: apt-pkg/acquire-item.cc:126
#, c-format
#: apt-pkg/acquire-item.cc:811
#, c-format
-msgid ""
-"The package index files are corrupted. No Filename: field for package %s."
+msgid "The package index files are corrupted. No Filename: field for package %s."
msgstr ""
"Les fichiers d'index des paquets sont corrompus. Aucun champ « Filename: » "
"pour le paquet %s."
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr "Connexion fermée prématurément"
+
"Project-Id-Version: apt 0.5.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-22 23:07+0200\n"
-"PO-Revision-Date: 2005-03-26 00:42+0100\n"
+"PO-Revision-Date: 2005-10-05 17:38+0200\n"
"Last-Translator: Samuele Giovanni Tonon <samu@debian.org>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
msgstr "Errore nell'analisi dei contents %s"
#: ftparchive/apt-ftparchive.cc:556
-#, fuzzy
msgid ""
"Usage: apt-ftparchive [options] command\n"
"Commands: packages binarypath [overridefile [pathprefix]]\n"
"dell'albero. BinaryPath deve puntare alla base della ricerca \n"
"ricorsiva e il file override devecontenere le opzioni di override. "
"Pathprefix è\n"
-" aggiunto al campo filename se presente. Esempio di utilizzo dall'archivio "
-"debian:\n"
+" aggiunto al campo filename se presente. Esempio di utilizzo \n"
+"dall'archivio debian:\n"
" apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n"
" dists/potato/main/binary-i386/Packages \n"
"\n"
msgstr "%s (a causa di %s) "
#: cmdline/apt-get.cc:544
-#, fuzzy
msgid ""
"WARNING: The following essential packages will be removed.\n"
"This should NOT be done unless you know exactly what you are doing!"
#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
-msgstr ""
+msgstr "Avviso di autenticazione disabilitato \n"
#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
msgstr "Sussistono dei problemi e -y è stata usata senza --force-yes"
#: cmdline/apt-get.cc:753
-#, fuzzy
msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr "Errore interno, InstallPackages Ã\83Å¡ stato chiamato con un pacchetto rotto!"
+msgstr ""
+"Errore interno, InstallPackages è stato chiamato con un pacchetto rotto!"
#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr "I pacchetti devono essere rimossi ma il remove è disabilitato."
#: cmdline/apt-get.cc:773
-#, fuzzy
msgid "Internal error, Ordering didn't finish"
-msgstr "Errore interno, l'ordinamento non Ã\83Å¡ finito"
+msgstr "Errore interno, l'ordinamento non è terminato"
#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
msgstr "SI, esegui come richiesto!"
#: cmdline/apt-get.cc:866
-#, fuzzy, c-format
+#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
"To continue type in the phrase '%s'\n"
" ?] "
msgstr ""
-"Si sta per compiere un'azione potenzialmente distruttiva\n"
+"Si sta per compiere un'azione potenzialmente pericolosa\n"
"Per continuare scrivere la frase '%s' \n"
" ?] "
"This may mean that the package is missing, has been obsoleted, or\n"
"is only available from another source\n"
msgstr ""
-"Il pacchetto %s non ha versioni disponibili, ma .\n"
-"Questo significa che il pacchetto è diventato obsoleto oùnè disponibile "
-"all'interno da un'altra sorgente\n"
+"Il pacchetto %s non ha versioni disponibili, ma ma è nominato da un "
+"altropacchetto.\n"
+" Questo significa che il pacchetto manca, è diventato obsoletoo è "
+"disponibile solo all'interno di un'altra sorgente\n"
#: cmdline/apt-get.cc:1108
msgid "However the following packages replace it:"
msgstr "Fatto"
#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
-#, fuzzy
msgid "Internal error, problem resolver broke stuff"
msgstr "Errore interno, problem resolver ha rotto qualcosa"
#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
+msgstr "Verificare se il pacchetto 'dpkg-dev' è installato.\n"
#: cmdline/apt-get.cc:2033
#, c-format
msgstr "File di configurazione duplice %s/%s"
#: apt-inst/dirstream.cc:45 apt-inst/dirstream.cc:50 apt-inst/dirstream.cc:53
-#, fuzzy, c-format
+#, c-format
msgid "Failed to write file %s"
-msgstr "Scrittura del file %s fallita"
+msgstr "Impossibile scrivere il file %s"
#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
#, c-format
msgstr "Impossibile smontare il CD-ROM in %s, potrebbe essere ancora in uso."
#: methods/cdrom.cc:169
-#, fuzzy
msgid "Disk not found."
-msgstr "File non trovato"
+msgstr "Disco non trovato"
#: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
msgid "File not found"
#: methods/gpgv.cc:92
msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
msgstr ""
+"E: Lista argomento da Acquire::gpgv::Options troppo lunga. Uscita in corso."
#: methods/gpgv.cc:191
msgid ""
"Internal error: Good signature, but could not determine key fingerprint?!"
msgstr ""
+"Errore interno: Firma corretta, ma non è stato possibile determinare il "
+"fingerprint della chiave?!"
#: methods/gpgv.cc:196
msgid "At least one invalid signature was encountered."
-msgstr ""
+msgstr "Almeno una firma non valida è stata trovata."
#. FIXME String concatenation considered harmful.
#: methods/gpgv.cc:201
-#, fuzzy
msgid "Could not execute "
-msgstr "Impossibile ottenere il lock %s"
+msgstr "Impossibile eseguire "
#: methods/gpgv.cc:202
msgid " to verify signature (is gnupg installed?)"
-msgstr ""
+msgstr " per verificare la firma (gnugp è installato?)"
#: methods/gpgv.cc:206
msgid "Unknown error executing gpgv"
-msgstr ""
+msgstr "Errore sconosciuto durante l'esecuzione di gpgv"
#: methods/gpgv.cc:237
-#, fuzzy
msgid "The following signatures were invalid:\n"
-msgstr "I seguenti pacchetti verranno inoltre installati:"
+msgstr "Le seguenti firme non erano valide:\n"
#: methods/gpgv.cc:244
msgid ""
"The following signatures couldn't be verified because the public key is not "
"available:\n"
msgstr ""
+"Le seguenti firme non sono state verificate perchè la chiave pubblica non è "
+"disponibile:\n"
#: methods/gzip.cc:57
#, c-format
#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
-msgstr ""
+msgstr "Scaricamento del file %li di %li (%s rimanente)"
#: apt-pkg/acquire-worker.cc:113
#, c-format
msgstr "Il metodo %s non è partito correttamente"
#: apt-pkg/acquire-worker.cc:377
-#, fuzzy, c-format
+#, c-format
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
msgstr ""
-"Cambio disco: Inserire il disco chiamato\n"
-" '%s'\n"
-"nel dispositivo '%s' e premere invio\n"
+"Per favore inserire il disco chiamato '%s' nel dispositivo '%s' e premere "
+"invio."
#: apt-pkg/init.cc:119
#, c-format
msgstr "Scritti %i record con %i file mancanti e %i file senza match\n"
#: apt-pkg/deb/dpkgpm.cc:358
-#, fuzzy, c-format
+#, c-format
msgid "Preparing %s"
-msgstr "Apertura di %s in corso"
+msgstr "Preparazione di %s in corso"
#: apt-pkg/deb/dpkgpm.cc:359
-#, fuzzy, c-format
+#, c-format
msgid "Unpacking %s"
-msgstr "Apertura di %s in corso"
+msgstr "Scompattamento di %s in corso"
#: apt-pkg/deb/dpkgpm.cc:364
-#, fuzzy, c-format
+#, c-format
msgid "Preparing to configure %s"
-msgstr "Apertura del file di configurazione %s in corso"
+msgstr "Preparazione alla configurazione di %s in corso"
#: apt-pkg/deb/dpkgpm.cc:365
-#, fuzzy, c-format
+#, c-format
msgid "Configuring %s"
-msgstr "Connessione a %s in corso"
+msgstr "Configurazione di %s in corso"
#: apt-pkg/deb/dpkgpm.cc:366
-#, fuzzy, c-format
+#, c-format
msgid "Installed %s"
-msgstr " Installato: "
+msgstr "%s Installato"
#: apt-pkg/deb/dpkgpm.cc:371
#, c-format
msgid "Preparing for removal of %s"
-msgstr ""
+msgstr "Preparazione per la rimozione di %s in corso"
#: apt-pkg/deb/dpkgpm.cc:372
-#, fuzzy, c-format
+#, c-format
msgid "Removing %s"
-msgstr "Apertura di %s in corso"
+msgstr "Rimozione di %s in corso"
#: apt-pkg/deb/dpkgpm.cc:373
-#, fuzzy, c-format
+#, c-format
msgid "Removed %s"
-msgstr "Raccomanda"
+msgstr "%s rimosso"
#: apt-pkg/deb/dpkgpm.cc:378
#, c-format
msgid "Preparing for remove with config %s"
-msgstr ""
+msgstr "Preparazione per la rimozione con la configurazione %s in corso"
#: apt-pkg/deb/dpkgpm.cc:379
#, c-format
msgid "Removed with config %s"
-msgstr ""
+msgstr "Rimosso con la configurazione %s"
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
#~ msgstr "-> '"
#~ msgid "Followed conf file from "
-#~ msgstr "Si Ã\83Â\83Ã\85¡ seguito il file di configurazione da "
+#~ msgstr "Si Ã\83Â\83Ã\82Â\83Ã\83Â\85Ã\82¡ seguito il file di configurazione da "
#~ msgid " to "
#~ msgstr " a "
#~ msgid ""
#~ "Unable to locate any package files, perhaps this is not a Debian Disc"
-#~ msgstr "Impossibile trovare file di pacchetti, forse questo non Ã\83Â\83Ã\85¡ un disco Debian"
+#~ msgstr "Impossibile trovare file di pacchetti, forse questo non Ã\83Â\83Ã\82Â\83Ã\83Â\85Ã\82¡ un disco Debian"
#~ msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
#~ msgstr "Si prega di dare un nome a questo disco, tipo 'Debian 2.1r1 Disk 1'"
#~ msgstr ""
#~ "Utilizzo: apt-cdrom [opzioni] comando\n"
#~ "\n"
-#~ "apt-cdrom Ã\83Â\83Ã\85¡ un tool per aggiungere CD-ROM alla lista sorgenti di apt. Il\n"
+#~ "apt-cdrom Ã\83Â\83Ã\82Â\83Ã\83Â\85Ã\82¡ un tool per aggiungere CD-ROM alla lista sorgenti di apt. Il\n"
#~ "mount point del CDROM e l'informazione della periferica sono presi da apt."
#~ "conf\n"
#~ "e /etc/fstab.\n"
#~ "\n"
#~ "Comandi:\n"
#~ " add - Aggiunge un CDROM\n"
-#~ " ident - riporta l'identitÃ\83Â di un CDROM\n"
+#~ " ident - riporta l'identitÃ\83Â\83Ã\82Â\83Ã\83Â\82Ã\82Â di un CDROM\n"
#~ "\n"
#~ "Opzioni:\n"
#~ " -h Questo help\n"
#~ " -d Mount point del CDROM\n"
#~ " -r Rinomina un CDROM riconosciuto\n"
#~ " -m Nessun montaggio\n"
-#~ " -f ModalitÃ\83Â veloce, non controlla i file dei pacchetti\n"
-#~ " -a Scansione in modalitÃ\83Â accurata\n"
+#~ " -f ModalitÃ\83Â\83Ã\82Â\83Ã\83Â\82Ã\82Â veloce, non controlla i file dei pacchetti\n"
+#~ " -a Scansione in modalitÃ\83Â\83Ã\82Â\83Ã\83Â\82Ã\82Â accurata\n"
#~ " -c=? Legge come configurazione il file specificato\n"
#~ " -o=? Imposta un'opzione di configurazione, es -o dir::cache=/tmp\n"
#~ "Vedere fstab(5)\n"
#~ " -s=? file override per i sorgenti.\n"
#~ " -q silenzioso\n"
#~ " -d=? Seleziona il database opzionale per la cache\n"
-#~ " -no-delink Abilita la modalitÃ\83Â di debug per il delink\n"
+#~ " -no-delink Abilita la modalitÃ\83Â\83Ã\82Â\83Ã\83Â\82Ã\82Â di debug per il delink\n"
#~ " -contents Generazione file contents di controllo\n"
#~ " -c=? Legge come configurazione il file specificato\n"
#~ " -o=? Imposta un'opzione di configurazione\n"
#~ msgstr " non "
#~ msgid "DSC file '%s' is too large!"
-#~ msgstr "il file DSC '%s' Ã\83Â\83Ã\85¡ troppo largo!"
+#~ msgstr "il file DSC '%s' Ã\83Â\83Ã\82Â\83Ã\83Â\85Ã\82¡ troppo largo!"
#~ msgid "Could not find a record in the DSC '%s'"
#~ msgstr "Impossibile trovare un campo nel DSC '%s'"
-# Advanced Package Tool - APT message translation catalog\r
-# Swedish messages\r
-# Peter Karlsson <peterk@debian.org>, 2002-2005.\r
-# Based on Danish messages\r
-# Claus Hindsgaul <claus_h@image.dk>, 2002.\r
-# \r
+# Advanced Package Tool - APT message translation catalog
+# Swedish messages
+# Peter Karlsson <peterk@debian.org>, 2002-2005.
+# Based on Danish messages
+# Claus Hindsgaul <claus_h@image.dk>, 2002.
+#
msgid ""
msgstr ""
"Project-Id-Version: apt 0.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-22 23:07+0200\n"
-"PO-Revision-Date: 2005-01-15 15:30+0100\n"
-"Last-Translator: Peter Karlsson <peterk@debian.org>\n"
+"PO-Revision-Date: 2005-10-09 09:41+0200\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <sv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: 8bit"
#: cmdline/apt-cache.cc:135
#, c-format
msgid "Cache is out of sync, can't x-ref a package file"
msgstr "Cachen är ur synk, kan inte korsreferera en paketfil"
-# Prioritet följt av URI\r
+# Prioritet följt av URI
#: cmdline/apt-cache.cc:1470
#, c-format
msgid "%4i %s\n"
msgstr "Fel vid behaldning av innehållet %s"
#: ftparchive/apt-ftparchive.cc:556
-#, fuzzy
msgid ""
"Usage: apt-ftparchive [options] command\n"
"Commands: packages binarypath [overridefile [pathprefix]]\n"
" -o=? Set an arbitrary configuration option"
msgstr ""
"Användning: apt-ftparchive [flaggor] kommando\n"
-"Kommandon: packages binärsökväg [åsidosättningsfill [sökvägsprefix]]\n"
+"Kommandon: packages binärsökväg [åsidosättningsfil [sökvägsprefix]]\n"
" sources källsökväg [åsidosättningsfil [sökvägsprefix]]\n"
" contents sökväg\n"
" release sökväg\n"
"\n"
"Flaggor:\n"
" -h Denna hjälptext\n"
-" --md5 Styr generering av MD5\n"
+" --md5 Kontrollera generering av MD5\n"
" -s=? Källkods-override-fil\n"
" -q Tyst\n"
" -d=? Väljer den valfria cachedatabasen\n"
msgid "Unable to open DB file %s: %s"
msgstr "Kunde inte öppna DB-filen %s: %s"
-# Felmeddelande för misslyckad chdir\r
+# Felmeddelande för misslyckad chdir
#: ftparchive/cachedb.cc:114
#, c-format
msgid "File date has changed %s"
msgid "Failed to resolve %s"
msgstr "Misslyckades att slå upp %s"
-# ???\r
+# ???
#: ftparchive/writer.cc:163
msgid "Tree walking failed"
msgstr "Trävandring misslyckades"
msgid "Failed to stat %s"
msgstr "Misslyckades att ta status på %s"
-# Fält vid namn "Package"\r
+# Fält vid namn "Package"
#: ftparchive/writer.cc:386
msgid "Archive had no package field"
msgstr "Arkivet har inget package-fält"
msgid " %s has no override entry\n"
msgstr " %s har ingen post i override-filen\n"
-# parametrar: paket, ny, gammal\r
+# parametrar: paket, ny, gammal
#: ftparchive/writer.cc:437 ftparchive/writer.cc:688
#, c-format
msgid " %s maintainer is %s not %s\n"
msgid "Unable to open %s"
msgstr "Kunde inte öppna %s"
-# parametrar: filnamn, radnummer\r
+# parametrar: filnamn, radnummer
#: ftparchive/override.cc:64 ftparchive/override.cc:170
#, c-format
msgid "Malformed override %s line %lu #1"
msgid "Unknown compression algorithm '%s'"
msgstr "Okänd komprimeringsalgoritm \"%s\""
-# ???\r
+# ???
#: ftparchive/multicompress.cc:105
#, c-format
msgid "Compressed output %s needs a compression set"
msgstr "%s (på grund av %s) "
#: cmdline/apt-get.cc:544
-#, fuzzy
msgid ""
"WARNING: The following essential packages will be removed.\n"
"This should NOT be done unless you know exactly what you are doing!"
msgstr ""
"VARNING: Följande systemkritiska paket kommer att tas bort\n"
-"Detta bör INTE göras såvida du inte vet precis vad du gör!"
+"Detta bör INTE göras såvida du inte vet exakt vad du gör!"
#: cmdline/apt-get.cc:575
#, c-format
#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
-msgstr ""
+msgstr "Authentiseringsvarning överkörd.\n"
#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
#: cmdline/apt-get.cc:753
msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr ""
+msgstr "Internt fel. InstallPackages kallades upp med brutna paket!"
#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr "Paket måste tas bort men \"Remove\" är inaktiverat."
#: cmdline/apt-get.cc:773
-#, fuzzy
msgid "Internal error, Ordering didn't finish"
-msgstr "Internt fel när en omdirigering skulle läggas till"
+msgstr "Internt fel. Sorteringen färdigställdes inte"
#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
#: cmdline/apt-get.cc:814
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
-msgstr ""
+msgstr "Konstigt.. storlekarna stämde inte, skicka e-post till apt@packages.debian.org"
#: cmdline/apt-get.cc:819
#, c-format
msgstr "Efter uppackning kommer %sB frigöras på disken.\n"
#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927
-#, fuzzy, c-format
+#, c-format
msgid "Couldn't determine free space in %s"
-msgstr "Du har inte tillräckligt ledigt utrymme i %s"
+msgstr "Kunde inte läsa av ledigt utrymme i %s"
#: cmdline/apt-get.cc:847
#, c-format
msgstr "Ja, gör som jag säger!"
#: cmdline/apt-get.cc:866
-#, fuzzy, c-format
+#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
"To continue type in the phrase '%s'\n"
" ?] "
msgstr ""
"Du är på väg att göra något som kan vara skadligt\n"
-"Skriv frasen \"%s\" för att fortsätta\n"
+"Skriv frasen '%s' för att fortsätta\n"
" ?] "
-# Visas då man svarar nej\r
+# Visas då man svarar nej
#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891
msgid "Abort."
msgstr "Avbryter."
msgstr "Färdig"
#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
-#, fuzzy
msgid "Internal error, problem resolver broke stuff"
-msgstr "Internt fel, AllUpgrade förstörde något"
+msgstr "Internt fel, problemlösaren bröt sönder saker"
#: cmdline/apt-get.cc:1856
msgid "Must specify at least one package to fetch source for"
#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
+msgstr "Kontrollera om paketet 'dpkg-dev' är installerat.\n"
#: cmdline/apt-get.cc:2033
#, c-format
"för mer information och flaggor.\n"
" Denna APT har Speciella Ko-Krafter.\n"
-# Måste vara tre bokstäver(?)\r
-# "Hit" = aktuell version är fortfarande giltig\r
+# Måste vara tre bokstäver(?)
+# "Hit" = aktuell version är fortfarande giltig
#: cmdline/acqprogress.cc:55
msgid "Hit "
msgstr "Bra "
-# "Get:" = hämtar ny version\r
+# "Get:" = hämtar ny version
#: cmdline/acqprogress.cc:79
msgid "Get:"
msgstr "Läs:"
-# "Ign" = hoppar över\r
+# "Ign" = hoppar över
#: cmdline/acqprogress.cc:110
msgid "Ign "
msgstr "Ign "
-# "Err" = fel vid hämtning\r
+# "Err" = fel vid hämtning
#: cmdline/acqprogress.cc:114
msgid "Err "
msgstr "Fel "
msgid "Press enter to continue."
msgstr "Tryck Enter för att fortsätta."
-# Note to translators: The following four messages belong together. It doesn't\r
-# matter where sentences start, but it has to fit in just these four lines, and\r
-# at only 80 characters per line, if possible.\r
+# Note to translators: The following four messages belong together. It doesn't
+# matter where sentences start, but it has to fit in just these four lines, and
+# at only 80 characters per line, if possible.
#: dselect/install:100
msgid "Some errors occurred while unpacking. I'm going to configure the"
msgstr "Fel uppstod vid uppackning. Jag kommer ställa in de paket som"
msgid "Failed to read the archive headers"
msgstr "Misslyckades att läsa arkivhuvuden"
-# noden har inte någon länk till nästa paket\r
+# noden har inte någon länk till nästa paket
#: apt-inst/filelist.cc:384
msgid "DropNode called on still linked node"
msgstr "DropNode anropat på olänkad nod"
msgstr "Duplicerad konfigurationsfil %s/%s"
#: apt-inst/dirstream.cc:45 apt-inst/dirstream.cc:50 apt-inst/dirstream.cc:53
-#, fuzzy, c-format
+#, c-format
msgid "Failed to write file %s"
msgstr "Misslyckades att skriva filen %s"
msgid "The path is too long"
msgstr "Sökvägen är för lång"
-# ???\r
+# ???
#: apt-inst/extract.cc:417
#, c-format
msgid "Overwrite package match with no version for %s"
msgid "Reading package lists"
msgstr "Läser paketlistor"
-# Felmeddelande för misslyckad chdir\r
+# Felmeddelande för misslyckad chdir
#: apt-inst/deb/dpkgdb.cc:180
#, c-format
msgid "Failed to change to the admin dir %sinfo"
msgid "This is not a valid DEB archive, it has no '%s' or '%s' member"
msgstr "Detta är inte ett giltigt DEB-arkiv, både \"%s\" och \"%s\" saknas"
-# chdir\r
+# chdir
#: apt-inst/deb/debfile.cc:112
#, c-format
msgid "Couldn't change to %s"
msgstr "Kunde inte avmontera cd-rom:en i %s, den kanske fortfarande används."
#: methods/cdrom.cc:169
-#, fuzzy
msgid "Disk not found."
-msgstr "Filen ej funnen"
+msgstr "Disk ej funnen."
#: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
msgid "File not found"
msgid "Data transfer failed, server said '%s'"
msgstr "Dataöverföring misslyckades, servern sade \"%s\""
-# Statusmeddelande, byter från substantiv till verb\r
+# Statusmeddelande, byter från substantiv till verb
#. Get the files information
#: methods/ftp.cc:997
msgid "Query"
msgid "Unable to invoke "
msgstr "Kunde inte starta "
-# Felmeddelande för misslyckad chdir\r
+# Felmeddelande för misslyckad chdir
#: methods/connect.cc:64
#, c-format
msgid "Connecting to %s (%s)"
msgid "[IP: %s %s]"
msgstr "[IP: %s %s]"
-# [f]amilj, [t]yp, [p]rotokoll\r
+# [f]amilj, [t]yp, [p]rotokoll
#: methods/connect.cc:80
#, c-format
msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
msgid "Temporary failure resolving '%s'"
msgstr "Temporärt fel vid uppslagning av \"%s\""
-# Okänd felkod; %i = koden\r
+# Okänd felkod; %i = koden
#: methods/connect.cc:174
#, c-format
msgid "Something wicked happened resolving '%s:%s' (%i)"
#: methods/gpgv.cc:92
msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr ""
+msgstr "E: Argumentslistan från Acquire::gpgv::Options för lång. Avslutar."
#: methods/gpgv.cc:191
msgid ""
"Internal error: Good signature, but could not determine key fingerprint?!"
msgstr ""
+"Internt fel: Korrekt signatur men kunde inte hitta nyckelns fingeravtryck?!"
#: methods/gpgv.cc:196
msgid "At least one invalid signature was encountered."
-msgstr ""
+msgstr "Åtminstone en giltig signatur träffades på."
#. FIXME String concatenation considered harmful.
#: methods/gpgv.cc:201
-#, fuzzy
msgid "Could not execute "
-msgstr "Kunde inte erhålla låset %s"
+msgstr "Kunde inte exekvera "
#: methods/gpgv.cc:202
msgid " to verify signature (is gnupg installed?)"
-msgstr ""
+msgstr " för att verifiera signature (är gnupg installerad?)"
#: methods/gpgv.cc:206
msgid "Unknown error executing gpgv"
-msgstr ""
+msgstr "Okänt fel vid exekvering av gpgv"
#: methods/gpgv.cc:237
-#, fuzzy
msgid "The following signatures were invalid:\n"
-msgstr "Följande ytterligare paket kommer att installeras:"
+msgstr "Följande signaturer är ogiltiga:\n"
#: methods/gpgv.cc:244
msgid ""
"The following signatures couldn't be verified because the public key is not "
"available:\n"
msgstr ""
+"Följande signaturer kunde inte verifieras för att den publika nyckeln inte är tillgänglig:\n"
#: methods/gzip.cc:57
#, c-format
msgid "Couldn't open pipe for %s"
msgstr "Kunde inte öppna rör för %s"
-# %s = programnamn\r
+# %s = programnamn
#: methods/gzip.cc:102
#, c-format
msgid "Read error from %s process"
msgid "Unable to stat the mount point %s"
msgstr "Kunde inte ta status på monteringspunkt %s."
-# Felmeddelande för misslyckad chdir\r
+# Felmeddelande för misslyckad chdir
#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:423 apt-pkg/clean.cc:44
#, c-format
msgid "Unable to change to %s"
msgid "Problem syncing the file"
msgstr "Problem med att synka filen"
-# Felmeddelande\r
+# Felmeddelande
#: apt-pkg/pkgcache.cc:126
msgid "Empty package cache"
msgstr "Paketcachen är tom"
msgid "Recommends"
msgstr "Rekommenderar"
-# "Konfliktar"?\r
+# "Konfliktar"?
#: apt-pkg/pkgcache.cc:219
msgid "Conflicts"
msgstr "I konflikt med"
msgid "Replaces"
msgstr "Ersätter"
-# "Föråldrar"?\r
+# "Föråldrar"?
#: apt-pkg/pkgcache.cc:220
msgid "Obsoletes"
msgstr "Gör föråldrad"
#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
-msgstr ""
+msgstr "Laddar ner fil %li av %li (%s återstår)"
#: apt-pkg/acquire-worker.cc:113
#, c-format
msgstr "Metoden %s startade inte korrekt"
#: apt-pkg/acquire-worker.cc:377
-#, fuzzy, c-format
+#, c-format
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
-msgstr ""
-"Mediabyte: Sätt i disken med etiketten\n"
-" \"%s\"\n"
-"i enhet \"%s\" och tryck Enter\n"
+msgstr "Mata in disken med etiketten '%s' i enheten '%s' och tryck Enter."
#: apt-pkg/init.cc:119
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr "Paketsystemet \"%s\" stöds inte"
-# \r
+#
#: apt-pkg/init.cc:135
msgid "Unable to determine a suitable packaging system type"
msgstr "Kunde inte avgöra en lämpligt paketsystemstyp"
msgid "You may want to run apt-get update to correct these problems"
msgstr "Du kan möjligen rätta problemet genom att köra \"apt-get update\""
-# "Package" är en sträng i inställningsfilen\r
+# "Package" är en sträng i inställningsfilen
#: apt-pkg/policy.cc:269
msgid "Invalid record in the preferences file, no Package header"
msgstr "Ogiltig post i inställningsfilen, \"Package\"-huvud saknas"
msgid "Cache has an incompatible versioning system"
msgstr "Cachen har ett inkompatibelt versionssystem"
-# NewPackage etc. är funktionsnamn\r
+# NewPackage etc. är funktionsnamn
#: apt-pkg/pkgcachegen.cc:117
#, c-format
msgid "Error occurred while processing %s (NewPackage)"
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr "Grattis, du överskred antalet beroenden denna APT kan hantera."
-# NewPackage etc. är funktionsnamn\r
+# NewPackage etc. är funktionsnamn
#: apt-pkg/pkgcachegen.cc:241
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr "Skrev %i poster med %i saknade filer och %i filer som inte stämmer\n"
#: apt-pkg/deb/dpkgpm.cc:358
-#, fuzzy, c-format
+#, c-format
msgid "Preparing %s"
-msgstr "Öppnar %s"
+msgstr "Förbereder %s"
#: apt-pkg/deb/dpkgpm.cc:359
-#, fuzzy, c-format
+#, c-format
msgid "Unpacking %s"
-msgstr "Öppnar %s"
+msgstr "Packar upp %s"
#: apt-pkg/deb/dpkgpm.cc:364
-#, fuzzy, c-format
+#, c-format
msgid "Preparing to configure %s"
-msgstr "Öppnar konfigurationsfil %s"
+msgstr "Förbereder konfigurering av %s"
#: apt-pkg/deb/dpkgpm.cc:365
-#, fuzzy, c-format
+#, c-format
msgid "Configuring %s"
-msgstr "Ansluter till %s"
+msgstr "Konfigurerar %s"
#: apt-pkg/deb/dpkgpm.cc:366
-#, fuzzy, c-format
+#, c-format
msgid "Installed %s"
-msgstr " Installerad: "
+msgstr "Installerade %s"
#: apt-pkg/deb/dpkgpm.cc:371
#, c-format
msgid "Preparing for removal of %s"
-msgstr ""
+msgstr "Förbereder för borttagning av %s"
#: apt-pkg/deb/dpkgpm.cc:372
-#, fuzzy, c-format
+#, c-format
msgid "Removing %s"
-msgstr "Öppnar %s"
+msgstr "Tar bort %s"
#: apt-pkg/deb/dpkgpm.cc:373
-#, fuzzy, c-format
+#, c-format
msgid "Removed %s"
-msgstr "Rekommenderar"
+msgstr "Tog bort %s"
#: apt-pkg/deb/dpkgpm.cc:378
#, c-format
msgid "Preparing for remove with config %s"
-msgstr ""
+msgstr "Förbereder för borttagning med konfiguration %s"
#: apt-pkg/deb/dpkgpm.cc:379
#, c-format
msgid "Removed with config %s"
-msgstr ""
+msgstr "Borttagen med konfiguration %s"
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr "Förbindelsen stängdes i förtid"
#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
-#~ msgstr "Okänt leverantörs-id \"%s\" på rad %u i källistan %s"
+#~ msgstr "Okänt leverantörs-id \"%s\" på rad %u i källistan %s"
#~ msgid ""
#~ "Some broken packages were found while trying to process build-"
#~ "dependencies.\n"
#~ "You might want to run `apt-get -f install' to correct these."
#~ msgstr ""
-#~ "Trasiga paket hittades när byggberoenden behandlades. Du kan möjligen\n"
-#~ "rätta detta genom att köra \"apt-get -f install\"."
+#~ "Trasiga paket hittades när byggberoenden behandlades. Du kan möjligen\n"
+#~ "rätta detta genom att köra \"apt-get -f install\"."
#~ msgid "Sorry, you don't have enough free space in %s to hold all the .debs."
#~ msgstr ""
-#~ "Beklagar, men du har inte tillräckligt ledigt utrymme på %s för att lagra "
-#~ "alla .deb-filerna."
+#~ "Beklagar, men du har inte tillräckligt ledigt utrymme på %s för att "
+#~ "lagra alla .deb-filerna."